class polyoli { constructor(name) { this.path = []; this.graphic = null; this.name = name; this.alternativGraphic = null; } closeRing() { this.path.push(this.path[0]); } } var parser, xmlDoc, PolyArray; var XMLFile = null; var wallnumber = 0; var PolygonObj = []; var refPoint = { y: 493081, x: 5878329, }; parser = new DOMParser(); var graphicLayer = null; var PolyObjArray = []; var selected = null; var alternativeSymbol = { type: "simple-fill", color: [128, 0, 0, 0.5], outline: { color: [0, 0, 0], width: 1 } }; window.onload = function () { document.getElementById('fileUpload').addEventListener('change', updateFile, false); generateMap(); } function generateMap() { require([ "esri/Map", "esri/views/SceneView", "esri/layers/TileLayer", "esri/layers/SceneLayer", "esri/layers/GraphicsLayer", "dojo/domReady!", ], function ( Map, SceneView, TileLayer, SceneLayer, GraphicsLayer, ) { map = new Map({ // basemap: "topo" }); view = new SceneView({ container: "mapDiv", map: map, scale: 1000, camera: { // autocasts as new Camera() position: { // autocasts as new Point() x: 8.896638, y: 53.054441, z: 40 } } }); tile = new TileLayer({ url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Bremen/Hemelingen_TIF_WebMerc/MapServer", }) feature = new SceneLayer({ url: "http://excgeo21.sl.defence-elec.de/arcgis/rest/services/Hosted/BT56_rev576/SceneServer", }); map.add(feature); map.add(tile); graphicLayer = new GraphicsLayer(); map.add(graphicLayer); view.on("click", eventHandler); function eventHandler(event) { view.hitTest(event).then(getGraphics); function getGraphics(response) { selected = response.results[0].graphic.__accessor__.store._values.attributes.name; } }; view.popup.on("trigger-action", function (event) { if (event.action.id === "highlight") { PolyObjArray.forEach(polyObj => { if (polyObj.name == selected) { var newGraphic = polyObj.graphic.clone(); newGraphic.symbol = alternativeSymbol; graphicLayer.remove(polyObj.graphic); polyObj.alternativGraphic = newGraphic; graphicLayer.add(polyObj.alternativGraphic); } }); } }); }); } function updateFile(event) { event.preventDefault(); XMLFile = event.target.files[0]; parseXML(); } function parseXML() { var file = XMLFile; var reader = new FileReader(); reader.onload = function (event) { readXML = event.target.result; xmlDoc = parser.parseFromString(readXML, "application/xml"); } reader.readAsText(file); createModel(); } function createModel() { require([ "esri/geometry/projection", ], function ( projection, ) { projection.load().then(function () { tile.load().then(function () { PolyArray = Array.from(xmlDoc.getElementsByTagName("OuterWallAreaElement")); PolyArray.forEach(polygon => { var polyObj = new polyoli(wallnumber); var vertexes = Array.from(polygon.children); for (var x = 0; x < vertexes.length; x++) { var pp = createPathPoint(Array.from(vertexes[x].children)); polyObj.path.push(pp); } wallnumber++; polyObj.closeRing(); var graphic = createGraphic(polyObj); polyObj.graphic = graphic; PolyObjArray.push(polyObj); }); placeAndCreateToggles(); XMLFile = null; PolyArray = null; }) }) }) } function placeAndCreateToggles() { var counter = 0; var wallDiv = document.getElementById("wallToggle"); var checkboxes = null; checkboxes = "
${wall.name} | `; counter++; }); checkboxes += " |