From ed663bbf6d28c364a0db650efc1cb00e7a6b20cd Mon Sep 17 00:00:00 2001 From: Mm24 Date: Sun, 6 Jun 2021 23:09:04 +0200 Subject: [PATCH 01/46] position visualization on map --- src/js/viewer/ViewerMapAPI-Point.js | 177 ++++++++++++++++++++++++++++ 1 file changed, 177 insertions(+) create mode 100644 src/js/viewer/ViewerMapAPI-Point.js diff --git a/src/js/viewer/ViewerMapAPI-Point.js b/src/js/viewer/ViewerMapAPI-Point.js new file mode 100644 index 0000000..aa80358 --- /dev/null +++ b/src/js/viewer/ViewerMapAPI-Point.js @@ -0,0 +1,177 @@ +"use strict"; + +import { ViewerAPI } from "./ViewerAPI.js"; + +// Map (2D) Viewer API + +// Specific API for the Map View +export class ViewerMapAPI { + + constructor(viewerAPI) { + this.viewerImageAPI = viewerAPI.viewerImageAPI; + this.viewerFloorAPI = viewerAPI.viewerFloorAPI; + viewerAPI.viewerFloorAPI.viewerMapAPI = this; // set reference to mapAPI in floorAPI + + this.layers; + this.scene = new THREE.Scene(); // scene THREE.Scene scene overlayed over the map (2D) view + this.camera = new THREE.OrthographicCamera( + - window.innerWidth / 2, // frustum left plane + window.innerWidth / 2, // frustum right plane + window.innerHeight / 2, // frustum top plane + - window.innerHeight / 2, // frustum bottom plane + 1, // frustum near plane + 10); // frustum far plane + this.camera.position.z = 2; // need to be in [near + 1, far + 1] to be displayed + + this.spriteGroup = new THREE.Group(); //create an sprite group + this.mapScalingFactor = 0.2; + + // const baseURL = "https://bora.bup-nbg.de/amos2floors/"; + const baseURL = viewerAPI.baseURL; + + const mapPicturePath = baseURL + this.viewerFloorAPI.currentFloor.mapData.name + ".png"; + + this.map = displayMap(mapPicturePath); + this.redraw(); + this.baseURL = baseURL; + //this.spriteGroup.position.set(window.innerWidth / 2, -window.innerHeight / 2, 0); // bottom right + //this.scene.add(this.spriteGroup); + + } + + // Method: Add an event layer to the map (2D) view. + addLayer(layer) { + this.scene.add(layer); + } + + // Method: remove an event layer to the map (2D) view. + removeLayer(layer) { + // Layer: EventLayer + this.scene.remove(layer); + } + + // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. + redraw() { + // this.spriteGroup.clear(); + + /* remove comment to draw all points on map + let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + + allImages.forEach(image => { + this.addPoint("black", image.mapOffset); + }); + //*/ + //this.map = displayMap( this.baseURL + this.viewerFloorAPI.currentFloor.mapData.name + ".png"); + + this.addPoint("red", this.viewerImageAPI.currentImage.mapOffset ); + //this.addViewingDirection("yellow", this.viewerImageAPI.currentImage.mapOffset); + + } + + + // draws a point in *color* on the map at *offset*, also returns the THREE.Sprite after it is drawn + addPoint(color, offset) { + + var position =[-this.mapScalingFactor * offset[0], this.mapScalingFactor * offset[1]]; + var point_canvas = generateCircularSprite(color); + console.log(offset); + var point = new ol.Overlay({ + element: point_canvas, + positioning: 'center', + stopEvent: false, + offset: [offset], + }); + + // point.setPosition(offset); + //this.map.addOverlay(point); + var circleFeature = new ol.Feature({ + geometry: new ol.geom.Circle([offset], 50), + }); + + circleFeature.setStyle( + new ol.style.Style({ + renderer: point_canvas }) + ); + + var point_layer = new ol.layer.Vector({ + source: new ol.source.Source({ + features: [circleFeature], })}); + + + this.map.addLayer(point_layer); + + /* + var iconFeature = new ol.Feature(new ol.geom.Point([position])); + // Point layer + var point_layer = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: [iconFeature] + })}); + this.map.addLayer(point_layer); + */ + } + + // Method + scale() { + //Get the scale used by the three.js scene overlayed over the map (2D) view. + return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) + } + + +} + +function generateCircularSprite(color) { + var canvas = document.createElement('canvas'); + var radius = 16; + canvas.height = radius*2+1; + canvas.width = radius*2+1; + var context = canvas.getContext('2d'); + var centerX = canvas.width / 2; + var centerY = canvas.height / 2; + + + context.beginPath(); + context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); + context.fillStyle = color; + context.fill(); + return canvas; + +} + + +function displayMap(mapURL){ + + var extent = [0, 0, 512, 512]; + // Projection map image coordinates directly to map coordinates in pixels. + var projection = new ol.proj.Projection({ + code: 'map-image', + units: 'pixels', + extent: extent, + }); + + + var map = new ol.Map({ + controls: ol.control.defaults({rotate: false}), + interactions: ol.interaction.defaults({altShiftDragRotate:false, pinchRotate:false}), + layers: [ + new ol.layer.Image({ + source: new ol.source.ImageStatic({ + //attributions: '© OpenLayers', + url: mapURL, + projection: projection, + imageExtent: extent, + }), + + }) ], + target: 'map', + view: new ol.View({ + projection: projection, + center: new ol.extent.getCenter(extent), + zoom: 0.8, + maxZoom: 4, + }), + }); + + return map; + +} From 62aa4b2e4292c70fbf04096b99b789aaee864e87 Mon Sep 17 00:00:00 2001 From: clairebb1005 Date: Sun, 6 Jun 2021 23:19:18 +0200 Subject: [PATCH 02/46] adding bleck points on testing map, can't show the red point, stange coordinate --- src/css/main.css | 22 ++- src/index.html | 8 + src/js/viewer/ViewerMapAPI.js | 289 +++++++++++++++++++++++++++++++--- 3 files changed, 298 insertions(+), 21 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 13c41ec..814fc1e 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -24,7 +24,7 @@ body { #map{ position: fixed; - bottom: 1%; + bottom: 20%; right: 3%; width: 20%; height:20%; @@ -42,4 +42,24 @@ body { color: #fff; } +.mouse-position-wrapper{ + width:180px; + height:29px; + color:black; + background-color: white; + position:absolute; + right:30%; + bottom:20%; + z-index:999; + } +.mouse-position-wrapper-testmap{ + width:180px; + height:29px; + color:black; + background-color: white; + position:absolute; + right:30%; + bottom:1%; + z-index:999; +} diff --git a/src/index.html b/src/index.html index 70dc1da..88e8070 100644 --- a/src/index.html +++ b/src/index.html @@ -56,6 +56,14 @@ + +
+
+
+ +
+
+
diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 104be46..7a72aa7 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -28,9 +28,14 @@ export class ViewerMapAPI { // create Map and Layers this.map; + this.initDisplayMap(); this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); - + this.features = []; + this.lastVectorLayer; + this.lastFloorID; + this.viewerAPI = viewerAPI; + this.test_current_position(); /* var popup = new ol.Overlay({ @@ -57,29 +62,67 @@ export class ViewerMapAPI { // Layer: EventLayer this.scene.remove(layer); } - + // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - /* - this.spriteGroup.clear(); + + // remove prvious last vector layer + this.map.removeLayer(this.lastVectorLayer); + + // this.spriteGroup.clear(); // remove comment to draw all points on map - // let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - // allImages.forEach(image => { - // this.addPoint("black", image.mapOffset); - // }); - // + allImages.forEach(image => { + // this.addPoint("black", image.mapOffset); + + // add all black points to feature layer + // transform xy to lon lan + var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); + var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); + this.features.push(new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([ + lon, lan + ])) + }) + ) + }); + + + // add current red point to feature layer + // this.addPointOL("red", this.viewerImageAPI.currentImage.mapOffset); - this.location = this.addPoint("red", this.viewerImageAPI.currentImage.mapOffset); - //this.addViewingDirection("yellow", this.viewerImageAPI.currentImage.mapOffset); - */ + // this.location = this.addPoint("red", this.viewerImageAPI.currentImage.mapOffset); + // this.addViewingDirection("yellow", this.viewerImageAPI.currentImage.mapOffset); + + // create the layer for features -> black points + const features = this.features; + + var vectorSource = new ol.source.Vector({ + features + }); + + var vectorLayer = new ol.layer.Vector({ + source: vectorSource, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 3, + fill: new ol.style.Fill({color: 'black'}) + }) + }) + }); + + this.map.addLayer(vectorLayer); + + this.lastFloorID = this.viewerFloorAPI.currentFloorId; + this.lastVectorLayer = vectorLayer; + var floorIndex = this.viewerFloorAPI.currentFloorId; this.updateDisplayMap(floorIndex); } - /* draws a point in *color* on the map at *offset*, also returns the THREE.Sprite after it is drawn addPoint(color, offset) { const texture = new THREE.Texture(generateCircularSprite(color)); @@ -133,8 +176,201 @@ export class ViewerMapAPI { }*/ + test_current_position(){ + + const features = []; + const featureRed= []; + + let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + + // adding black points + allImages.forEach(image => { + + // add all black points to feature layer + // transform xy to lon lan + var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); + var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); + features.push(new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([ + lon, lan + ])) + }) + ) + // console.log(lon,lan) + }); + + //adding red points + var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); + var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); + + featureRed.push(new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([ + redlon, redlan + ])) + })) + + // console.log("red point") + // console.log(redlon,redlan) + + // create the source and layer for balck points + const vectorSource = new ol.source.Vector({ + features + }); + const vectorLayer = new ol.layer.Vector({ + source: vectorSource, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 2, + fill: new ol.style.Fill({color: 'black'}) + }) + }) + }); + + // create the source and layer for red point + const vectorSourceRed = new ol.source.Vector({ + featureRed + }); + const vectorRedLayer = new ol.layer.Vector({ + source: vectorSourceRed, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 3, + fill: new ol.style.Fill({color: 'red'}) + }) + }) + }); + + // create map and add layers + const map = new ol.Map({ + target: 'map', + layers: [ + new ol.layer.Tile({ + source: new ol.source.OSM() + }), + vectorLayer, + vectorRedLayer + ], + view: new ol.View({ + center: ol.proj.fromLonLat([0, 0]), + zoom: 2 + }), + controls: ol.control.defaults().extend([ + new ol.control.FullScreen(), + new ol.control.MousePosition({ + coordinateFormat: ol.coordinate.createStringXY(4), + projection: 'EPSG:4326', // wgs 48 + className: 'custom-mouse-position-testmap', + target: document.getElementById('mouse-position-testmap') + }) + ]) + }); + + } + initDisplayMap(){ + // test create button 1 + + // buttonUp = document.createElement('buttonUp'); + // var handleButtonUp = function (e) {} + // buttonUp.addEventListener('click', handleButtonUp, false); + + // creat elements + // var element = document.createElement("div") + // element.className = 'control'; + // element.id = 'floor'; + // document.getElementById('pano-viewer').appendChild(element); + // element.appendChild(buttonUp); + + // var myControl = new ol.control.Control({ + // className: 'myControl', + // element: element, + // }); + + // test create button 2 + + /* CSS: + #custom_anchor:before { + content:"Cycle"; + left : 10%; + bottom: 20%; + z-index: -50; + } + */ + + // var myControl = new ol.control.Control({ + // className: 'myControl', + // element: document.getElementById('floorOL'), + // }); + + // // online - create buttons example 1 + // var button = document.createElement('button'); + // button.innerHTML = ''; + + // var handleRotateNorth = function(e) { + // map.getView().setRotation(180); + // }; + + // button.addEventListener('click', handleRotateNorth, false); + + // var element = document.createElement('div'); + // element.className = 'rotate-north-ol-control'; + // element.appendChild(button); + + // // online - create button example 2 + // var anchor_element = document.createElement('a'); + // anchor_element.href = '#custom_href'; + // anchor_element.className = 'custom_anchor'; + + // var this_ = this; + // var handleCustomControl = function (e) { + // myControl.customFunction(e); + // }; + + // anchor_element.addEventListener('click', handleCustomControl, false); + // anchor_element.addEventListener('touchstart', handleCustomControl, false); + + // var custom_element = document.createElement('div'); + // custom_element.className = 'myCustomControl ol-unselectable'; + // document.getElementById('pano-viewer').appendChild(custom_element); + // custom_element.appendChild(anchor_element); + + // var myControl = new ol.control.Control({ + // className: 'myControl', + // element: custom_element, + // target: document.getElementById("myCustomControl") + // }); + + // current version of test create button + /* + var button = function() { + var this_ = this; + + ol.control.Control.call(this, { + element: document.getElementById('floorOL'), + }); + }; + + var ol_ext_inherits = function(child,parent) { + child.prototype = Object.create(parent.prototype); + child.prototype.constructor = child; + }; + ol.inherits(button, ol.control.Control); + + // create contorls for map + var controls = ol.control.defaults({ + rotate: false // hide rotation button + //}) + }).extend([ + new button + // myControl + + // new ol.control.Control({ + // element:element + // }) + ]) + */ + var extent = [0, 0, 512, 512]; // Projection map image coordinates directly to map coordinates in pixels. @@ -145,7 +381,6 @@ export class ViewerMapAPI { }); // create map - this.map = new ol.Map({ //new ol.control.OverviewMap({ target: 'map', view: new ol.View({ @@ -154,18 +389,30 @@ export class ViewerMapAPI { zoom: 1, maxZoom: 5, }), + // controls: controls, + controls: ol.control.defaults({ + rotate: false // hide rotation button + }).extend([ + new ol.control.FullScreen(), // create fullScreen button + new ol.control.MousePosition({ // create the function of showing current mouse position + coordinateFormat: ol.coordinate.createStringXY(4), + projection: 'EPSG:4326', // wgs 48 + className: 'custom-mouse-position', + target: document.getElementById('mouse-position') + }) + ]) }); - // create layers for each floors + // create image layers for each floors for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ - this.map.addLayer((new ol.layer.Image({ + this.map.addLayer(new ol.layer.Image({ source: new ol.source.ImageStatic({ //attributions: '© OpenLayers', url: this.baseURL + this.viewerFloorAPI.floors[i].mapData.name + ".png", projection: projection, imageExtent: extent, }) - }))) + })) } } @@ -173,19 +420,21 @@ export class ViewerMapAPI { var group = this.map.getLayerGroup(); var layers = group.getLayers(); - + // set layer visibility layers.forEach(function (layer, i) { if (i == floorIndex){ layer.setVisible(true); - layer.set } else{ layer.setVisible(false); } + if (i == layers.length){ // showing black and red points + layer.setVisible(true); + } }); } - + } /* From 72b8f2a4987f3bddd4a303ed7da8a6d244e98291 Mon Sep 17 00:00:00 2001 From: clairebb1005 Date: Mon, 7 Jun 2021 10:09:18 +0200 Subject: [PATCH 03/46] upload same code to test --- src/js/viewer/ViewerMapAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 7a72aa7..1966446 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -210,7 +210,7 @@ export class ViewerMapAPI { })) // console.log("red point") - // console.log(redlon,redlan) + console.log(redlon,redlan) // create the source and layer for balck points const vectorSource = new ol.source.Vector({ From 59c61c08086f36ef4647c259f04d6bd93b1247c5 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 7 Jun 2021 15:47:00 +0200 Subject: [PATCH 04/46] update the map visualization to work with points --- src/css/main.css | 4 ++-- src/js/viewer/ViewerMapAPI.js | 37 ++++++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 814fc1e..79a40de 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -24,7 +24,7 @@ body { #map{ position: fixed; - bottom: 20%; + bottom: 1%; right: 3%; width: 20%; height:20%; @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:21%; + bottom:2%; right: 3%; color: #fff; } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 1966446..68962fb 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -210,12 +210,13 @@ export class ViewerMapAPI { })) // console.log("red point") - console.log(redlon,redlan) + //console.log(redlon,redlan) // create the source and layer for balck points const vectorSource = new ol.source.Vector({ features }); + const vectorLayer = new ol.layer.Vector({ source: vectorSource, style: new ol.style.Style({ @@ -239,17 +240,18 @@ export class ViewerMapAPI { }) }) }); - + /* // create map and add layers - const map = new ol.Map({ + this map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ - source: new ol.source.OSM() - }), + source: new ol.source.ImageStatic({ + attributions: '', + url: this.mapURL + }),}), vectorLayer, - vectorRedLayer - ], + vectorRedLayer ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 @@ -264,7 +266,7 @@ export class ViewerMapAPI { }) ]) }); - + */ } initDisplayMap(){ @@ -383,24 +385,37 @@ export class ViewerMapAPI { // create map this.map = new ol.Map({ //new ol.control.OverviewMap({ target: 'map', + layers: [ + new ol.layer.Image({ + source: new ol.source.ImageStatic({ + //attributions: '© OpenLayers', + url: this.baseURL + this.viewerFloorAPI.floors[0].mapData.name + ".png", + projection: projection, + imageExtent: extent, + }) + }) + ], view: new ol.View({ projection: projection, center: new ol.extent.getCenter(extent), - zoom: 1, + zoom: 0.5, maxZoom: 5, }), // controls: controls, controls: ol.control.defaults({ rotate: false // hide rotation button }).extend([ - new ol.control.FullScreen(), // create fullScreen button + new ol.control.FullScreen() // create fullScreen button + /*, new ol.control.MousePosition({ // create the function of showing current mouse position coordinateFormat: ol.coordinate.createStringXY(4), projection: 'EPSG:4326', // wgs 48 className: 'custom-mouse-position', target: document.getElementById('mouse-position') }) + */ ]) + }); // create image layers for each floors @@ -420,7 +435,7 @@ export class ViewerMapAPI { var group = this.map.getLayerGroup(); var layers = group.getLayers(); - + this.mapURL = this.baseURL + this.viewerFloorAPI.floors[floorIndex].mapData.name + ".png", // set layer visibility layers.forEach(function (layer, i) { if (i == floorIndex){ From 08fcce61d664ef3b5ffc96205184895559b226e1 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 7 Jun 2021 15:48:36 +0200 Subject: [PATCH 05/46] Revert "update the map visualization to work with points" This reverts commit 59c61c08086f36ef4647c259f04d6bd93b1247c5. --- src/css/main.css | 4 ++-- src/js/viewer/ViewerMapAPI.js | 37 +++++++++++------------------------ 2 files changed, 13 insertions(+), 28 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 79a40de..814fc1e 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -24,7 +24,7 @@ body { #map{ position: fixed; - bottom: 1%; + bottom: 20%; right: 3%; width: 20%; height:20%; @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:2%; + bottom:21%; right: 3%; color: #fff; } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 68962fb..1966446 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -210,13 +210,12 @@ export class ViewerMapAPI { })) // console.log("red point") - //console.log(redlon,redlan) + console.log(redlon,redlan) // create the source and layer for balck points const vectorSource = new ol.source.Vector({ features }); - const vectorLayer = new ol.layer.Vector({ source: vectorSource, style: new ol.style.Style({ @@ -240,18 +239,17 @@ export class ViewerMapAPI { }) }) }); - /* + // create map and add layers - this map = new ol.Map({ + const map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ - source: new ol.source.ImageStatic({ - attributions: '', - url: this.mapURL - }),}), + source: new ol.source.OSM() + }), vectorLayer, - vectorRedLayer ], + vectorRedLayer + ], view: new ol.View({ center: ol.proj.fromLonLat([0, 0]), zoom: 2 @@ -266,7 +264,7 @@ export class ViewerMapAPI { }) ]) }); - */ + } initDisplayMap(){ @@ -385,37 +383,24 @@ export class ViewerMapAPI { // create map this.map = new ol.Map({ //new ol.control.OverviewMap({ target: 'map', - layers: [ - new ol.layer.Image({ - source: new ol.source.ImageStatic({ - //attributions: '© OpenLayers', - url: this.baseURL + this.viewerFloorAPI.floors[0].mapData.name + ".png", - projection: projection, - imageExtent: extent, - }) - }) - ], view: new ol.View({ projection: projection, center: new ol.extent.getCenter(extent), - zoom: 0.5, + zoom: 1, maxZoom: 5, }), // controls: controls, controls: ol.control.defaults({ rotate: false // hide rotation button }).extend([ - new ol.control.FullScreen() // create fullScreen button - /*, + new ol.control.FullScreen(), // create fullScreen button new ol.control.MousePosition({ // create the function of showing current mouse position coordinateFormat: ol.coordinate.createStringXY(4), projection: 'EPSG:4326', // wgs 48 className: 'custom-mouse-position', target: document.getElementById('mouse-position') }) - */ ]) - }); // create image layers for each floors @@ -435,7 +420,7 @@ export class ViewerMapAPI { var group = this.map.getLayerGroup(); var layers = group.getLayers(); - this.mapURL = this.baseURL + this.viewerFloorAPI.floors[floorIndex].mapData.name + ".png", + // set layer visibility layers.forEach(function (layer, i) { if (i == floorIndex){ From 1cde60bf6415ad8e1e04578d26cce982fd707f37 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 7 Jun 2021 19:03:27 +0200 Subject: [PATCH 06/46] update the map visualization to work with points --- src/css/main.css | 26 ++------------------------ src/js/viewer/ViewerMapAPI.js | 4 +++- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 814fc1e..73cfa5d 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -24,7 +24,7 @@ body { #map{ position: fixed; - bottom: 20%; + bottom: 2%; right: 3%; width: 20%; height:20%; @@ -40,26 +40,4 @@ body { bottom:21%; right: 3%; color: #fff; -} - -.mouse-position-wrapper{ - width:180px; - height:29px; - color:black; - background-color: white; - position:absolute; - right:30%; - bottom:20%; - z-index:999; - } - -.mouse-position-wrapper-testmap{ - width:180px; - height:29px; - color:black; - background-color: white; - position:absolute; - right:30%; - bottom:1%; - z-index:999; -} +} \ No newline at end of file diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 1966446..2ec99ea 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -241,6 +241,7 @@ export class ViewerMapAPI { }); // create map and add layers + /* const map = new ol.Map({ target: 'map', layers: [ @@ -264,9 +265,10 @@ export class ViewerMapAPI { }) ]) }); - + */ } + initDisplayMap(){ // test create button 1 From 9f19de7d9edff9dc30039c940c4f21eafdba8faa Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 7 Jun 2021 19:26:36 +0200 Subject: [PATCH 07/46] update the map visualization to work with points --- src/js/viewer/ViewerMapAPI.js | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 2ec99ea..345ee57 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -81,10 +81,12 @@ export class ViewerMapAPI { // transform xy to lon lan var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); + console.log( image.mapOffset[1]) this.features.push(new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([ - lon, lan - ])) + geometry: new ol.geom.Point( + //ol.proj.fromLonLat([ + [lon, lan]) + //])) }) ) }); @@ -107,7 +109,7 @@ export class ViewerMapAPI { source: vectorSource, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 3, + radius: 50, fill: new ol.style.Fill({color: 'black'}) }) }) @@ -200,17 +202,18 @@ export class ViewerMapAPI { }); //adding red points - var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); - var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); + var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; //this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); + var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; //this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); featureRed.push(new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([ + geometry: new ol.geom.Point(//ol.proj.fromLonLat([ redlon, redlan - ])) + //]) + ) })) // console.log("red point") - console.log(redlon,redlan) + console.log(this.viewerImageAPI.currentImage.mapOffset) // create the source and layer for balck points const vectorSource = new ol.source.Vector({ @@ -220,7 +223,7 @@ export class ViewerMapAPI { source: vectorSource, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 2, + radius: 25, fill: new ol.style.Fill({color: 'black'}) }) }) @@ -234,11 +237,12 @@ export class ViewerMapAPI { source: vectorSourceRed, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 3, + radius: 25, fill: new ol.style.Fill({color: 'red'}) }) }) }); + this.map.addLayer(vectorRedLayer); // create map and add layers /* @@ -431,9 +435,9 @@ export class ViewerMapAPI { else{ layer.setVisible(false); } - if (i == layers.length){ // showing black and red points - layer.setVisible(true); - } + //if (i == layers.length){ // showing black and red points + //layer.setVisible(true); + // } }); } From 4bc1cccc538ff5d8efe9853eb1e503649b2082ac Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 7 Jun 2021 19:34:24 +0200 Subject: [PATCH 08/46] update the map visualization to work with points as Icon --- src/js/viewer/ViewerMapAPI.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 345ee57..52631dc 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -238,11 +238,32 @@ export class ViewerMapAPI { style: new ol.style.Style({ image: new ol.style.Circle({ radius: 25, - fill: new ol.style.Fill({color: 'red'}) + fill: new ol.style.Fill({color: 'black'}) + }) }) + }); + + var iconFeature = new ol.Feature({ + geometry: new ol.geom.Point([redlon, redlan]) + }); + + var iconStyle = new ol.style.Style({ + image: new ol.style.Icon({ + src: 'http://ol3js.org/en/master/examples/data/icon.png' }) }); - this.map.addLayer(vectorRedLayer); + + iconFeature.setStyle(iconStyle); + + var vectorSourceIcon = new ol.source.Vector({ + features: [iconFeature] + }); + + var vectorLayerIcon = new ol.layer.Vector({ + source: vectorSourceIcon + }); + + this.map.addLayer(vectorLayerIcon); // create map and add layers /* From ab44f093d93087db1914d4a7f913fae04058cfa5 Mon Sep 17 00:00:00 2001 From: clairebb1005 Date: Mon, 7 Jun 2021 22:33:39 +0200 Subject: [PATCH 09/46] show black and red point on the map --- src/js/viewer/ViewerMapAPI.js | 279 ++++++++++++++++------------------ 1 file changed, 134 insertions(+), 145 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 52631dc..da48622 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -66,50 +66,42 @@ export class ViewerMapAPI { // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - // remove prvious last vector layer - this.map.removeLayer(this.lastVectorLayer); + // // remove prvious last vector layer + // this.map.removeLayer(this.lastVectorLayer); + + // // this.spriteGroup.clear(); + + var features = []; + + var floorIndex = this.viewerFloorAPI.currentFloorId; + this.updateDisplayMap(floorIndex); - // this.spriteGroup.clear(); - // remove comment to draw all points on map let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - + allImages.forEach(image => { - // this.addPoint("black", image.mapOffset); // add all black points to feature layer // transform xy to lon lan - var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); - var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); - console.log( image.mapOffset[1]) - this.features.push(new ol.Feature({ - geometry: new ol.geom.Point( - //ol.proj.fromLonLat([ - [lon, lan]) - //])) + //TODO: adjust the position better. This is a temporary scaling and offset + var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0])*3; + var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1])*3; + features.push(new ol.Feature({ + geometry: new ol.geom.Point([lon+100, lan+1200]), }) ) }); - - - // add current red point to feature layer - // this.addPointOL("red", this.viewerImageAPI.currentImage.mapOffset); - - // this.location = this.addPoint("red", this.viewerImageAPI.currentImage.mapOffset); - // this.addViewingDirection("yellow", this.viewerImageAPI.currentImage.mapOffset); // create the layer for features -> black points - const features = this.features; - var vectorSource = new ol.source.Vector({ - features + features: features }); var vectorLayer = new ol.layer.Vector({ source: vectorSource, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 50, + radius: 3, fill: new ol.style.Fill({color: 'black'}) }) }) @@ -117,11 +109,41 @@ export class ViewerMapAPI { this.map.addLayer(vectorLayer); - this.lastFloorID = this.viewerFloorAPI.currentFloorId; - this.lastVectorLayer = vectorLayer; + + //adding red points + //TODO : adjust red point lon and lan to real one, now using temporary coordinate for testing + + // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; + // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - var floorIndex = this.viewerFloorAPI.currentFloorId; - this.updateDisplayMap(floorIndex); + var redlon = 700; + var redlan = 400; + + var iconFeature = new ol.Feature({ + geometry: new ol.geom.Point([redlon, redlan]), + }); + + var vectorSourceRed = new ol.source.Vector({ + features: [iconFeature] + }); + + var vectorLayerRed = new ol.layer.Vector({ + source: vectorSourceRed, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 3, + fill: new ol.style.Fill({color: 'red'}) + }) + }) + }); + + this.map.addLayer(vectorLayerRed); + + // this.lastFloorID = this.viewerFloorAPI.currentFloorId; + // this.lastVectorLayer = vectorLayer; + + + } @@ -180,117 +202,93 @@ export class ViewerMapAPI { test_current_position(){ - const features = []; - const featureRed= []; + // const features = []; + // const featureRed= []; - let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + // let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - // adding black points - allImages.forEach(image => { - - // add all black points to feature layer - // transform xy to lon lan - var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); - var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); - features.push(new ol.Feature({ - geometry: new ol.geom.Point(ol.proj.fromLonLat([ - lon, lan - ])) - }) - ) - // console.log(lon,lan) - }); + // // adding black points + // allImages.forEach(image => { + + // // add all black points to feature layer + // // transform xy to lon lan + // var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); + // var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); + // features.push(new ol.Feature({ + // geometry: new ol.geom.Point(ol.proj.fromLonLat([ + // lon, lan + // ])) + // }) + // ) + // // console.log(lon,lan) + // }); - //adding red points - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; //this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); - var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; //this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); + // //adding red points + // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); + // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); - featureRed.push(new ol.Feature({ - geometry: new ol.geom.Point(//ol.proj.fromLonLat([ - redlon, redlan - //]) - ) - })) - - // console.log("red point") - console.log(this.viewerImageAPI.currentImage.mapOffset) - // create the source and layer for balck points - const vectorSource = new ol.source.Vector({ - features - }); - const vectorLayer = new ol.layer.Vector({ - source: vectorSource, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 25, - fill: new ol.style.Fill({color: 'black'}) - }) - }) - }); - // create the source and layer for red point - const vectorSourceRed = new ol.source.Vector({ - featureRed - }); - const vectorRedLayer = new ol.layer.Vector({ - source: vectorSourceRed, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 25, - fill: new ol.style.Fill({color: 'black'}) - }) - }) - }); - - var iconFeature = new ol.Feature({ - geometry: new ol.geom.Point([redlon, redlan]) - }); - - var iconStyle = new ol.style.Style({ - image: new ol.style.Icon({ - src: 'http://ol3js.org/en/master/examples/data/icon.png' - }) - }); + // // console.log("red point") + // console.log(redlon,redlan) - iconFeature.setStyle(iconStyle); - - var vectorSourceIcon = new ol.source.Vector({ - features: [iconFeature] - }); - - var vectorLayerIcon = new ol.layer.Vector({ - source: vectorSourceIcon - }); + // // create the source and layer for balck points + // const vectorSource = new ol.source.Vector({ + // features + // }); + // const vectorLayer = new ol.layer.Vector({ + // source: vectorSource, + // style: new ol.style.Style({ + // image: new ol.style.Circle({ + // radius: 2, + // fill: new ol.style.Fill({color: 'black'}) + // }) + // }) + // }); - this.map.addLayer(vectorLayerIcon); + // featureRed.push(new ol.Feature({ + // geometry: new ol.geom.Point(ol.proj.fromLonLat([ + // redlon, redlan + // ])) + // })) + // // create the source and layer for red point + // const vectorSourceRed = new ol.source.Vector({ + // featureRed + // }); + // const vectorRedLayer = new ol.layer.Vector({ + // source: vectorSourceRed, + // style: new ol.style.Style({ + // image: new ol.style.Circle({ + // radius: 3, + // fill: new ol.style.Fill({color: 'red'}) + // }) + // }) + // }); - // create map and add layers - /* - const map = new ol.Map({ - target: 'map', - layers: [ - new ol.layer.Tile({ - source: new ol.source.OSM() - }), - vectorLayer, - vectorRedLayer - ], - view: new ol.View({ - center: ol.proj.fromLonLat([0, 0]), - zoom: 2 - }), - controls: ol.control.defaults().extend([ - new ol.control.FullScreen(), - new ol.control.MousePosition({ - coordinateFormat: ol.coordinate.createStringXY(4), - projection: 'EPSG:4326', // wgs 48 - className: 'custom-mouse-position-testmap', - target: document.getElementById('mouse-position-testmap') - }) - ]) - }); - */ + // // create map and add layers + // const map = new ol.Map({ + // target: 'map', + // layers: [ + // new ol.layer.Tile({ + // source: new ol.source.OSM() + // }), + // vectorLayer, + // vectorRedLayer + // ], + // view: new ol.View({ + // center: ol.proj.fromLonLat([0, 0]), + // zoom: 2 + // }), + // controls: ol.control.defaults().extend([ + // new ol.control.FullScreen(), + // new ol.control.MousePosition({ + // coordinateFormat: ol.coordinate.createStringXY(4), + // projection: 'EPSG:4326', // wgs 48 + // className: 'custom-mouse-position-testmap', + // target: document.getElementById('mouse-position-testmap') + // }) + // ]) + // }); } @@ -398,15 +396,15 @@ export class ViewerMapAPI { ]) */ - var extent = [0, 0, 512, 512]; + var extent = [0, 0, 1024, 968]; // Projection map image coordinates directly to map coordinates in pixels. var projection = new ol.proj.Projection({ - code: 'map-image', + code: 'xkcd-image', units: 'pixels', extent: extent, }); - + // create map this.map = new ol.Map({ //new ol.control.OverviewMap({ target: 'map', @@ -420,13 +418,7 @@ export class ViewerMapAPI { controls: ol.control.defaults({ rotate: false // hide rotation button }).extend([ - new ol.control.FullScreen(), // create fullScreen button - new ol.control.MousePosition({ // create the function of showing current mouse position - coordinateFormat: ol.coordinate.createStringXY(4), - projection: 'EPSG:4326', // wgs 48 - className: 'custom-mouse-position', - target: document.getElementById('mouse-position') - }) + new ol.control.FullScreen() // create fullScreen button ]) }); @@ -456,10 +448,7 @@ export class ViewerMapAPI { else{ layer.setVisible(false); } - //if (i == layers.length){ // showing black and red points - //layer.setVisible(true); - // } - }); + }); } } From 5766a3ec2d867245e46ceb94e94bdf9e3c58cd94 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Tue, 8 Jun 2021 00:55:09 +0200 Subject: [PATCH 10/46] debugging of scaling factors --- src/css/main.css | 8 ++-- src/js/viewer/ViewerMapAPI-Point.js | 4 +- src/js/viewer/ViewerMapAPI.js | 69 ++++------------------------- 3 files changed, 15 insertions(+), 66 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 73cfa5d..de08a55 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -24,8 +24,8 @@ body { #map{ position: fixed; - bottom: 2%; - right: 3%; + bottom: 1%; + right: 2%; width: 20%; height:20%; color: #fff; @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:21%; - right: 3%; + bottom:2%; + right: 2%; color: #fff; } \ No newline at end of file diff --git a/src/js/viewer/ViewerMapAPI-Point.js b/src/js/viewer/ViewerMapAPI-Point.js index aa80358..f5aee23 100644 --- a/src/js/viewer/ViewerMapAPI-Point.js +++ b/src/js/viewer/ViewerMapAPI-Point.js @@ -79,13 +79,13 @@ export class ViewerMapAPI { element: point_canvas, positioning: 'center', stopEvent: false, - offset: [offset], + offset: [position], }); // point.setPosition(offset); //this.map.addOverlay(point); var circleFeature = new ol.Feature({ - geometry: new ol.geom.Circle([offset], 50), + geometry: new ol.geom.Circle([position], 20), }); circleFeature.setStyle( diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index da48622..f438088 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -54,13 +54,13 @@ export class ViewerMapAPI { // Method: Add an event layer to the map (2D) view. addLayer(layer) { - this.scene.add(layer); + this.map.addLayer(layer); } // Method: remove an event layer to the map (2D) view. removeLayer(layer) { // Layer: EventLayer - this.scene.remove(layer); + this.map.addLayer(layer); } // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. @@ -84,10 +84,12 @@ export class ViewerMapAPI { // add all black points to feature layer // transform xy to lon lan //TODO: adjust the position better. This is a temporary scaling and offset - var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0])*3; - var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1])*3; + console.log(image); + var lon = -image.mapOffset[0]; + var lan = - image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + //console.log([this.viewerAPI.floor.origin[0], lon]); features.push(new ol.Feature({ - geometry: new ol.geom.Point([lon+100, lan+1200]), + geometry: new ol.geom.Point([lon, lan]), }) ) }); @@ -116,8 +118,8 @@ export class ViewerMapAPI { // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - var redlon = 700; - var redlan = 400; + var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; + var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; var iconFeature = new ol.Feature({ geometry: new ol.geom.Point([redlon, redlan]), @@ -139,66 +141,13 @@ export class ViewerMapAPI { this.map.addLayer(vectorLayerRed); - // this.lastFloorID = this.viewerFloorAPI.currentFloorId; - // this.lastVectorLayer = vectorLayer; - - - - } - - /* draws a point in *color* on the map at *offset*, also returns the THREE.Sprite after it is drawn - addPoint(color, offset) { - const texture = new THREE.Texture(generateCircularSprite(color)); - texture.needsUpdate = true; - var mat = new THREE.SpriteMaterial({ - map: texture, - transparent: false, - color: 0xffffff // BLACK, - }); - // Render on Top - mat.renderOrder = 3; - // Create the point sprite - let pointSprite = new THREE.Sprite(mat); - pointSprite.center.set(0.0, 0.0); - - // draw it at pixel offset of as agruemnt passed pixel offset - pointSprite.position.set(-this.mapScalingFactor * offset[0], this.mapScalingFactor * offset[1], -3); - - //scale the point - pointSprite.scale.set(5, 5, 1); - this.spriteGroup.add(pointSprite); - - return pointSprite; - }*/ // Method scale() { //Get the scale used by the three.js scene overlayed over the map (2D) view. return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } - - /*addViewingDirection(color, position){ - const texture = new THREE.Texture(generateTriangleCanvas(color)); - texture.needsUpdate = true; - var mat = new THREE.SpriteMaterial({ - map: texture - }); - position - // Create the sprite - let triangleSprite = new THREE.Sprite(mat); - triangleSprite.center.set(0.0, 0.0); - - // Draw it at The localization point - triangleSprite.position.set(-this.mapScalingFactor * position[0], this.mapScalingFactor * position[1], -3); - - //var quartenion = new THREE.Quaternion(this.viewerImageAPI.currentImage.orientation); - //triangleSprite.transform.rotation = rotation; - //scale the point - triangleSprite.scale.set(10, 10, 1); - this.spriteGroup.add(triangleSprite); - - }*/ test_current_position(){ From 4c3cb56b5cff8d88bf5ca363003714ffb49ede4b Mon Sep 17 00:00:00 2001 From: Mm24 Date: Tue, 8 Jun 2021 19:35:54 +0200 Subject: [PATCH 11/46] correcting map's scaling factors --- src/js/viewer/ViewerMapAPI.js | 227 ++-------------------------------- 1 file changed, 11 insertions(+), 216 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index f438088..8bb5e59 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -35,21 +35,6 @@ export class ViewerMapAPI { this.lastVectorLayer; this.lastFloorID; this.viewerAPI = viewerAPI; - this.test_current_position(); - /* - - var popup = new ol.Overlay({ - //element: - positioning: 'bottom-center', - stopEvent: false, - offset: [0, -10], - }); - this.mapLayer.addOvSerlay(popup); - */ - //this.redraw(); - //this.spriteGroup.position.set(window.innerWidth / 2, -window.innerHeight / 2, 0); // bottom right - //this.scene.add(this.spriteGroup); - } // Method: Add an event layer to the map (2D) view. @@ -60,7 +45,7 @@ export class ViewerMapAPI { // Method: remove an event layer to the map (2D) view. removeLayer(layer) { // Layer: EventLayer - this.map.addLayer(layer); + this.map.removeLayer(layer); } // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. @@ -84,9 +69,9 @@ export class ViewerMapAPI { // add all black points to feature layer // transform xy to lon lan //TODO: adjust the position better. This is a temporary scaling and offset - console.log(image); - var lon = -image.mapOffset[0]; - var lan = - image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + + var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; + var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; //console.log([this.viewerAPI.floor.origin[0], lon]); features.push(new ol.Feature({ geometry: new ol.geom.Point([lon, lan]), @@ -149,203 +134,11 @@ export class ViewerMapAPI { return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } - test_current_position(){ - - // const features = []; - // const featureRed= []; - - // let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - - // // adding black points - // allImages.forEach(image => { - - // // add all black points to feature layer - // // transform xy to lon lan - // var lon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * image.mapOffset[0] / 71.5); - // var lan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * image.mapOffset[1] / 111.3); - // features.push(new ol.Feature({ - // geometry: new ol.geom.Point(ol.proj.fromLonLat([ - // lon, lan - // ])) - // }) - // ) - // // console.log(lon,lan) - // }); - - // //adding red points - // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0] / 71.5); - // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1] / 111.3); - - - - // // console.log("red point") - // console.log(redlon,redlan) - - // // create the source and layer for balck points - // const vectorSource = new ol.source.Vector({ - // features - // }); - // const vectorLayer = new ol.layer.Vector({ - // source: vectorSource, - // style: new ol.style.Style({ - // image: new ol.style.Circle({ - // radius: 2, - // fill: new ol.style.Fill({color: 'black'}) - // }) - // }) - // }); - - // featureRed.push(new ol.Feature({ - // geometry: new ol.geom.Point(ol.proj.fromLonLat([ - // redlon, redlan - // ])) - // })) - // // create the source and layer for red point - // const vectorSourceRed = new ol.source.Vector({ - // featureRed - // }); - // const vectorRedLayer = new ol.layer.Vector({ - // source: vectorSourceRed, - // style: new ol.style.Style({ - // image: new ol.style.Circle({ - // radius: 3, - // fill: new ol.style.Fill({color: 'red'}) - // }) - // }) - // }); - - // // create map and add layers - // const map = new ol.Map({ - // target: 'map', - // layers: [ - // new ol.layer.Tile({ - // source: new ol.source.OSM() - // }), - // vectorLayer, - // vectorRedLayer - // ], - // view: new ol.View({ - // center: ol.proj.fromLonLat([0, 0]), - // zoom: 2 - // }), - // controls: ol.control.defaults().extend([ - // new ol.control.FullScreen(), - // new ol.control.MousePosition({ - // coordinateFormat: ol.coordinate.createStringXY(4), - // projection: 'EPSG:4326', // wgs 48 - // className: 'custom-mouse-position-testmap', - // target: document.getElementById('mouse-position-testmap') - // }) - // ]) - // }); - } - initDisplayMap(){ - // test create button 1 - - // buttonUp = document.createElement('buttonUp'); - // var handleButtonUp = function (e) {} - // buttonUp.addEventListener('click', handleButtonUp, false); - - // creat elements - // var element = document.createElement("div") - // element.className = 'control'; - // element.id = 'floor'; - // document.getElementById('pano-viewer').appendChild(element); - // element.appendChild(buttonUp); - - // var myControl = new ol.control.Control({ - // className: 'myControl', - // element: element, - // }); - - // test create button 2 - - /* CSS: - #custom_anchor:before { - content:"Cycle"; - left : 10%; - bottom: 20%; - z-index: -50; - } - */ - - // var myControl = new ol.control.Control({ - // className: 'myControl', - // element: document.getElementById('floorOL'), - // }); - - // // online - create buttons example 1 - // var button = document.createElement('button'); - // button.innerHTML = ''; - - // var handleRotateNorth = function(e) { - // map.getView().setRotation(180); - // }; - - // button.addEventListener('click', handleRotateNorth, false); - - // var element = document.createElement('div'); - // element.className = 'rotate-north-ol-control'; - // element.appendChild(button); - - // // online - create button example 2 - // var anchor_element = document.createElement('a'); - // anchor_element.href = '#custom_href'; - // anchor_element.className = 'custom_anchor'; - - // var this_ = this; - // var handleCustomControl = function (e) { - // myControl.customFunction(e); - // }; - - // anchor_element.addEventListener('click', handleCustomControl, false); - // anchor_element.addEventListener('touchstart', handleCustomControl, false); - - // var custom_element = document.createElement('div'); - // custom_element.className = 'myCustomControl ol-unselectable'; - // document.getElementById('pano-viewer').appendChild(custom_element); - // custom_element.appendChild(anchor_element); - - // var myControl = new ol.control.Control({ - // className: 'myControl', - // element: custom_element, - // target: document.getElementById("myCustomControl") - // }); - - // current version of test create button - /* - var button = function() { - var this_ = this; - - ol.control.Control.call(this, { - element: document.getElementById('floorOL'), - }); - }; - - var ol_ext_inherits = function(child,parent) { - child.prototype = Object.create(parent.prototype); - child.prototype.constructor = child; - }; - ol.inherits(button, ol.control.Control); - - // create contorls for map - var controls = ol.control.defaults({ - rotate: false // hide rotation button - //}) - }).extend([ - new button - // myControl - - // new ol.control.Control({ - // element:element - // }) - ]) - */ - - var extent = [0, 0, 1024, 968]; + let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; + var extent = [0, 0, currentMapData.width, currentMapData.height]; // Projection map image coordinates directly to map coordinates in pixels. var projection = new ol.proj.Projection({ @@ -361,7 +154,7 @@ export class ViewerMapAPI { projection: projection, center: new ol.extent.getCenter(extent), zoom: 1, - maxZoom: 5, + maxZoom: 4, }), // controls: controls, controls: ol.control.defaults({ @@ -371,14 +164,16 @@ export class ViewerMapAPI { ]) }); + // create image layers for each floors for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ + let mapData = this.viewerFloorAPI.floors[i].mapData this.map.addLayer(new ol.layer.Image({ source: new ol.source.ImageStatic({ //attributions: '© OpenLayers', - url: this.baseURL + this.viewerFloorAPI.floors[i].mapData.name + ".png", + url: this.baseURL + mapData.name + ".png", projection: projection, - imageExtent: extent, + imageExtent: [0, 0, mapData.width, mapData.height], }) })) } From e793286e08145427bee2dd8d60e75c4ce602f041 Mon Sep 17 00:00:00 2001 From: clairebb1005 Date: Tue, 8 Jun 2021 20:54:18 +0200 Subject: [PATCH 12/46] avoid redraw duplicating and deleting previous vector layer --- src/js/viewer/ViewerMapAPI.js | 136 +++++++++++++++++++--------------- 1 file changed, 75 insertions(+), 61 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 8bb5e59..e5ec607 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -33,7 +33,7 @@ export class ViewerMapAPI { this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); this.features = []; this.lastVectorLayer; - this.lastFloorID; + this.lastFloorID = 0; this.viewerAPI = viewerAPI; } @@ -51,81 +51,95 @@ export class ViewerMapAPI { // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - // // remove prvious last vector layer - // this.map.removeLayer(this.lastVectorLayer); + console.log(this.viewerFloorAPI.currentFloorId) + console.log(this.map) - // // this.spriteGroup.clear(); + // for avoid duplicating + if (this.viewerFloorAPI.currentFloorId != this.lastFloorID){ - var features = []; + console.log("not duplicate") + console.log(this.map) + // // remove prvious vector layers + this.map.removeLayer(this.lastVectorLayerRed); + this.map.removeLayer(this.lastVectorLayer); - var floorIndex = this.viewerFloorAPI.currentFloorId; - this.updateDisplayMap(floorIndex); + + // show layer map - // remove comment to draw all points on map - let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - - allImages.forEach(image => { - - // add all black points to feature layer - // transform xy to lon lan - //TODO: adjust the position better. This is a temporary scaling and offset - - var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; - var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; - //console.log([this.viewerAPI.floor.origin[0], lon]); - features.push(new ol.Feature({ - geometry: new ol.geom.Point([lon, lan]), - }) - ) - }); - - // create the layer for features -> black points - var vectorSource = new ol.source.Vector({ - features: features - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({color: 'black'}) - }) - }) - }); - - this.map.addLayer(vectorLayer); + var floorIndex = this.viewerFloorAPI.currentFloorId; + this.updateDisplayMap(floorIndex); + var features = []; - //adding red points - //TODO : adjust red point lon and lan to real one, now using temporary coordinate for testing + // remove comment to draw all points on map + let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + + allImages.forEach(image => { - // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; - // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; - var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; - - var iconFeature = new ol.Feature({ - geometry: new ol.geom.Point([redlon, redlan]), - }); + // add all black points to feature layer + // transform xy to lon lan + //TODO: adjust the position better. This is a temporary scaling and offset + + var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; + var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + //console.log([this.viewerAPI.floor.origin[0], lon]); + features.push(new ol.Feature({ + geometry: new ol.geom.Point([lon, lan]), + }) + ) + }); - var vectorSourceRed = new ol.source.Vector({ - features: [iconFeature] - }); + // create the layer for features -> black points + var vectorSource = new ol.source.Vector({ + features: features + }); - var vectorLayerRed = new ol.layer.Vector({ - source: vectorSourceRed, - style: new ol.style.Style({ + var vectorLayer = new ol.layer.Vector({ + source: vectorSource, + style: new ol.style.Style({ image: new ol.style.Circle({ radius: 3, - fill: new ol.style.Fill({color: 'red'}) + fill: new ol.style.Fill({color: 'black'}) }) }) - }); + }); + + this.map.addLayer(vectorLayer); + + + //adding red points + + // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; + // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; + + var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; + var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; - this.map.addLayer(vectorLayerRed); + var redFeature = new ol.Feature({ + geometry: new ol.geom.Point([redlon, redlan]), + }); + + var vectorSourceRed = new ol.source.Vector({ + features: [redFeature] + }); + var vectorLayerRed = new ol.layer.Vector({ + source: vectorSourceRed, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 3, + fill: new ol.style.Fill({color: 'red'}) + }) + }) + }); + + this.map.addLayer(vectorLayerRed); + + // save last vector layers for deleting + this.lastFloorID = this.viewerFloorAPI.currentFloorId; + this.lastVectorLayer = vectorLayer; + this.lastVectorLayerRed = vectorLayerRed; + } } // Method From fa79363d8e02e84d9ce5003455c43147f24c58e9 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Tue, 8 Jun 2021 21:00:02 +0200 Subject: [PATCH 13/46] another trial of ofssets --- src/js/viewer/ViewerMapAPI.js | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 8bb5e59..677e068 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -20,10 +20,7 @@ export class ViewerMapAPI { 1, // frustum near plane 10); // frustum far plane this.camera.position.z = 2; // need to be in [near + 1, far + 1] to be displayed - - this.spriteGroup = new THREE.Group(); //create an sprite group this.mapScalingFactor = 0.2; - this.baseURL = viewerAPI.baseURL; // create Map and Layers @@ -63,20 +60,19 @@ export class ViewerMapAPI { // remove comment to draw all points on map let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - allImages.forEach(image => { - // add all black points to feature layer // transform xy to lon lan //TODO: adjust the position better. This is a temporary scaling and offset - - var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; - var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; - //console.log([this.viewerAPI.floor.origin[0], lon]); + + var lon = (image.mapOffset[0]-this.viewerFloorAPI.floors[floorIndex].mapData.x); + var lan = (image.mapOffset[1]- this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + //console.log(" Coordinates", [ this.viewerFloorAPI.floors[floorIndex].mapData.x, lon ]); features.push(new ol.Feature({ geometry: new ol.geom.Point([lon, lan]), }) ) + }); // create the layer for features -> black points @@ -103,7 +99,9 @@ export class ViewerMapAPI { // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; + console.log(this.viewerAPI.floor.origin) + console.log(this.viewerImageAPI.currentImage.mapOffset) + var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; var iconFeature = new ol.Feature({ @@ -142,7 +140,7 @@ export class ViewerMapAPI { // Projection map image coordinates directly to map coordinates in pixels. var projection = new ol.proj.Projection({ - code: 'xkcd-image', + code: 'image', units: 'pixels', extent: extent, }); @@ -167,13 +165,18 @@ export class ViewerMapAPI { // create image layers for each floors for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ - let mapData = this.viewerFloorAPI.floors[i].mapData + let mapData = this.viewerFloorAPI.floors[i].mapData; + let e = [0, 0, mapData.width, mapData.height]; this.map.addLayer(new ol.layer.Image({ source: new ol.source.ImageStatic({ //attributions: '© OpenLayers', url: this.baseURL + mapData.name + ".png", - projection: projection, - imageExtent: [0, 0, mapData.width, mapData.height], + projection: new ol.proj.Projection({ + code: 'image', + units: 'pixels', + extent: e, + }), + imageExtent:e , }) })) } From 44264931b34f78c4d6ed6483eddbf770d9d0612a Mon Sep 17 00:00:00 2001 From: Mm24 Date: Tue, 8 Jun 2021 21:03:42 +0200 Subject: [PATCH 14/46] another trial of ofssets --- src/js/viewer/ViewerMapAPI.js | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index d945f56..0cd63ae 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -100,36 +100,18 @@ export class ViewerMapAPI { var features = []; // remove comment to draw all points on map - let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + let allFloorImages = this.viewerFloorAPI.currentFloor.viewerImages; - allImages.forEach(image => { + allFloorImages.forEach(image => { -<<<<<<< HEAD // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - - console.log(this.viewerAPI.floor.origin) - console.log(this.viewerImageAPI.currentImage.mapOffset) var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; var iconFeature = new ol.Feature({ geometry: new ol.geom.Point([redlon, redlan]), }); -======= - // add all black points to feature layer - // transform xy to lon lan - //TODO: adjust the position better. This is a temporary scaling and offset - - var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; - var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; - //console.log([this.viewerAPI.floor.origin[0], lon]); - features.push(new ol.Feature({ - geometry: new ol.geom.Point([lon, lan]), - }) - ) - }); ->>>>>>> e793286e08145427bee2dd8d60e75c4ce602f041 // create the layer for features -> black points var vectorSource = new ol.source.Vector({ From 6b5b6d8afca33de8799d50bcadd50461d84096c7 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Tue, 8 Jun 2021 21:28:19 +0200 Subject: [PATCH 15/46] another trial of ofssets --- src/js/viewer/ViewerImageAPI.js | 4 ++-- src/js/viewer/ViewerMapAPI.js | 37 ++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/js/viewer/ViewerImageAPI.js b/src/js/viewer/ViewerImageAPI.js index 130ef9b..b04913c 100644 --- a/src/js/viewer/ViewerImageAPI.js +++ b/src/js/viewer/ViewerImageAPI.js @@ -22,9 +22,9 @@ export class ViewerImageAPI { // Get all panorama images. // Parameters: Function called with all images ([ViewerImage]): Array of panorama images callback(this.images); - } +} - changed() { + changed() { // Signal changed image data (e.g. hidden flag) to the viewer. } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 0cd63ae..c1dc6b9 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -48,9 +48,7 @@ export class ViewerMapAPI { // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - console.log(this.viewerFloorAPI.currentFloorId) - console.log(this.map) - + var features = []; // for avoid duplicating if (this.viewerFloorAPI.currentFloorId != this.lastFloorID){ @@ -65,13 +63,14 @@ export class ViewerMapAPI { // remove comment to draw all points on map let allImages = this.viewerFloorAPI.currentFloor.viewerImages; + let floorIndex = this.viewerFloorAPI.currentFloorId; allImages.forEach(image => { // add all black points to feature layer // transform xy to lon lan //TODO: adjust the position better. This is a temporary scaling and offset - var lon = (image.mapOffset[0]-this.viewerFloorAPI.floors[floorIndex].mapData.x); - var lan = (image.mapOffset[1]- this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + var lon = (image.mapOffset[0]+this.viewerFloorAPI.floors[floorIndex].mapData.x); + var lan = (image.mapOffset[1]+ this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; //console.log(" Coordinates", [ this.viewerFloorAPI.floors[floorIndex].mapData.x, lon ]); features.push(new ol.Feature({ geometry: new ol.geom.Point([lon, lan]), @@ -101,17 +100,25 @@ export class ViewerMapAPI { // remove comment to draw all points on map let allFloorImages = this.viewerFloorAPI.currentFloor.viewerImages; - - allFloorImages.forEach(image => { - - // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; - // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; - var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; + var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; + var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; - var iconFeature = new ol.Feature({ - geometry: new ol.geom.Point([redlon, redlan]), - }); + allFloorImages.forEach(image => { + // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; + // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; + + // add all black points to feature layer + // transform xy to lon lan + //TODO: adjust the position better. This is a temporary scaling and offset + + var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; + var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + //console.log([this.viewerAPI.floor.origin[0], lon]); + features.push(new ol.Feature({ + geometry: new ol.geom.Point([lon, lan]), + }) + ) + }); // create the layer for features -> black points var vectorSource = new ol.source.Vector({ From 079f79154d1f362698cf8debe7d660ee8ab9b3e3 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Wed, 9 Jun 2021 13:18:09 +0200 Subject: [PATCH 16/46] code snippet to display the orientation triangle --- src/js/viewer/ViewerMapAPI.js | 87 +++++++++++++++-------------------- 1 file changed, 36 insertions(+), 51 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index c1dc6b9..67c4230 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -52,8 +52,6 @@ export class ViewerMapAPI { // for avoid duplicating if (this.viewerFloorAPI.currentFloorId != this.lastFloorID){ - console.log("not duplicate") - console.log(this.map) // // remove prvious vector layers this.map.removeLayer(this.lastVectorLayerRed); this.map.removeLayer(this.lastVectorLayer); @@ -63,14 +61,17 @@ export class ViewerMapAPI { // remove comment to draw all points on map let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - let floorIndex = this.viewerFloorAPI.currentFloorId; + let floorIndex = this.viewerFloorAPI.currentFloorId; + + allImages.forEach(image => { // add all black points to feature layer // transform xy to lon lan //TODO: adjust the position better. This is a temporary scaling and offset + console.log("Position in WGS84: ", image.pos) var lon = (image.mapOffset[0]+this.viewerFloorAPI.floors[floorIndex].mapData.x); - var lan = (image.mapOffset[1]+ this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; + var lan = (image.mapOffset[1]- this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; //console.log(" Coordinates", [ this.viewerFloorAPI.floors[floorIndex].mapData.x, lon ]); features.push(new ol.Feature({ geometry: new ol.geom.Point([lon, lan]), @@ -96,48 +97,6 @@ export class ViewerMapAPI { this.map.addLayer(vectorLayer); - var features = []; - - // remove comment to draw all points on map - let allFloorImages = this.viewerFloorAPI.currentFloor.viewerImages; - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; - var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; - - allFloorImages.forEach(image => { - // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; - // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - - // add all black points to feature layer - // transform xy to lon lan - //TODO: adjust the position better. This is a temporary scaling and offset - - var lon = this.viewerAPI.floor.origin[0] + image.mapOffset[0]; - var lan = this.viewerAPI.floor.origin[1] + image.mapOffset[1] ; // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; - //console.log([this.viewerAPI.floor.origin[0], lon]); - features.push(new ol.Feature({ - geometry: new ol.geom.Point([lon, lan]), - }) - ) - }); - - // create the layer for features -> black points - var vectorSource = new ol.source.Vector({ - features: features - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({color: 'black'}) - }) - }) - }); - - this.map.addLayer(vectorLayer); - - //adding red points // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; @@ -163,8 +122,24 @@ export class ViewerMapAPI { }) }) }); - + this.map.addLayer(vectorLayerRed); + let rotationLonov = 0; // TODO: Change to get LONOV in radians + var orientationRedStyle = new ol.style.Style({ + image: new ol.style.RegularShape({ + fill: new ol.style.Fill({color: 'red'}), //new Fill({ color: 'rgba(255, 0, 0, 0.2)' }), + stroke: new ol.style.Stroke({color: 'black', width: 2}), + points: 3, + radius: 10, + rotation: rotationLonov, + angle: 0 + }) + }), + + + //vectorLayerRed.setStyle(style); + // Example to + //orientationRedStyle.setRotation(Math.PI / 180 * heading); // save last vector layers for deleting this.lastFloorID = this.viewerFloorAPI.currentFloorId; @@ -191,7 +166,9 @@ export class ViewerMapAPI { units: 'pixels', extent: extent, }); - + + // [X, Y] coordinate corresponding to "lon0" in floor map image (in pixels) + let centerMap = [currentMapData.x, currentMapData.y]; // create map this.map = new ol.Map({ //new ol.control.OverviewMap({ target: 'map', @@ -208,23 +185,31 @@ export class ViewerMapAPI { new ol.control.FullScreen() // create fullScreen button ]) }); - - + // create image layers for each floors for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ let mapData = this.viewerFloorAPI.floors[i].mapData; let e = [0, 0, mapData.width, mapData.height]; + let projImage = new ol.proj.Projection({ + code: 'image', + units: 'pixels', + extent: e, + }); this.map.addLayer(new ol.layer.Image({ source: new ol.source.ImageStatic({ //attributions: '© OpenLayers', url: this.baseURL + mapData.name + ".png", + projection: projImage, + /* projection: new ol.proj.Projection({ code: 'image', units: 'pixels', extent: e, }), - imageExtent:e , + */ + imageExtent:e, }) + })) } } From ca89e9c0516ceb22d5473aba0ef296006c89d6db Mon Sep 17 00:00:00 2001 From: leonopulos Date: Fri, 11 Jun 2021 13:14:24 +0200 Subject: [PATCH 17/46] Load depth map for current panorama --- src/js/viewer/ViewerPanoAPI.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 71b7160..0a9ed01 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -89,6 +89,8 @@ export class ViewerPanoAPI { const y = this.sphereRadius * Math.cos(phi); const z = this.sphereRadius * Math.sin(phi) * Math.sin(theta); + this.normalizedViewingDirection = new THREE.Vector3(x, y, z); + // adjust looking direction for offset of current mesh in scene const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); @@ -108,6 +110,8 @@ export class ViewerPanoAPI { document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); + + this.depthAtPointer(event); } // handles continues update of the distance mouse moved @@ -178,6 +182,26 @@ export class ViewerPanoAPI { } } + // returns: the depth information of the panorama at the current curser position (event.x, event.y) + depthAtPointer(event) { + // open depth map corresponding to current panorama + const canvas = document.createElement("canvas"); + const image = new Image(); + + image.addEventListener('load', function() { + canvas.getContext("2d").drawImage(this, 0, 0); + }, false); + + image.src = this.viewerAPI.baseURL + + Math.trunc(this.viewerImageAPI.currentImage.id / 100) + '/' + + this.viewerImageAPI.currentImage.id + 'd.png'; + + const imgData = canvas.getContext("2d").getImageData(0, 0, image.width, image.height); + console.log(imgData); + + + } + } // takes in a location (in lot/lat), a direction (as a *angle*[rad, in birds eye view), and a distance (in meters) to move in the direction From 1cbafec42024b70685804270254e3e68c6cd952f Mon Sep 17 00:00:00 2001 From: leonopulos Date: Fri, 11 Jun 2021 16:03:47 +0200 Subject: [PATCH 18/46] Implemented Function to return depth information at current cursor position Also switched to local (previous) dataset for now. There were issues with the CORS integration of the depth maps --- src/js/viewer/ViewerPanoAPI.js | 53 ++++++++++++++++++++++++---------- starter.html | 2 +- 2 files changed, 39 insertions(+), 16 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 0a9ed01..c75b982 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -21,8 +21,9 @@ export class ViewerPanoAPI { //initialize the eventLayer this.eventLayer = new EventLayer(); - // property needed for display method + // properties needed for display and depthAtPointer method this.loadedMesh = null; + this.depthCanvas = document.createElement("canvas"); // Two new event listeneres are called to handle *how far* the user drags this.oPM = (event) => this.onPointerMove(event); @@ -54,6 +55,18 @@ export class ViewerPanoAPI { 'r3.jpg'); texturePano.mapping = THREE.EquirectangularReflectionMapping; // not sure if this line matters + // also load depth-map for panorama + const image = new Image(); + + //image.crossOrigin = "use-credentials"; + image.src = this.viewerAPI.baseURL + + Math.trunc(this.viewerImageAPI.currentImage.id / 100) + '/' + + this.viewerImageAPI.currentImage.id + 'd.png'; + + image.addEventListener('load', () => { + this.depthCanvas.getContext("2d").drawImage(image, 0, 0); + }, false); + // put the texture on the spehere and add it to the scene const mesh = new THREE.Mesh(sphere, new THREE.MeshBasicMaterial({ map: texturePano })); @@ -182,24 +195,34 @@ export class ViewerPanoAPI { } } - // returns: the depth information of the panorama at the current curser position (event.x, event.y) + // returns: the depth information (in meter) of the panorama at the current curser position (event.x, event.y) depthAtPointer(event) { - // open depth map corresponding to current panorama - const canvas = document.createElement("canvas"); - const image = new Image(); - - image.addEventListener('load', function() { - canvas.getContext("2d").drawImage(this, 0, 0); - }, false); + // find correct pixel position on equilateral projected depth map + const halfWidth = window.innerWidth / 2; + const halfHeight = window.innerHeight / 2; - image.src = this.viewerAPI.baseURL + - Math.trunc(this.viewerImageAPI.currentImage.id / 100) + '/' + - this.viewerImageAPI.currentImage.id + 'd.png'; + // horizontal (lonov) : image left -> 0, image right -> 360 + // vertical (latov) : image top -> 85, image bottom -> -85 + const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen + const verticalOffset = (halfHeight - event.y) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen - const imgData = canvas.getContext("2d").getImageData(0, 0, image.width, image.height); - console.log(imgData); - + const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov / 2)) + 360) % 360; + const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov + (verticalOffset * this.viewerViewState.fov / 2))); + + // pixel offsets in depth map at current curser position + const offsetX = Math.trunc((adjustedLonov / 360) * this.depthCanvas.width); + const offsetY = Math.trunc((adjustedLatov + 90) / 180 * this.depthCanvas.height); + // convert pixel value to depth information + const imgData = this.depthCanvas.getContext("2d").getImageData(offsetX, offsetY, 1, 1); // get just one pixel (1 x 1) + const [red, green, blue, alph] = imgData.data; + + // LSB red -> green -> blue MSB (ignore alpha) + const distanceMM = red | (green << 8) | (blue << 16); + console.log(distanceMM); + + // convert from millimeter to meter + return distanceMM / 1000; } } diff --git a/starter.html b/starter.html index e81a752..aac4d38 100644 --- a/starter.html +++ b/starter.html @@ -26,7 +26,7 @@ window.parent = { callback: function(viewerWindow, viewerAsync) { console.info("initial callback called:", viewerWindow, viewerAsync); - viewerAsync("https://bora.bup-nbg.de/amos2floors/", (api) => { + viewerAsync("../assets/", (api) => { console.info("loaded callback called with API:", api); }); } From b9fe385aca1380916f984c95f2df0c282b8dbe56 Mon Sep 17 00:00:00 2001 From: Leon Schmidtchen Date: Sat, 12 Jun 2021 17:16:50 +0200 Subject: [PATCH 19/46] Change to 5x5 Pixels instead of just one --- src/js/viewer/ViewerPanoAPI.js | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index c75b982..f0f8d43 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -210,12 +210,15 @@ export class ViewerPanoAPI { const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov + (verticalOffset * this.viewerViewState.fov / 2))); // pixel offsets in depth map at current curser position - const offsetX = Math.trunc((adjustedLonov / 360) * this.depthCanvas.width); - const offsetY = Math.trunc((adjustedLatov + 90) / 180 * this.depthCanvas.height); + const pixelX = Math.trunc((adjustedLonov / 360) * this.depthCanvas.width); + const pixelY = Math.trunc((adjustedLatov + 90) / 180 * this.depthCanvas.height); - // convert pixel value to depth information - const imgData = this.depthCanvas.getContext("2d").getImageData(offsetX, offsetY, 1, 1); // get just one pixel (1 x 1) - const [red, green, blue, alph] = imgData.data; + const offsetX = (pixelX >= 2) ? pixelX - 2 : 0; + const offsetY = (pixelY >= 2) ? pixelY - 2 : 0; + + // convert pixel value to depth information (use 5x5 pixels around cursor) + const imgData = this.depthCanvas.getContext("2d").getImageData(offsetX, offsetY, 5, 5); + const [red, green, blue, alpha] = averagePixelValues(imgData.data); // LSB red -> green -> blue MSB (ignore alpha) const distanceMM = red | (green << 8) | (blue << 16); @@ -239,4 +242,24 @@ function newLocationFromPointAngle(lon1, lat1, angle, distance) { lat2 = lat1 - (dy / 111.3); return [lon2, lat2]; +} + +function averagePixelValues(data) { + const pixels = data.length / 4; + const [red, green, blue, alpha] = [0, 0, 0, 0]; // sum of all pixel values + + for (let i = 0; i < data.length; i = i + 4) { + red = red + data[i]; + green = green + data[i + 1]; + blue = blue + data[i + 2]; + alpha = alpha + data[i + 3]; + } + + // get average by dividing + red = red / pixels; + green = green / pixels; + blue = blue / pixels; + alpha = alpha / pixels; + + return [red, green, blue, alpha]; } \ No newline at end of file From 2861a59c48c9bf06292bd14d2f404e7ef2c0015d Mon Sep 17 00:00:00 2001 From: leonopulos Date: Sat, 12 Jun 2021 17:20:23 +0200 Subject: [PATCH 20/46] Update ViewerPanoAPI.js --- src/js/viewer/ViewerPanoAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index f0f8d43..431b5be 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -246,7 +246,7 @@ function newLocationFromPointAngle(lon1, lat1, angle, distance) { function averagePixelValues(data) { const pixels = data.length / 4; - const [red, green, blue, alpha] = [0, 0, 0, 0]; // sum of all pixel values + let [red, green, blue, alpha] = [0, 0, 0, 0]; // sum of all pixel values for (let i = 0; i < data.length; i = i + 4) { red = red + data[i]; From 422445503ac77c43319faa956a43859f939cd469 Mon Sep 17 00:00:00 2001 From: leonopulos Date: Sat, 12 Jun 2021 18:11:38 +0200 Subject: [PATCH 21/46] Update ViewerPanoAPI.js --- src/js/viewer/ViewerPanoAPI.js | 83 +++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 431b5be..7d31e66 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -95,19 +95,12 @@ export class ViewerPanoAPI { // Set the panorama view characteristics. view(lonov, latov, fov) { - let phi = THREE.MathUtils.degToRad(90 - latov); - let theta = THREE.MathUtils.degToRad(lonov); - - const x = this.sphereRadius * Math.sin(phi) * Math.cos(theta); - const y = this.sphereRadius * Math.cos(phi); - const z = this.sphereRadius * Math.sin(phi) * Math.sin(theta); - - this.normalizedViewingDirection = new THREE.Vector3(x, y, z); + const normalizedViewingDirection = lonLatToLocal(lonov, latov); // adjust looking direction for offset of current mesh in scene const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); - this.camera.lookAt(x + localCoord.x, y + localCoord.y, z + localCoord.z); + this.camera.lookAt(localCoord.add(normalizedViewingDirection)); this.camera.fov = THREE.MathUtils.clamp(fov, MIN_FOV, MAX_FOV); @@ -124,7 +117,6 @@ export class ViewerPanoAPI { document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); - this.depthAtPointer(event); } // handles continues update of the distance mouse moved @@ -153,15 +145,7 @@ export class ViewerPanoAPI { } onDoubleClick(event) { - const halfWidth = window.innerWidth / 2; - const halfHeight = window.innerHeight / 2; - - const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen - const verticalOffset = (event.y - halfHeight) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen - - const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov)) + 360) % 360; - const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov - (verticalOffset * this.viewerViewState.fov / 2))); - + const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); const MEDIAN_WALKING_DISTANCE = 5; // in meter // distance to be walked along adjustedHorizontalAngle from current location const distance = MEDIAN_WALKING_DISTANCE + ((adjustedLatov / 85) * MEDIAN_WALKING_DISTANCE); @@ -197,18 +181,8 @@ export class ViewerPanoAPI { // returns: the depth information (in meter) of the panorama at the current curser position (event.x, event.y) depthAtPointer(event) { - // find correct pixel position on equilateral projected depth map - const halfWidth = window.innerWidth / 2; - const halfHeight = window.innerHeight / 2; + const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); - // horizontal (lonov) : image left -> 0, image right -> 360 - // vertical (latov) : image top -> 85, image bottom -> -85 - const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen - const verticalOffset = (halfHeight - event.y) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen - - const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov / 2)) + 360) % 360; - const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov + (verticalOffset * this.viewerViewState.fov / 2))); - // pixel offsets in depth map at current curser position const pixelX = Math.trunc((adjustedLonov / 360) * this.depthCanvas.width); const pixelY = Math.trunc((adjustedLatov + 90) / 180 * this.depthCanvas.height); @@ -222,12 +196,45 @@ export class ViewerPanoAPI { // LSB red -> green -> blue MSB (ignore alpha) const distanceMM = red | (green << 8) | (blue << 16); - console.log(distanceMM); // convert from millimeter to meter return distanceMM / 1000; } + // returns the current location of the cursor in the three js scene (Vector3) + getCursorLocation(event) { + // param: event.x event.y current cursor position on screen + const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); + const normalizedLocalViewingDir = lonLatToLocal(adjustedLonov, adjustedLatov); + + // adjust looking direction for offset of current mesh in scene + const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); + + // get distance und extend viewing direction vector by distance + const dist = this.depthAtPointer(event); + + localCoord.addScaledVector(normalizedLocalViewingDir, dist) + + return localCoord; + } + + // returns [lonov, latov] at the current cursor position + getAdjustedViewstate(event) { + // find correct pixel position on equilateral projected depth map + const halfWidth = window.innerWidth / 2; + const halfHeight = window.innerHeight / 2; + + // horizontal (lonov) : image left -> 0, image right -> 360 + // vertical (latov) : image top -> 85, image bottom -> -85 + const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen + const verticalOffset = (halfHeight - event.y) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen + + const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov / 2)) + 360) % 360; + const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov + (verticalOffset * this.viewerViewState.fov / 2))); + + return [adjustedLonov, adjustedLatov]; + } + } // takes in a location (in lot/lat), a direction (as a *angle*[rad, in birds eye view), and a distance (in meters) to move in the direction @@ -262,4 +269,16 @@ function averagePixelValues(data) { alpha = alpha / pixels; return [red, green, blue, alpha]; -} \ No newline at end of file +} + +// returns a normalized Vector3 pointing in the direction specified by lonov latov +function lonLatToLocal(lonov, latov) { + const phi = THREE.MathUtils.degToRad(90 - latov); + const theta = THREE.MathUtils.degToRad(lonov); + + const x = Math.sin(phi) * Math.cos(theta); + const y = Math.cos(phi); + const z = Math.sin(phi) * Math.sin(theta); + + return new THREE.Vector3(x, y, z); +} From ec70a5d81f44fadfed1166d87c92402a82564f4c Mon Sep 17 00:00:00 2001 From: leonopulos Date: Sat, 12 Jun 2021 21:12:12 +0200 Subject: [PATCH 22/46] Adjust depth map information by quaternion offset --- src/js/viewer/ViewerPanoAPI.js | 40 +++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 7d31e66..83c9e65 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -116,7 +116,8 @@ export class ViewerPanoAPI { document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); - + + this.visualTest(event); } // handles continues update of the distance mouse moved @@ -183,9 +184,15 @@ export class ViewerPanoAPI { depthAtPointer(event) { const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); + // because depth map is not rotated by quaternion like panorama mesh, the quaternion adjustment need to happen first + const localPos = lonLatToLocal(adjustedLonov, adjustedLatov); + const adjustedQuaternion = localPos.applyQuaternion(this.viewerImageAPI.currentImage.orientation); + const [realLonov, realLatov] = localToLonLat(adjustedQuaternion); + console.log("lonov",adjustedLonov, realLonov); + console.log("latov",adjustedLatov, realLatov); // pixel offsets in depth map at current curser position - const pixelX = Math.trunc((adjustedLonov / 360) * this.depthCanvas.width); - const pixelY = Math.trunc((adjustedLatov + 90) / 180 * this.depthCanvas.height); + const pixelX = Math.trunc((realLonov / 360) * this.depthCanvas.width); + const pixelY = Math.trunc((realLatov + 90) / 180 * this.depthCanvas.height); const offsetX = (pixelX >= 2) ? pixelX - 2 : 0; const offsetY = (pixelY >= 2) ? pixelY - 2 : 0; @@ -235,6 +242,22 @@ export class ViewerPanoAPI { return [adjustedLonov, adjustedLatov]; } + visualTest(event) { + // visual test, spawn in white sphere at cursor position in scene + const direction = this.getCursorLocation(event); + const sphere = new THREE.SphereGeometry(1 / this.depthAtPointer(event), 10, 10); + const mesh = new THREE.Mesh(sphere, new THREE.MeshBasicMaterial()); + mesh.position.set(direction.x, direction.y, direction.z); + + if (this.testMesh != null) { + this.scene.remove(this.testMesh); + } + + this.scene.add(mesh); + + this.testMesh = mesh; + } + } // takes in a location (in lot/lat), a direction (as a *angle*[rad, in birds eye view), and a distance (in meters) to move in the direction @@ -282,3 +305,14 @@ function lonLatToLocal(lonov, latov) { return new THREE.Vector3(x, y, z); } + +// inverse operation to above +function localToLonLat(vec) { + const phi = Math.acos(vec.y); + const theta = Math.atan2(vec.z, vec.x); + + let latov = THREE.MathUtils.radToDeg(phi); + const lonov = (THREE.MathUtils.radToDeg(theta) + 360) % 360; + + return [lonov, 90 - latov]; +} From 5debab902e422e4fe9eda54c4d0e5e3e2fd05359 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 09:01:24 +0200 Subject: [PATCH 23/46] Update Vieweing direction with FOV --- .../2021-06-02-Kanban-board-Sprint-7.PNG | Bin 0 -> 130152 bytes .../2021-06-02-Planning-Document-Sprint-7.pdf | Bin 0 -> 150423 bytes .../2021-06-09-Kanban-board-Sprint-8.PNG | Bin 0 -> 127727 bytes .../2021-06-09-Planning-Document-Sprint-8.pdf | Bin 0 -> 150875 bytes src/css/main.css | 12 +- src/index.html | 106 ++--- src/js/viewer/EventLayer.js | 39 +- src/js/viewer/EventPosition.js | 11 + src/js/viewer/ViewerAPI.js | 35 +- src/js/viewer/ViewerContextItem.js | 16 + src/js/viewer/ViewerFloorAPI.js | 4 +- src/js/viewer/ViewerMapAPI.js | 432 +++++++++++++++--- src/js/viewer/ViewerPanoAPI.js | 136 +++--- src/js/viewer/ViewerViewState.js | 12 +- src/libs/contextMenu.min.js | 1 + src/libs/ol.js | 3 +- 16 files changed, 604 insertions(+), 203 deletions(-) create mode 100644 Deliverables/2021-06-02-Kanban-board-Sprint-7.PNG create mode 100644 Deliverables/2021-06-02-Planning-Document-Sprint-7.pdf create mode 100644 Deliverables/2021-06-09-Kanban-board-Sprint-8.PNG create mode 100644 Deliverables/2021-06-09-Planning-Document-Sprint-8.pdf create mode 100644 src/js/viewer/EventPosition.js create mode 100644 src/js/viewer/ViewerContextItem.js create mode 100644 src/libs/contextMenu.min.js diff --git a/Deliverables/2021-06-02-Kanban-board-Sprint-7.PNG b/Deliverables/2021-06-02-Kanban-board-Sprint-7.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6080f2a18654f8c4e4502c498387b3814bbb819d GIT binary patch literal 130152 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 Hfj0`#~PhT;t{ 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 o41kXF@ZV(rI~Q{H#PhCFaQ7m literal 0 HcmV?d00001 diff --git a/Deliverables/2021-06-02-Planning-Document-Sprint-7.pdf b/Deliverables/2021-06-02-Planning-Document-Sprint-7.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d7fa26cd7ed1625a425d022a922aab3d309691ba GIT binary patch literal 150423 zcmce+1yo$ix-N`a>6+^B|D2G1jr{nrZ>*~QM#==V%4OsL3=e_W7mzu(BL{#nPw41$1pzW%L_1^m}` zY|NlPw_^sevHrP^g%Qa3mpUf)zt*v`{-qAc$oiM@fJ}_QKaU4wW&8_fAefQ)&+S;5 z|2i)#WRkzMV+H=T4$S)3@xXuGD>fE(mOqcj#tvlqa~(S~_^);B;J>U5#KI2#Q(qtx z3-h1n06y!%Iz_XRVv{{;&p1j)v_nOPD7OMcugO3lfV{P}0~sr1QZjjfn3a(=87rj2^Shw>2O(j8Fpyo4 zPe_;r2nGQK`2>YPU>0T}Fe^WwfDj8G_kV7o36Qljboy-|tjrLbK(=?#wR8A~1u&u_ zQ&I}a2%{qZyM>@4Ka298HYjXr;b3S75Vp{DFcdV@w>B^Yh(YX&86atBW$a)=#tZ@j z6d-@uxVh~e>lP}peckAlo1fFZ&3VDUXZ=O(uW_iBZ9Ic;H5a6!4JfL z`jF(p_vm{?(1PiKgc6P7OfZT@_qC&A;>zT3@ubLHo$wU`V|Bi1e3|B2k3AL0XgA;T zA#85UL|W~{@$eJ*l3aVSI?vm4r_q@)FB?I%A8%z7`fc^krj`kOft9ZVSq8*Y!iCDa zzK{ka&2^A%ZcahNp@wDi#_-M4p^oT7Au(6F_$28d;Z#DI!--OgBKe!ZX`qc5zyxnz zV!cXYW=y7so?_;udx;}w^hyUbR2`iCi9CZT=9~bQR3BO&Ar~NkEI_4?G%iXYHT)MpX|G@1Cw$k-%_0FUu%9OeZhR1}Vj2r4qfGySn! zfB2~13h;;9lQMMBHPCg?C3`k`h$cwuS{mAa_`uB#kkvIdl+@KTw15-=(vFt)>Wt5t z1P}x$IFK=Mb3>fo?>6>itPl%;bX9b3#s<-F zNP7WmD+fa>2YYq4-~Gwhe(NF`+p|K*lRcXT+CY#BK%g2rnd%$Li||8WE86K=+1u#a8CvPPLXb-t8kp+- zrLXMscZh}jV?pwU_STMe`i2n15T5}-EN|@q(M&SNe=PNRgZ{P7--~+QRCUPQe7|=} zNnY$9E&22vOs%Z|kTQ*lgM*Dd2LNDf>R{ri$DnU*36QWbbbzQmMDcYkt?lXU?IHey ziJrxP-pSO^+0gDC1TDX{oq?gWqMlhI+1<1(2 z1cqRRI9CQ15F48&K*3SZ;aMz@=w|*0mS-7obN^34K0~vyvo`yGi4n-g#J~>mfn-2t zRt8282nZwtvNJP4po4(_zo7&?F95Q4_5h~;xT!!On1KnzLIz|5GXTL5ivhBN8Ne*; zjQ`hgot>Q->`hGV989fr9jxsbAWqK0TGxPI*WTRF0U)dk64!GSXA^e>{%4F3!80;K zECk2|W?*J!XMwgdw+n1RnEjFlC{zz9)TAQ_~@00y&z|F3P!z|Pdk zkipp6+StPIw;T9f0dNE`0*tIJAl44iQhH%Yb}M>ukei&gF;H61QrlWgRX|@w#zo4C z5yWI`^PgA1&ceXP%ErV33G^%s5dH!pV*vpn@?d28KP^D>pKSKG-}@s{2)Q_jC_MYW zXV+n2W1`DM_Dnk=Zt-`Cg^V3SQpn^X-bxta*ddLcAB<#dziWRNn910lgMs|-0+8&P z6#i~6tNZN#to{*o?5y<_3?0+~5ULJPG<0zQh*?7XEdM_q0{?i3X#zgV=slbAbDw|n z!OwI30T*IVhR+B9QcA)~YO1t+cBZ-(Qi_n6V6P8}gSu7@&tL7;pXnBvye2@%3c@!` zt&9O;29OY7>flN*`oFyAb7X@!eQPBv(`Qmb#s;B*kY)T1c+aE!8-nLAe<1i9HuDFM zfn*c^VlXagp7O(H-HfkV4{04F(L2Wj5W=$ausrtsn}0&7sx|qk;Z%E^t*J~=6)*9^ zUAq|@8(E%G_3u|Uyj`ewTLoH6mePhKY`#Qj3}S~^sUzIqL3=9x7{tIL|X3vX}5pVni3Ct zb>I_o(1-FjF1%518bxIL=rCVgxLKy9hu`7Wz@@{KzoJ&_xh%bQjQ|Gm^-06?m>NCcF%MCz6gBWuY8rrbg`hu)7i*s>!52Q-fdVlV&eB+ zizm6Nm*;P2&2JjkIOVw_^q-V@E?U(UK z&caFplIhU+M8LZ5Pp$w-pHbVjL+A+_!ETLrB)!(r_)QFp(W*=Re9) z93HdzzbbrnA`{DJIMa;FCI}ZVBY&C=js{Z36rdHhy~Z3o$*5-eK~BJLkw6|8PR=de z_gZD<%PP0%aF_7#9u;A5soAg9$)P9{Ls7Qasvf1fQfFb)WI45qHNy*2(V645Wt})M zSGwOoXjYKo#+UmbjV*~U=Z71(>hprZZf`X97*{=L;Wy>n*Te&Kf9qn1TVlx z1|dO^EcBTO0rYkMt@LkJ`b;DLqo%O1u>8BG#KlQj!7{xFyx|rCOkgpxbu)|X7YtHF z-`jf^vyfQ$FGjx>+By?zy$R@pgWiKf3jMN6|8cx^lnrS_^pz|4s_YMjURGn1OHikuPS_HA2ro0Brytdu}~It zo$ybXG>F=Ur>W5eN0L(YO>8NX}QLA)r8%J>(RslxD*1-i zHXITPAlc7t5h$gp#j=qP@tAKV8s7UhX3a@ z@Sl#8`M(&iMjTT_H!lk8L+d7Yl)v)qmon1)v!Cr>KPC_{hj&7Q9Nrw+KMv{dd3ZG%5gk@+W6;nBJSQD5PY|QWZ(3RMjQ#1C=%vsP@K8 z52BbW;tCiTkxF6<+)|ULYEg&aX2hn;MkP%de4mHV$c4N%3;Z5pwcyk;i0}Ee&w|A$ zc?mC*na^2k;efDNJ_XshoAEwKQJQ;HT7>fJ`}Y^9CI^lvP{-EL$i7xT>@kxVeS@1i zC>XPY_ZgXpsXSmqbvUFNI|B$M1AK(mg)y0QC=eu3Y$uZRCI+I2l^L3izu5$dIjv3x zb6zcDE%3(fdnGlOHtL6P+Ka>v-uB!V^EW$tOl1;{@;n>IrI9D*1-%0{kwG-d}E67XG96y;4YlUG z>JF%f3Mh=f+wXtNkpGso(DOqG;oni0-!$ZZMqSwdk;(oIb@@%l{t)}0VJMnHP6eb5 zo#m}9b**F-{tnCU%=~|d<$p_~exv-4D#*gZ{x21Lrcr}d{*14_USe|>e0rfTkRtk` zSX?Ps05|>`wu6L5o+-f=?a^~oGKQ@fOM=e&F#%ep6+kL6?T*vlB&W2lxTK%|PIxqCpSZ5Y>uDvSX78)-{0u5`9`uk-S zXca{Bc3r3~{KybLQxpG5drR#D=#OF5j>X+xr@M|5kIdXgFD1#Oi||>^k}S$QW(xdi zc6G7oypc;kckGpVN|zK+;=L$Tv0aqYt`i`|_WQNLGdmg1g)6dk@r(x`Ot_oHuS;|nR`vOx4q0G5@;gOQE(GKzow$78f zb}QKy!39>oLgUru9!pILU2X z!LC+L)%}g8{$}`phy@a8nHU(KBP`_cuh9B@3j3d(2Mg1`9pU{Zz*gO4uUap$iKYb% z$eeP-apdDmV$eN{tazZhIfP1>y0+Kb0a_`wV)+ycF0Cw_FI#%snyk~pYh93Xt;nZV zIWTnyBKcsC*L8?D{0K_7*t;4?;;4mQH(X-rnrQIEG#B)mBTF-lI5-;jp;?KZ6QRHz zqB&f(Sz}s7u6lPtF~|$&}!2EP*OwcRro7xo5#JjrZsU`iqh-?LTw+{4A@*7mOGd;51ndOp1RkGAtC z_iYg;78AgT0(bf|ooN22pB@=F!m?C9rSV*3>YksYF3-qh};(+#(8<^)k)xJ^r-GeY=XLpMX%Y84q?`K__6MmvND)6&6slNbH>1;D=bFt&y z6QFMty+9F~mvzQF7)$3x5MX8d7}Uw^41vEsH4J?xh+ z76=?X&O=n5$~yoC2I)b$VPKku5Ym?;nwBhap*&p?IP-Q2_Pc(QW zwo_(_5vwn==eScB)BiHU#-uXym;;Q)gp3)V6_9`mB73Ds6NnmheR{eOL0EVk(x^Ke z;cdH$+YSH_CnLSB{-6Ttix4Sy$;gw<#`43-zW&HlqRy-tJ>X)pX(UI*%qoa)j)`xs zZd;Q?4Jjn^Q!@uz^^WF<8JHCr#>It8`j{>g$-luQACk=&kX;Q)?WKq=)(vxZ@$0(T zbzi2xQ{&zmdz#*&&30HTY8AlUaC`BcJT$B}dP)y`&iS3*%GZwtkCzlphg7%{=JoYD z9$I~sN5?7UiASkdWCiwW`x))8JR0WGK(@gBpj@DdV8LW%=@--14M|M~uaw3S#k}`1 z^4V`6S8yD19N%~dz9y%wc%7i6A@35klO1fl^2ItK@jY;K*kerO_=wq_JI1D$;xa4% zgUuSe??Kq{iu)X|3!&`twyPG2E5o}B!~HR|U-gHwK_Gdtefc>c^l|;XW8v)Oy^Ag7 znbV*v;@5k+9>O@<;fx}FqoMaR%cW;O{5?CJRm$alRVj5>yTL zhn2S44$N__Zim+upS~O?!^tFXY`w+G)YSgc{Fa5bm5MS3m(HwVvRTE-7DwQhL|gJK zw%1RHmK0jNu>LzO`ER8h!2g%qmGkX$Zf&>)3t7uCSx>r zjpdm0wj&uGl6I{mc|1KRNw~s~$@pEqN`(L5PJy1Mf@aO6OWiIuYq7-Kw_IfWZ`mAm zgN2MG_XD50Z+WNfatc3JGJ3!5np#UL|1{ZQt4TyW16g?TelZYU zd+lQ9#4MC2@zeD<#O*gvB?KQh>AkOG{sN7lJYp+HngUPE1t*|VsiN|OksxaoT8iF; zXQ+7|iAjXWr6tZDw#|_5!L9d&0#bmKM(4$&48?gHLak|YB!f{n!-jyyBFA;UX_A1O zuX~+5o$5B7Fh*wRmv27@-2-fwVbB%<)#EAHFbhL_y0Sw|F_Z_R;K@w)|ADK z$}I7|>dpMNG$F7hfAvO)KVI#%;)q*~Ip=50_wz{sulmJ&fb8GIU#KA|ZLaN>XLpL{ z5|y~rUhj;$IT?AW(!M(}xY@g@;8F8SsK~n|hbA3!TJACB%k#9f$jWb|=jx4@%=0aJ z7oFYii?wDGgezTDuc)OPfa$>4lXOpjHo2AZCT-JDp+Mfi?&IeRrH@(|h2{OjHUz^f zGGLlzX_(s=J6<;dn_$Xb||z@0gkRCoP~f+<5iIn zp6?v!mJVRzt2 zT;Vb4dF(nPZ*k4Fz__UivAF44coL?DTzj86nDfCl3=135(NH$iC#>kcoKosmZ@l@? zx_x@mlc01_a=yozG=ojj>1NR)kYOLsY1RGuii3xAEp`6;-GP0xz?cFvhfZa~i(7i| z)`#8VrG8w5)i<3;syFy$V~H~}XR3~-*+}8=pfW3$m;X+Y{#!{I zwlltnU`(yI#!TVFpr&q80$CB7DhuFVZyFgv^Z#d74 z(0<80-!&U&3a|)&v9jnq`{UhogqzkAPWIJJC#zCTR)^9CZNN`<-FB1N_?H!_%ex~k z^E|$?nWiclT#g}cy<-IT!rkUG9lysN?lh@cNMQ6mY&`C@-c9dPu9muETt`wE+@)6{ z!f)Wd&JgC~4u*N*=z-K;vB$>QvPJ8bW;Mue<7j^JX@aU2eq306B6JUm8%@Phs73DO z{hNzi-!rYyN$ZLCZ*ziW?P#0f+F;^-As}+9$%5Um7B}P^UW}#tSP8mEp(Ap%3A1No zFE825AR7n-?!f?&HN&m?yE(t`#ZDAH(iah+il}6}x|oW1_7f93JAd%a5Nv7UajJdu z5;?p0jO*KZ`WaupwybmGCW!;jJ=R+Jks!wh!*^+Sj46>M>&zcck``={&0Yz#`*EBV zp%HgIh#{YF6MF{3x-hXrom{wx*!S~+Xv3IIaNMAdJ3Y@{y~d<+{N_l+&+XFZXfyXP z=~Vl&t$eRx??pXwKWD}sD8jFZkO28~+V3gg#(v@2a6!$430kcfD}Q5PX3u#K`v+CT zR^q^npVA)vURO?pa}?qg|5jGLOn1EYdgeg*+1FtAWYT3@@@j#WWg&IKpU^+CKiPmu zg8O6T?O0s{QX>sq^Z>Wg0yWuRPyJiG{S;hqt75vBw;pRAO__MyYrE07Vg%81K21u@ zBUlskzC0Vf<$7di_K~DQj~Q=VJ4?N5$a{A-o0v^IdAz6k1Jh}v%>~$oHQp6^{@w$( zjg+*@db45x-heJyqHWj6R%+S$?&St&kaou!MH!YAX8X{rF}l&Ow4cSf&i&#*f<0aQ zZ%-sYUbHS)IpBG|Sd*DF{@8(I@yQyi{|w{->tWr~u+@J?)r#NHp|IMMxlwVBekKEgUV}EnG`e=PKKQ+$emsSXl%` zKe2Ade4n(?u^Ol5SKkzZf@^Hh#)ji<1sYM<)71ww$IEw9n%Em7o5mYs zm+^0%&faTx;9iJv_o8o5U(TIHo@rlbBgY2J1&#|TwaRO}s}K1VRg!m^FE?fK?#;@( zM691hjt-cjO^j|0zX18m(Y+j_TOPT9qbHU0UZ|<~e zbB^(%fgdi>HDtJZzeYsZWawO*wmA8;im( z%0*uR&q3mw39W$_>b{lPgw_*{!7DVgyf#5^!f*#w2TfWbe6wl#DCvM$(h)kDxc6>7 zM1JFamE@02l|c(HRNE~a!Q0U@CsU08aHoI57Rrs!E!W*EO@Fk@_xAzrXlC9?AI4|S z`vWD;=+=EGO(@L{J_dckJ-BN)lkC|zr|BexcTgX>+R?B4iX?0JT4#}A{e;U07T3m6 z_BGTHKAHm)+N(|I+f_tRCoKFZ0!bzm%{BEmiU`VblLDQ7AC4F26~+KQOwJ7c8|M*0 z702c9W>}K4gO4cA%K_XX&N)&pLe~gDbRi#m?#}MO&h1LZ##~NS0q(c@1NZh1xN4lf zuzQ5J+~}OUFWn~zo;-mFGfrj4F1ST4aIdbt9Kg+Z#QqJBXc;yb4Wvp2B2kva{!OlD zZJ9Zf#4^rUI@qHJjWFSY4->I5J_Vxh_O^^3aavDNO*oqJ^vT(|I0+Xwq)p(7)eZ?d zGS#o3xB9fQ<}$psq<(qrx6OFIr**qIP+iS+Z%|Y<6|-fQ!vcf}y`;F?Xq9DLzj5WV zN>s3)w^R--8Hk}dBkC+#%DP?eGqJC(N|xyZG#7EMM9TR3z0*V{NX?Z6-Y(mx)f|BpEnvyArU-TuwxD#SCEKzDz8YtM^Uia5s zlHq4>*>+2~LAD}Adm3&VS$jtAsM)M!36vD(a@TKr_k6IIdR0LuD=Ftb#plDRa*tg` zA|dI12$lW7P}mg8>!dx4d$zs$y?U#MxiZU{iSOa>4r^~~-^CuJHoZgrfj@@z!C9xq zd$OuyL9?;RocCwR7m>?GR)3h9TnFdT6s5_X@Z7@|lJLpeZ0Hl{xtN~yK34yYN%L%s zPvOB`(*q$v_eQNSB>4H({A)ul?fd6^wRyJEwW`6|c$sxZ(r+B3Or%(vx9{h#WkuIk zY_S3ngyzD^Bl}a#FE>#Y5P}+9CsHK7tYLi1?X-_{IIWkmCqQi(JsB`8tN)U`pWgp5 zB3;_Pn_=HVRni=b6d7)kD4ifMn!Am`w^>XesQNRT4- zhO2t*!zQsvBpqv{gVrh@qPP{GqUIIb@ZcEFryYCrl$i?rhbL_`8TJTtLQGONH$6{> ziIhH#B{V|!u?*W*>)k4iFAH2*8N+Xyhz7Uj<;aG_(y6D@-OO1seR!fVu4$=B)#wgx@|MdAAnTZGpaqSdM8Wlp5K$e`|X9IljPC=r+qrq=+Z@y|M~(u1szm zjF4ya!N$Z27AvxEwm%0pWfHVL0{2+wbaX1=jp{ne0bGD`gPF*bi(BH_?P=9$gXWIo zXmKV);cYM)U3YOfOX*`(P~%L{B8fCRXKfjTwu786@P$)t)H)qC(O0;hEh3ndsy31` z!t>!;g>KE{Htf4xB?Vu#uvTI#N0zTiGvZIU=yumrfRx)gL!!pSk?8XS9jL{fCm2xx zP3Z$ikF6^l{1OXt8Q7ISi_7t1}}P0VPShJZC;y!h5}`(TB_CcoJ+5 zh-Pn--p#|nglqEC?1X_aqjX+18|N%Pu{8Tg=hC1fyy6=rBR+*I6^0767-WlHb>QUV zr(Gyf-zJb#x<6;t;|Uv%tRoeuJJ$ZTWBIZsR}3T`Rivi18|THZ-G*=#c-ct6pM$qG zr!-SdcfIH7t7sPBM4_NiSZCV5j?-UzDr;$(KKs;L$#lgDM{>kaE?jDAvNtn53Z_jX znk(#jFuW>^k0k9=u|Xz@TXEkhJhDb3&N-D|I}etnYeiiYWLFFvpZ?W2z`4f0)?U<~ za}nQGIK(4-asSxwxjlQKUNS(x@ttXEvpf9h9ndhD z9s;TARy$>+#WnZon+CyI!9jwn1V&e`dpjoZHfNN`b%54&)Pj<`he5r!8+@`>M8Aq; z357o`6;2e#TA*v5F^wi~jH{5GU$ZmB)Ur!x#&?Hrggx6#93mH2a!XcX^9jDth5y*1 zbEUo9N@Q)`ZDMb3vTHb@I%(ft!|(7_W|l)o9FH7{+}V0;^OOKAnRM5Oe`N?2|Cpk% z0#{y?K2n=LP|K%4!a14Xi@Kf76Hzx)UtWD9x{zpsNa;TMo^!>7m2SF}dhGE5@q0az zTo^76^@F0a61Az?Bq0_$w2IP$(BN)jOk+ujj3KiYjT;v?PanmK@{cc@XsoSudlkdG zR-Rr5fuBgVe(7DGemo#qUb>9gm#AoGCTudA*d`Y!?AdB$XgNH=cV7PBHk?qbaH{U{ z>magkqjga^aV(~UI!w&P$@tzoNWuWBhy zBQ0{LuIE_Nh9alkJo*pLB8xKZ3zbGc zSJ#YQR!`bz@Mtz9M7<8DDG7>}$Yzygx52BYH-U9dCZ4DlnjQcRJT7nARE|{Pq=p-| z%@CJ}_koY#o%FoN;!E|Bx!a2hIU~~Id&O>*Z+RoXi9Rr=iDPG|w3;lm1v`GK$vu~Q zobzm%t4O|`-M@abX6QXIBs*+eow=^waji1>IsH9UUyU9uNj^0`tv>b~S-ef9e@~ly zd$bO&CaT(#@LqB_&d@4v2z7+1Wk>e}eiTe*Lyh$QObtwP&l~YxC8e1bwD6P(PSkJq zMf>#znl?lEXUi{bXp;rLz_pzeAnr!H5*2qlo(+H~$aP85UTyELkU-sn5+>VtzdKrf zb<3f08RTXY~E%td%$G-G;SxBIFW zQ__>;E$YwiY^D~Bx${9MnUq>5j~o%MeRr^ABkHnpgv}hqk#7yOA~?@ZoBRU%$C8l? zs9hgpxk;FFvH;(+QhYCZh>i&ah`-oG4r8wvo<$6_mT{$-jX1oGaYladCAkO|XaJWf z9|mp_DTjXVveh&1S80wtc?sPNFa?h0=HsNWjQRb$B8aS;)>!yRQVq>;5^*i}-@lMmXuIN9fuoVo7eUCIrk_2XSK zYqi{2Z30@U+l=o9Fb>KX%IPh|1|BE)Q&E|D4oMb8pWs7CLRGF68Rdb2mAJXal~l;n zEOCzT(z5_*POkMh(`G4yv|TpR8c02N z?^~R#wOU;+cL;H{)5xv$NiuJiw}}@b-Yi&L->9FsL-VA4y?NMj!O6H>If{=P;(?#y zL{%)zd2`P@Qv{Y!x(@oBUviE^_uV12#*V=ovnh5Na5;YdkuQfAB-Ekor>&r>P*jVJ zQ9v`dXd9=CYtS~C9@g3w)_N4ynl*k!MoALOk5?B^2E)jk&wFZEc=OsuaRQzKj^5n{ zRm&Hp&zgBL+Eb^n;0v)%!E9#V7|>EC4*G{-=EvoCA@Za?Dadxs-~Af;S07aG_@9C< zadAKJY}XCS4il`aAgPh_!?Z-hrSYlr7T65WhhHF%R=)02rd*00A8AM@6wut zUotYeL}HmDnSCS$Dp$Doq3(gWyB(c3t}g zW^w5Ojba%%vln%rsh+-UfoeD9-gYbdlAsAGO5ya*b&<<}h+?|QJ7mCEI~Ew_@gJ)6 z^DsHpZFQ(UVFgQDVKGb1m`fnHIDUL~a&yNowpRc{<<>+x0lB=5w&t0pngmHImDp6? z@Ku2jS?D%%j0ByY218lQAx_dD9M5C&Ndo zfLFpv7s5lxoQ=RQezi7&ign)zkuIaBDrL<=m&$y}Ofcob?bH>;tKGZy2knsCJ`L^T zHci#lk;N`$T`p>wYlqp3

3T%1f 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 &DbFy|1PPAD=@ zv1n(GA{I#{_Ud~!nue|xV_1}_lm?W~mgQ;d)X|yuIQ9AGR4+f4s%>je9Wz!(>Abed zFviUVArSNLu<6>U$(T++Ez4^5?NeE7%-uMjFjLd#rE8|elN_DIVNA(^len5`yXS1( zH)O#@edZpSi7N)JzUlh>=D<~N-n#mkQJUf}+!yv=e(>r^y|0`->#=11E#n41yJEz$ z5gxlORFqJ!>V95BQ=sX#VfvJddt7(?^osNP;*U$hT1j2`MU9t^JnvVOn^poh(J?g* z<>OcN8?az?6bXHVL4r_Q&|E+Y3JSv&;S0m_3f2{f{oFOan$U3H@K8q1*yd(^IH*=)!QvC}DzYL zlxEeub{?=WFAUOM^@i=1fayUBnA#wX*47h@xQpJjV9lai8ZApLyb+yhVH{%#+nY0jE`f!0N3J?n8Vb1qI`oXPvuhz$BgtavoW!Yk{)KHhv_R)+GeNvX!US_ zg%z^UavY2dsXoUpq+~VUi0NZx$AB{1&!tww!ClM3xebZfG#@p^;$SCMRrHP!uZH4< z#hl0AWm;tSr(5Q4yL@Ytp8ess`{t6$ad%z&+>_T_`<$?+{l_~;-uc>s?DyIC9>(im z9CzEH*WY}Zt$Q}A<14NWP&b7Cxf}UAj_ZYND4VsQ!cqrIHKR@CE;e1I{U!%?STGIR zng>wNyTTSJ5aun|?v-TPU=nLEiOme8tC&H`80*kGFB{&SgPGp+M@_#WiWL`x2e=3L z$GFG%8{Lim2g!rn1GXo$Cqh=)7F6eu+1woA8tXjUQrlD3oysnCr`77SuC)G*aQ4E< zj;kFvIXDNV*qQ9fBFP$|TI#*F|Wx9 z6IH*{moZu@vZM+?RRS$tx2He>)S0rWGo7-Esf0SC2%V9`MT`hSj0lE?y^P$vjP$$= z@4Q8aC0roYN<^}=kw=wYCNb$G8SA;Rv!z~nl?OW=F$RHj2^XB7Tl$l&)zP;Bj?O

V-#>pO`_ufdZ{6~jf~~=u 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 z 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 H8T|hM^2(}y literal 0 HcmV?d00001 diff --git a/Deliverables/2021-06-09-Planning-Document-Sprint-8.pdf b/Deliverables/2021-06-09-Planning-Document-Sprint-8.pdf new file mode 100644 index 0000000000000000000000000000000000000000..96981dc3c6f51f44a0348e2650f79dfcf1905e5c GIT binary patch literal 150875 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 Stashed changes width: 20%; height:20%; color: #fff; @@ -40,4 +44,10 @@ body { bottom:2%; right: 2%; color: #fff; -} \ No newline at end of file +<<<<<<< Updated upstream +} +======= +} + + +>>>>>>> Stashed changes diff --git a/src/index.html b/src/index.html index 88e8070..19c1b9d 100644 --- a/src/index.html +++ b/src/index.html @@ -1,70 +1,72 @@ + - + 360 Pano Image Viewer - - - - - - - - + + - for (let i = 0; i < sURLVariables.length; i++) { - sParameterName = sURLVariables[i].split('='); + + - if (sParameterName[0].toUpperCase() === sParam.toUpperCase()) { - return typeof sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); - } - } + + + } - "),s===this.scaleBarSteps_-1&&i.push(this.createStepText(s+1,t,!0,e,r)),a="#ffffff"===a?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+i.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,r,n,i){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+i);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=zr(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||25.4/.28,r=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*r*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(As),yO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),mO=0,vO=1,_O=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render})||this).dragListenerKeys_=[],r.currentResolution_=void 0,r.direction_=mO,r.dragging_,r.heightLimit_=0,r.widthLimit_=0,r.startX_,r.startY_,r.thumbSize_=null,r.sliderInitialized_=!1,r.duration_=void 0!==n.duration?n.duration:200;var i=void 0!==n.className?n.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=i+"-thumb ol-unselectable";var a=r.element;return a.className=i+" ol-unselectable ol-control",a.appendChild(o),a.addEventListener(Ua,r.handleDraggerStart_.bind(r),!1),a.addEventListener(za,r.handleDraggerDrag_.bind(r),!1),a.addEventListener(Ba,r.handleDraggerEnd_.bind(r),!1),a.addEventListener(N,r.handleContainerClick_.bind(r),!1),o.addEventListener(N,u,!1),r}return yO(e,t),e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),e&&e.render()},e.prototype.initSlider_=function(){var t=this.element,e=t.offsetWidth,r=t.offsetHeight;if(0===e&&0===r)return this.sliderInitialized_=!1;var n=t.firstElementChild,i=getComputedStyle(n),o=n.offsetWidth+parseFloat(i.marginRight)+parseFloat(i.marginLeft),a=n.offsetHeight+parseFloat(i.marginTop)+parseFloat(i.marginBottom);return this.thumbSize_=[o,a],e>r?(this.direction_=vO,this.widthLimit_=e-o):(this.direction_=mO,this.heightLimit_=r-a),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),r=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(r),i=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:i,duration:this.duration_,easing:io})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){var r=this.handleDraggerDrag_,n=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(Z(i,za,r,this),Z(i,Ba,n,this))}}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,r=t.clientY-this.startY_,n=this.getRelativePosition_(e,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}},e.prototype.handleDraggerEnd_=function(t){this.dragging_&&(this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0)},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),r=this.element.firstElementChild;this.direction_==vO?r.style.left=this.widthLimit_*e+"px":r.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){return Ne(this.direction_===vO?t/this.widthLimit_:e/this.heightLimit_,0,1)},e.prototype.getResolutionForPosition_=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},e.prototype.getPositionForResolution_=function(t){return Ne(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},e.prototype.render=function(t){if(t.frameState&&(this.sliderInitialized_||this.initSlider_())){var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},e}(As),bO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xO=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),target:n.target})||this).extent=n.extent?n.extent:null;var i=void 0!==n.className?n.className:"ol-zoom-extent",o=void 0!==n.label?n.label:"E",a=void 0!==n.tipLabel?n.tipLabel:"Fit to extent",s=document.createElement("button");s.setAttribute("type","button"),s.title=a,s.appendChild("string"==typeof o?document.createTextNode(o):o),s.addEventListener(N,r.handleClick_.bind(r),!1);var l=i+" ol-unselectable ol-control",u=r.element;return u.className=l,u.appendChild(s),r}return bO(e,t),e.prototype.handleClick_=function(t){t.preventDefault(),this.handleZoomToExtent()},e.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),e=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(gi(e))},e}(As),wO={};wO.AssertionError=l||{},wO.Collection=ht||{},wO.Collection.CollectionEvent=ct||{},wO.Disposable=p||{},wO.Feature=gt||{},wO.Feature.createStyleFunction=dt||{},wO.Geolocation=Ii||{},wO.Image=Ki||{},wO.Image.listenImage=Zi||{},wO.ImageBase=Mi||{},wO.ImageCanvas=$i||{},wO.ImageTile=vo||{},wO.Kinetic=_o||{},wO.Map=Wl||{},wO.MapBrowserEvent=Da||{},wO.MapBrowserEventHandler=Wa||{},wO.MapEvent=ja||{},wO.Object=ot||{},wO.Object.ObjectEvent=et||{},wO.Object.getChangeEventType=it||{},wO.Observable=Q||{},wO.Observable.unByKey=J||{},wO.Overlay=su||{},wO.PluggableMap=Ms||{},wO.Tile=lo||{},wO.TileCache=yu||{},wO.TileQueue=es||{},wO.TileQueue.getTilePriority=rs||{},wO.TileRange=_u||{},wO.TileRange.createOrUpdate=vu||{},wO.VectorRenderTile=wu||{},wO.VectorTile=Eu||{},wO.View=Cs||{},wO.View.createCenterConstraint=xs||{},wO.View.createResolutionConstraint=ws||{},wO.View.createRotationConstraint=Ss||{},wO.View.isNoopAnimation=Es||{},wO.array={},wO.array.binarySearch=f||{},wO.array.equals=b||{},wO.array.extend=v||{},wO.array.find=_||{},wO.array.findIndex=x||{},wO.array.includes=g||{},wO.array.isSorted=w||{},wO.array.linearFindNearest=y||{},wO.array.numberSafeCompareFunction=d||{},wO.array.remove=function(t,e){var r=t.indexOf(e),n=r>-1;return n&&t.splice(r,1),n}||{},wO.array.reverseSubArray=m||{},wO.array.stableSort=function(t,e){var r,n=t.length,i=Array(t.length);for(r=0;r3&&!!zn(t,e,r,n)}||{},wO.geom.flat.transform={},wO.geom.flat.transform.rotate=un||{},wO.geom.flat.transform.scale=cn||{},wO.geom.flat.transform.transform2D=ln||{},wO.geom.flat.transform.translate=hn||{},wO.has={},wO.has.DEVICE_PIXEL_RATIO=Vi||{},wO.has.FIREFOX=Gi||{},wO.has.IMAGE_DECODE=Wi||{},wO.has.MAC=Bi||{},wO.has.PASSIVE_EVENT_LISTENERS=qi||{},wO.has.SAFARI=zi||{},wO.has.WEBKIT=Ui||{},wO.has.WORKER_OFFSCREEN_CANVAS=Yi||{},wO.interaction={},wO.interaction.DoubleClickZoom=Zs||{},wO.interaction.DragAndDrop=Ev||{},wO.interaction.DragAndDrop.DragAndDropEvent=Sv||{},wO.interaction.DragBox=El||{},wO.interaction.DragBox.DragBoxEvent=Sl||{},wO.interaction.DragPan=fl||{},wO.interaction.DragRotate=gl||{},wO.interaction.DragRotateAndZoom=Cv||{},wO.interaction.DragZoom=Cl||{},wO.interaction.Draw=Gv||{},wO.interaction.Draw.DrawEvent=Dv||{},wO.interaction.Draw.createBox=function(){return function(t,e,r){var n=Kt([t[0],t[t.length-1]].map((function(t){return rn(t,r)}))),i=[[_e(n),be(n),Oe(n),Ce(n),_e(n)]],o=e;o?o.setCoordinates(i):o=new fi(i);var a=tn();return a&&o.transform(r,a),o}}||{},wO.interaction.Draw.createRegularPolygon=function(t,e){return function(r,n,i){var o=rn(r[0],i),a=rn(r[r.length-1],i),s=Math.sqrt(Rr(o,a)),l=n||yi(new Rv(o),t),u=e;if(!e&&0!==e){var c=a[0]-o[0],h=a[1]-o[1];u=Math.atan2(h,c)}mi(l,o,s,u);var p=tn();return p&&l.transform(i,p),l}}||{},wO.interaction.Extent=qv||{},wO.interaction.Extent.ExtentEvent=Bv||{},wO.interaction.Interaction=qs||{},wO.interaction.Interaction.pan=Ys||{},wO.interaction.Interaction.zoomByDelta=Ws||{},wO.interaction.KeyboardPan=Ml||{},wO.interaction.KeyboardZoom=Al||{},wO.interaction.Modify=r_||{},wO.interaction.Modify.ModifyEvent=Jv||{},wO.interaction.MouseWheelZoom=Dl||{},wO.interaction.PinchRotate=zl||{},wO.interaction.PinchZoom=Bl||{},wO.interaction.Pointer=$s||{},wO.interaction.Pointer.centroid=Hs||{},wO.interaction.Select=s_||{},wO.interaction.Select.SelectEvent=o_||{},wO.interaction.Snap=h_||{},wO.interaction.Translate=m_||{},wO.interaction.Translate.TranslateEvent=y_||{},wO.interaction.defaults=Vl||{},wO.layer={},wO.layer.Base=Wo||{},wO.layer.BaseImage=ad||{},wO.layer.BaseTile=vd||{},wO.layer.BaseVector=wg||{},wO.layer.Graticule=Ny||{},wO.layer.Group=Aa||{},wO.layer.Heatmap=Vy||{},wO.layer.Image=dd||{},wO.layer.Layer=na||{},wO.layer.Layer.inView=ra||{},wO.layer.MapboxVector=yv||{},wO.layer.MapboxVector.getMapboxPath=uv||{},wO.layer.MapboxVector.normalizeGlyphsUrl=hv||{},wO.layer.MapboxVector.normalizeSourceUrl=fv||{},wO.layer.MapboxVector.normalizeSpriteUrl=cv||{},wO.layer.MapboxVector.normalizeStyleUrl=pv||{},wO.layer.Tile=Sd||{},wO.layer.Vector=Iy||{},wO.layer.VectorImage=vv||{},wO.layer.VectorTile=lm||{},wO.layer.WebGLPoints=bv||{},wO.loadingstrategy={},wO.loadingstrategy.all=Fu||{},wO.loadingstrategy.bbox=function(t,e){return[t]}||{},wO.loadingstrategy.tile=function(t){return function(e,r){var n=t.getZForResolution(r),i=t.getTileRangeForExtentAndZ(e,n),o=[],a=[n,0,0];for(a[1]=i.minX;a[1]<=i.maxX;++a[1])for(a[2]=i.minY;a[2]<=i.maxY;++a[2])o.push(t.getTileCoordExtent(a));return o}}||{},wO.math={},wO.math.clamp=Ne||{},wO.math.cosh=De||{},wO.math.lerp=qe||{},wO.math.log2=Ge||{},wO.math.modulo=We||{},wO.math.solveLinearSystem=Be||{},wO.math.squaredDistance=Ue||{},wO.math.squaredSegmentDistance=ze||{},wO.math.toDegrees=Ve||{},wO.math.toRadians=Ye||{},wO.net={},wO.net.jsonp=Au||{},wO.obj={},wO.obj.assign=O||{},wO.obj.clear=P||{},wO.obj.getValues=R||{},wO.obj.isEmpty=I||{},wO.proj={},wO.proj.Projection=je||{},wO.proj.Units=St||{},wO.proj.Units.METERS_PER_UNIT=wt||{},wO.proj.addCommon=sn||{},wO.proj.addCoordinateTransforms=Wr||{},wO.proj.addEquivalentProjections=Ur||{},wO.proj.addEquivalentTransforms=Br||{},wO.proj.addProjection=Nr||{},wO.proj.addProjections=Dr||{},wO.proj.clearAllProjections=function(){lr(),pr()}||{},wO.proj.clearUserProjection=function(){Jr=null}||{},wO.proj.cloneTransform=kr||{},wO.proj.createProjection=Vr||{},wO.proj.createSafeCoordinateTransform=an||{},wO.proj.createTransformFromCoordinateTransform=Yr||{},wO.proj.epsg3857={},wO.proj.epsg3857.EXTENT=Ke||{},wO.proj.epsg3857.HALF_SIZE=Ze||{},wO.proj.epsg3857.MAX_SAFE_Y=$e||{},wO.proj.epsg3857.PROJECTIONS=Qe||{},wO.proj.epsg3857.RADIUS=6378137,wO.proj.epsg3857.WORLD_EXTENT=He||{},wO.proj.epsg3857.fromEPSG4326=tr||{},wO.proj.epsg3857.toEPSG4326=er||{},wO.proj.epsg4326={},wO.proj.epsg4326.EXTENT=nr||{},wO.proj.epsg4326.METERS_PER_UNIT=ir||{},wO.proj.epsg4326.PROJECTIONS=ar||{},wO.proj.epsg4326.RADIUS=6378137,wO.proj.equivalent=Xr||{},wO.proj.fromLonLat=qr||{},wO.proj.fromUserCoordinate=rn||{},wO.proj.fromUserExtent=on||{},wO.proj.get=Gr||{},wO.proj.getPointResolution=zr||{},wO.proj.getTransform=Kr||{},wO.proj.getTransformFromProjections=Zr||{},wO.proj.getUserProjection=tn||{},wO.proj.identityTransform=jr||{},wO.proj.proj4={},wO.proj.proj4.register=function(t){var e,r,n=Object.keys(t.defs),i=n.length;for(e=0;e180)&&(r[0]=We(n+180,360)-180),r}||{},wO.proj.toUserCoordinate=en||{},wO.proj.toUserExtent=nn||{},wO.proj.transform=Hr||{},wO.proj.transformExtent=$r||{},wO.proj.transformWithProjections=function(t,e,r){return Zr(e,r)(t)}||{},wO.proj.transforms={},wO.proj.transforms.add=fr||{},wO.proj.transforms.clear=pr||{},wO.proj.transforms.get=dr||{},wO.proj.transforms.remove=function(t,e){var r=t.getCode(),n=e.getCode(),i=hr[r][n];return delete hr[r][n],I(hr[r])&&delete hr[r],i}||{},wO.proj.useGeographic=function(){Qr("EPSG:4326")}||{},wO.render={},wO.render.Box=ml||{},wO.render.Event=la||{},wO.render.Feature=Cy||{},wO.render.VectorContext=ku||{},wO.render.canvas={},wO.render.canvas.Builder=Mg||{},wO.render.canvas.BuilderGroup=Yg||{},wO.render.canvas.Executor=ey||{},wO.render.canvas.ExecutorGroup=ay||{},wO.render.canvas.ExecutorGroup.getPixelIndexArray=oy||{},wO.render.canvas.ImageBuilder=Ag||{},wO.render.canvas.Immediate=Nu||{},wO.render.canvas.Instruction=Ig||{},wO.render.canvas.Instruction.beginPathInstruction=Pg||{},wO.render.canvas.Instruction.closePathInstruction=Rg||{},wO.render.canvas.Instruction.fillInstruction=Cg||{},wO.render.canvas.Instruction.strokeInstruction=Og||{},wO.render.canvas.LineStringBuilder=jg||{},wO.render.canvas.PolygonBuilder=Dg||{},wO.render.canvas.TextBuilder=Bg||{},wO.render.canvas.checkedFonts=da||{},wO.render.canvas.createTransformString=Ra||{},wO.render.canvas.defaultFillStyle="#000",wO.render.canvas.defaultFont="10px sans-serif",wO.render.canvas.defaultLineCap="round",wO.render.canvas.defaultLineDash=pa||{},wO.render.canvas.defaultLineDashOffset={},wO.render.canvas.defaultLineJoin="round",wO.render.canvas.defaultLineWidth=1,wO.render.canvas.defaultMiterLimit=10,wO.render.canvas.defaultPadding=fa||{},wO.render.canvas.defaultStrokeStyle="#000",wO.render.canvas.defaultTextAlign="center",wO.render.canvas.defaultTextBaseline="middle",wO.render.canvas.drawImageOrLabel=Oa||{},wO.render.canvas.hitdetect={},wO.render.canvas.hitdetect.createHitDetectionImageData=sy||{},wO.render.canvas.hitdetect.hitDetect=ly||{},wO.render.canvas.labelCache=ga||{},wO.render.canvas.measureAndCacheTextWidth=Ea||{},wO.render.canvas.measureTextHeight=xa||{},wO.render.canvas.measureTextWidth=Sa||{},wO.render.canvas.measureTextWidths=Ta||{},wO.render.canvas.registerFont=ba||{},wO.render.canvas.rotateAtOffset=Ca||{},wO.render.canvas.textHeights=_a||{},wO.render.getRenderPixel=function(t,e){var r=e.slice(0);return It(t.inversePixelTransform.slice(),r),r}||{},wO.render.getVectorContext=Ku||{},wO.render.toContext=function(t,e){var r=t.canvas,n=e||{},i=n.pixelRatio||Vi,o=n.size;o&&(r.width=o[0]*i,r.height=o[1]*i,r.style.width=o[0]+"px",r.style.height=o[1]+"px");var a=[0,0,r.width,r.height],s=Mt([1,0,0,1,0,0],i,i);return new Nu(t,i,a,s,0)}||{},wO.renderer={},wO.renderer.Composite=La||{},wO.renderer.Layer=ld||{},wO.renderer.Map=aa||{},wO.renderer.canvas={},wO.renderer.canvas.ImageLayer=pd||{},wO.renderer.canvas.Layer=cd||{},wO.renderer.canvas.TileLayer=xd||{},wO.renderer.canvas.VectorImageLayer=py||{},wO.renderer.canvas.VectorLayer=cy||{},wO.renderer.canvas.VectorTileLayer=_y||{},wO.renderer.vector={},wO.renderer.vector.defaultOrder=Wu||{},wO.renderer.vector.getSquaredTolerance=qu||{},wO.renderer.vector.getTolerance=Xu||{},wO.renderer.vector.renderFeature=Zu||{},wO.renderer.webgl={},wO.renderer.webgl.Layer=_g||{},wO.renderer.webgl.Layer.colorDecodeId=vg||{},wO.renderer.webgl.Layer.colorEncodeId=mg||{},wO.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t}||{},wO.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,e,r,n,i,o){var a=3+i,s=t[e+0],l=t[e+1],u=dg;u.length=i;for(var c=0;c1?x(r.TileMatrixSetLink,"projection"in e?function(t,r,n){var o=_(i,(function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,a=Gr(o),s=Gr(e.projection);return a&&s?Xr(a,s):o==e.projection}:function(t,r,n){return t.TileMatrixSet==e.matrixSet}):0)<0&&(n=0);var o=r.TileMatrixSetLink[n].TileMatrixSet,a=r.TileMatrixSetLink[n].TileMatrixSetLimits,s=r.Format[0];"format"in e&&(s=e.format),(n=x(r.Style,(function(t,r,n){return"style"in e?t.Title==e.style:t.isDefault})))<0&&(n=0);var l=r.Style[n].Identifier,u={};"Dimension"in r&&r.Dimension.forEach((function(t,e,r){var n=t.Identifier,i=t.Default;void 0===i&&(i=t.Value[0]),u[n]=i}));var c,h=_(t.Contents.TileMatrixSet,(function(t,e,r){return t.Identifier==o})),p=h.SupportedCRS;if(p&&(c=Gr(p)),"projection"in e){var f=Gr(e.projection);f&&(c&&!Xr(f,c)||(c=f))}var d="ne"==c.getAxisOrientation().substr(0,2),y=h.TileMatrix[0],m={MinTileCol:0,MinTileRow:0,MaxTileCol:y.MatrixWidth-1,MaxTileRow:y.MatrixHeight-1};if(a){m=a[a.length-1];var v=_(h.TileMatrix,(function(t){return t.Identifier===m.TileMatrix||h.Identifier+":"+t.Identifier===m.TileMatrix}));v&&(y=v)}var b=28e-5*y.ScaleDenominator/c.getMetersPerUnit(),w=d?[y.TopLeftCorner[1],y.TopLeftCorner[0]]:y.TopLeftCorner,S=y.TileWidth*b,E=y.TileHeight*b,T=[w[0]+S*m.MinTileCol,w[1]-E*(1+m.MaxTileRow),w[0]+S*(1+m.MaxTileCol),w[1]-E*m.MinTileRow];null===c.getExtent()&&c.setExtent(T);var C=Kh(h,T,a),O=[],P=e.requestEncoding;if(P=void 0!==P?P:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var R=t.OperationsMetadata.GetTile.DCP.HTTP.Get,I=0,L=R.length;I=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function d(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return z(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return U(t).length;default:if(n)return z(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return O(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var o,a=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,l/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var c=-1;for(o=r;os&&(r=s-l),o=r;o>=0;o--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},l.prototype.compare=function(t,e,r,n,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r),h=0;hi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return _(this,t,e,r);case"utf8":case"utf-8":return b(this,t,e,r);case"ascii":return x(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function O(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,n,i,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function A(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function k(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(t,e,r,n,o){return o||k(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,o){return o||k(t,0,r,8),i.write(t,e,r,n,52,8),r+8}l.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},l.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},l.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},l.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):A(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+r},l.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},l.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):A(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,r){return j(this,t,e,!0,r)},l.prototype.writeFloatBE=function(t,e,r){return j(this,t,e,!1,r)},l.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},l.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},l.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function U(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(D,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function B(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(4))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=u(t),a=n[0],s=n[1],l=new o(function(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,h=s>0?a-4:a;for(r=0;r>16&255,l[c++]=e>>8&255,l[c++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[c++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[c++]=e>>8&255,l[c++]=255&e);return l},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],a=0,s=r-i;as?s:a+16383));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var i,o,a=[],s=e;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";function n(){return function(){throw new Error("Unimplemented abstract method.")}()}r.r(e);var i=0;function o(t){return t.ol_uid||(t.ol_uid=String(++i))}var a,s=(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),l=function(t){function e(e){var r=this,n="Assertion failed. See https://openlayers.org/en/"+("v"+"6.5.0".split("-")[0])+"/doc/errors/#"+e+" for details.";return(r=t.call(this,n)||this).code=e,r.name="AssertionError",r.message=n,r}return s(e,t),e}(Error);function u(t){t.stopPropagation()}var c=function(){function t(t){this.propagationStopped,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.propagationStopped=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),h="propertychange",p=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function f(t,e,r){for(var n,i,o=r||d,a=0,s=t.length,l=!1;a>1)],e))<0?a=n+1:(s=n,l=!i);return l?a:~a}function d(t,e){return t>e?1:t=0}function y(t,e,r){var n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;var i=void 0;if(r>0){for(i=1;i>>0,i=0;i0||r&&0===o)}))}function S(){return!0}function E(){return!1}function T(){}function C(t){var e,r,n,i=!1;return function(){var o=Array.prototype.slice.call(arguments);return i&&this===n&&b(o,r)||(i=!0,n=this,r=o,e=t.apply(this,arguments)),e}}var O="function"==typeof Object.assign?Object.assign:function(t,e){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var r=Object(t),n=1,i=arguments.length;n0)},e.prototype.removeEventListener=function(t,e){var r=this.listeners_&&this.listeners_[t];if(r){var n=r.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(r[n]=T,++this.pendingRemovals_[t]):(r.splice(n,1),0===r.length&&delete this.listeners_[t]))}},e}(p),F="change",A="error",k="clear",j="contextmenu",N="click",D="dblclick",G="dragenter",z="dragover",U="drop",B="keydown",V="keypress",Y="load",W="resize",q="touchmove",X="wheel";function Z(t,e,r,n,i){if(n&&n!==t&&(r=r.bind(n)),i){var o=r;r=function(){t.removeEventListener(e,r),o.apply(this,arguments)}}var a={target:t,type:e,listener:r};return t.addEventListener(e,r),a}function K(t,e,r,n){return Z(t,e,r,n,!0)}function H(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),P(t))}var $=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function J(t){if(Array.isArray(t))for(var e=0,r=t.length;e0;)this.pop()},e.prototype.extend=function(t){for(var e=0,r=t.length;ei&&(l|=qt),so&&(l|=Wt),l===Vt&&(l=Yt),l}function ne(){return[1/0,1/0,-1/0,-1/0]}function ie(t,e,r,n,i){return i?(i[0]=t,i[1]=e,i[2]=r,i[3]=n,i):[t,e,r,n]}function oe(t){return ie(1/0,1/0,-1/0,-1/0,t)}function ae(t,e){var r=t[0],n=t[1];return ie(r,n,r,n,e)}function se(t,e){return fe(oe(e),t)}function le(t,e,r,n,i){return de(oe(i),t,e,r,n)}function ue(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function ce(t,e,r){return Math.abs(t[0]-e[0])t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function pe(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function fe(t,e){for(var r=0,n=e.length;re[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Ie(t){return t[2]=a&&g<=l),n||!(o&qt)||i&qt||(n=(y=f-(p-l)*d)>=s&&y<=u),n||!(o&Xt)||i&Xt||(n=(g=p-(f-s)/d)>=a&&g<=l),n||!(o&Zt)||i&Zt||(n=(y=f-(p-a)*d)>=s&&y<=u)}return n}function Ae(t,e,r,n){var i=[];if(n>1)for(var o=t[2]-t[0],a=t[3]-t[1],s=0;s=r[2])){var i=Pe(r),o=Math.floor((n[0]-r[0])/i)*i;t[0]-=o,t[2]-=o}return t}var je=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||wt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Ne(t,e,r){return Math.min(Math.max(t,e),r)}var De="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Ge="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function ze(t,e,r,n,i,o){var a=i-r,s=o-n;if(0!==a||0!==s){var l=((t-r)*a+(e-n)*s)/(a*a+s*s);l>1?(r=i,n=o):l>0&&(r+=a*l,n+=s*l)}return Ue(t,e,r,n)}function Ue(t,e,r,n){var i=r-t,o=n-e;return i*i+o*o}function Be(t){for(var e=t.length,r=0;ri&&(i=a,n=o)}if(0===i)return null;var s=t[n];t[n]=t[r],t[r]=s;for(var l=r+1;l=0;p--){h[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*h[p]}return h}function Ve(t){return 180*t/Math.PI}function Ye(t){return t*Math.PI/180}function We(t,e){var r=t%e;return r*e<0?r+e:r}function qe(t,e,r){return t+r*(e-t)}var Xe=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ze=6378137*Math.PI,Ke=[-Ze,-Ze,Ze,Ze],He=[-180,-85,180,85],$e=6378137*Math.log(Math.tan(Math.PI/2)),Je=function(t){function e(e){return t.call(this,{code:e,units:St.METERS,extent:Ke,global:!0,worldExtent:He,getPointResolution:function(t,e){return t/De(e[1]/6378137)}})||this}return Xe(e,t),e}(je),Qe=[new Je("EPSG:3857"),new Je("EPSG:102100"),new Je("EPSG:102113"),new Je("EPSG:900913"),new Je("http://www.opengis.net/gml/srs/epsg.xml#3857")];function tr(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;a$e?s=$e:s<-$e&&(s=-$e),o[a+1]=s}return o}function er(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;ae?n:new Array(1+e-i).join("0")+n}function br(t,e){for(var r=(""+t).split("."),n=(""+e).split("."),i=0;ia)return 1;if(a>o)return-1}return 0}function xr(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function wr(t,e){var r=e.getRadius(),n=e.getCenter(),i=n[0],o=n[1],a=t[0]-i,s=t[1]-o;0===a&&0===s&&(a=1);var l=Math.sqrt(a*a+s*s);return[i+r*a/l,o+r*s/l]}function Sr(t,e){var r,n,i=t[0],o=t[1],a=e[0],s=e[1],l=a[0],u=a[1],c=s[0],h=s[1],p=c-l,f=h-u,d=0===p&&0===f?0:(p*(i-l)+f*(o-u))/(p*p+f*f||0);return d<=0?(r=l,n=u):d>=1?(r=c,n=h):(r=l+d*p,n=u+d*f),[r,n]}function Er(t,e,r){var n=We(e+180,360)-180,i=Math.abs(3600*n),o=r||0,a=Math.pow(10,o),s=Math.floor(i/3600),l=Math.floor((i-3600*s)/60),u=i-3600*s-60*l;return(u=Math.ceil(u*a)/a)>=60&&(u=0,l+=1),l>=60&&(l=0,s+=1),s+"° "+_r(l,2)+"′ "+_r(u,2,o)+"″"+(0==n?"":" "+t.charAt(n<0?1:0))}function Tr(t,e,r){return t?e.replace("{x}",t[0].toFixed(r)).replace("{y}",t[1].toFixed(r)):""}function Cr(t,e){for(var r=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){r=!1;break}return r}function Or(t,e){var r=Math.cos(e),n=Math.sin(e),i=t[0]*r-t[1]*n,o=t[1]*r+t[0]*n;return t[0]=i,t[1]=o,t}function Pr(t,e){return t[0]*=e,t[1]*=e,t}function Rr(t,e){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}function Ir(t,e){return Math.sqrt(Rr(t,e))}function Lr(t,e){return Rr(t,Sr(t,e))}function Mr(t,e){return Tr(t,"{x}, {y}",e)}function Fr(t,e){if(e.canWrapX()){var r=Pe(e.getExtent()),n=Ar(t,e,r);n&&(t[0]-=n*r)}return t}function Ar(t,e,r){var n=e.getExtent(),i=0;if(e.canWrapX()&&(t[0]n[2])){var o=r||Pe(n);i=Math.floor((t[0]-n[0])/o)}return i}function kr(t,e,r){var n;if(void 0!==e){for(var i=0,o=t.length;i=2;--u)a[s+u]=e[s+u]}return a}}function Wr(t,e,r,n){var i=Gr(t),o=Gr(e);fr(i,o,Yr(r)),fr(o,i,Yr(n))}function qr(t,e){return Hr(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")}function Xr(t,e){if(t===e)return!0;var r=t.getUnits()===e.getUnits();return(t.getCode()===e.getCode()||Zr(t,e)===kr)&&r}function Zr(t,e){var r=dr(t.getCode(),e.getCode());return r||(r=jr),r}function Kr(t,e){return Zr(Gr(t),Gr(e))}function Hr(t,e,r){return Kr(e,r)(t,void 0,t.length)}function $r(t,e,r,n){return Ae(t,Kr(e,r),void 0,n)}var Jr=null;function Qr(t){Jr=Gr(t)}function tn(){return Jr}function en(t,e){return Jr?Hr(t,e,Jr):t}function rn(t,e){return Jr?Hr(t,Jr,e):t}function nn(t,e){return Jr?$r(t,e,Jr):t}function on(t,e){return Jr?$r(t,Jr,e):t}function an(t,e,r){return function(n){var i,o,a=n[0],s=n[1];if(t.canWrapX()){var l=t.getExtent(),u=Pe(l);(o=Ar(n,t,u))&&(a-=o*u),a=Ne(a,l[0],l[2]),s=Ne(s,l[1],l[3]),i=r([a,s])}else i=r(n);return o&&e.canWrapX()&&(i[0]+=o*Pe(e.getExtent())),i}}function sn(){Ur(Qe),Ur(ar),Br(ar,Qe,tr,er)}function ln(t,e,r,n,i,o){for(var a=o||[],s=0,l=e;l1)s=r;else{if(p>0){for(var f=0;fi&&(i=u),o=s,a=l}return i}function xn(t,e,r,n,i){for(var o=0,a=r.length;o0;){for(var h=u.pop(),p=u.pop(),f=0,d=t[p],g=t[p+1],y=t[h],m=t[h+1],v=p+n;vf&&(c=v,f=_)}f>i&&(l[(c-e)/n]=1,p+ni&&(o[a++]=u,o[a++]=c,s=u,l=c);return u==s&&c==l||(o[a++]=u,o[a++]=c),a}function Fn(t,e){return e*Math.round(t/e)}function An(t,e,r,n,i,o,a){if(e==r)return a;var s,l,u=Fn(t[e],i),c=Fn(t[e+1],i);e+=n,o[a++]=u,o[a++]=c;do{if(s=Fn(t[e],i),l=Fn(t[e+1],i),(e+=n)==r)return o[a++]=s,o[a++]=l,a}while(s==u&&l==c);for(;e0&&g>f)&&(d<0&&y0&&y>d)?(s=h,l=p):(o[a++]=s,o[a++]=l,u=s,c=l,s=h,l=p)}}return o[a++]=s,o[a++]=l,a}function kn(t,e,r,n,i,o,a,s){for(var l=0,u=r.length;lo&&(u-s)*(o-l)-(i-s)*(c-l)>0&&a++:c<=o&&(u-s)*(o-l)-(i-s)*(c-l)<0&&a--,s=u,l=c}return 0!==a}function Kn(t,e,r,n,i,o){if(0===r.length)return!1;if(!Zn(t,e,r[0],n,i,o))return!1;for(var a=1,s=r.length;ax&&Kn(t,e,r,n,u=(c+h)/2,g)&&(b=u,x=w),c=h}return isNaN(b)&&(b=i[o]),a?(a.push(b,g,x),a):[b,g,x]}function Jn(t,e,r,n,i){for(var o=[],a=0,s=r.length;a=i[0]&&o[2]<=i[2]||(o[1]>=i[1]&&o[3]<=i[3]||Qn(t,e,r,n,(function(t,e){return Fe(i,t,e)})))))}function ei(t,e,r,n,i){for(var o=0,a=r.length;o0}function si(t,e,r,n,i){for(var o=void 0!==i&&i,a=0,s=r.length;at)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){n()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var r=this.transitionStarts_[t];if(r){if(-1===r)return 1}else r=e,this.transitionStarts_[t]=r;var n=e-r+1e3/60;return n>=this.transition_?1:no(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(M);function uo(t,e,r){var n=r&&r.length?r.shift():Yi?new OffscreenCanvas(t||300,e||300):document.createElement("canvas");return t&&(n.width=t),e&&(n.height=e),n.getContext("2d")}function co(t){var e=t.offsetWidth,r=getComputedStyle(t);return e+=parseInt(r.marginLeft,10)+parseInt(r.marginRight,10)}function ho(t){var e=t.offsetHeight,r=getComputedStyle(t);return e+=parseInt(r.marginTop,10)+parseInt(r.marginBottom,10)}function po(t,e){var r=e.parentNode;r&&r.replaceChild(t,e)}function fo(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function go(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function yo(t,e){for(var r=t.childNodes,n=0;;++n){var i=r[n],o=e[n];if(!i&&!o)break;i!==o&&(i?o?t.insertBefore(o,i):(t.removeChild(i),--n):t.appendChild(o))}}var mo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var vo=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.crossOrigin_=i,s.src_=n,s.key=n,s.image_=new Image,null!==i&&(s.image_.crossOrigin=i),s.unlisten_=null,s.tileLoadFunction_=o,s}return mo(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){var t;this.state=eo,this.unlistenImage_(),this.image_=((t=uo(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=to:this.state=ro,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==eo&&(this.state=Ji,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Ji&&(this.state=Qi,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(lo),_o=function(){function t(t,e,r){this.decay_=t,this.minVelocity_=e,this.delay_=r,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[r+2]>t;)r-=3;var n=this.points_[e+2]-this.points_[r+2];if(n<1e3/60)return!1;var i=this.points_[e]-this.points_[r],o=this.points_[e+1]-this.points_[r+1];return this.angle_=Math.atan2(o,i),this.initialVelocity_=Math.sqrt(i*i+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),bo=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,xo=/^([a-z]*)$|^hsla?\(.*\)$/i;function wo(t){return"string"==typeof t?t:Ro(t)}function So(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var r=getComputedStyle(e).color;return document.body.removeChild(e),r}return""}var Eo,To,Co=(Eo={},To=0,function(t){var e;if(Eo.hasOwnProperty(t))e=Eo[t];else{if(To>=1024){var r=0;for(var n in Eo)0==(3&r++)&&(delete Eo[n],--To)}e=function(t){var e,r,n,i,o;if(xo.exec(t)&&(t=So(t)),bo.exec(t)){var a=t.length-1,s=void 0;s=a<=4?1:2;var l=4===a||8===a;e=parseInt(t.substr(1+0*s,s),16),r=parseInt(t.substr(1+1*s,s),16),n=parseInt(t.substr(1+2*s,s),16),i=l?parseInt(t.substr(1+3*s,s),16):255,1==s&&(e=(e<<4)+e,r=(r<<4)+r,n=(n<<4)+n,l&&(i=(i<<4)+i)),o=[e,r,n,i/255]}else 0==t.indexOf("rgba(")?Po(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Po(o)):pt(!1,14);return o}(t),Eo[t]=e,++To}return e});function Oo(t){return Array.isArray(t)?t:Co(t)}function Po(t){return t[0]=Ne(t[0]+.5|0,0,255),t[1]=Ne(t[1]+.5|0,0,255),t[2]=Ne(t[2]+.5|0,0,255),t[3]=Ne(t[3],0,1),t}function Ro(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var r=t[1];r!=(0|r)&&(r=r+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+r+","+n+","+(void 0===t[3]?1:t[3])+")"}function Io(t){return xo.test(t)&&(t=So(t)),bo.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Lo=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var r=this.cache_[e];0!=(3&t++)||r.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,r){var n=Mo(t,e,r);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,r,n){var i=Mo(t,e,r);this.cache_[i]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function Mo(t,e,r){return e+":"+t+":"+(r?wo(r):"null")}var Fo=Lo,Ao=new Lo,ko="opacity",jo="visible",No="extent",Do="zIndex",Go="maxResolution",zo="minResolution",Uo="maxZoom",Bo="minZoom",Vo="source",Yo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wo=function(t){function e(e){var r=t.call(this)||this,n=O({},e);return n[ko]=void 0!==e.opacity?e.opacity:1,pt("number"==typeof n[ko],64),n[jo]=void 0===e.visible||e.visible,n[Do]=e.zIndex,n[Go]=void 0!==e.maxResolution?e.maxResolution:1/0,n[zo]=void 0!==e.minResolution?e.minResolution:0,n[Bo]=void 0!==e.minZoom?e.minZoom:-1/0,n[Uo]=void 0!==e.maxZoom?e.maxZoom:1/0,r.className_=void 0!==n.className?e.className:"ol-layer",delete n.className,r.setProperties(n),r.state_=null,r}return Yo(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},r=this.getZIndex();return e.opacity=Ne(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==r?r:!1===e.managed?1/0:0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return n()},e.prototype.getLayerStatesArray=function(t){return n()},e.prototype.getExtent=function(){return this.get(No)},e.prototype.getMaxResolution=function(){return this.get(Go)},e.prototype.getMinResolution=function(){return this.get(zo)},e.prototype.getMinZoom=function(){return this.get(Bo)},e.prototype.getMaxZoom=function(){return this.get(Uo)},e.prototype.getOpacity=function(){return this.get(ko)},e.prototype.getSourceState=function(){return n()},e.prototype.getVisible=function(){return this.get(jo)},e.prototype.getZIndex=function(){return this.get(Do)},e.prototype.setExtent=function(t){this.set(No,t)},e.prototype.setMaxResolution=function(t){this.set(Go,t)},e.prototype.setMinResolution=function(t){this.set(zo,t)},e.prototype.setMaxZoom=function(t){this.set(Uo,t)},e.prototype.setMinZoom=function(t){this.set(Bo,t)},e.prototype.setOpacity=function(t){pt("number"==typeof t,64),this.set(ko,t)},e.prototype.setVisible=function(t){this.set(jo,t)},e.prototype.setZIndex=function(t){this.set(Do,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(ot),qo="prerender",Xo="postrender",Zo="precompose",Ko="postcompose",Ho="rendercomplete",$o="undefined",Jo="loading",Qo="ready",ta="error",ea=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ra(t,e){if(!t.visible)return!1;var r=e.resolution;if(r=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var na=function(t){function e(e){var r=this,n=O({},e);delete n.source,(r=t.call(this,n)||this).mapPrecomposeKey_=null,r.mapRenderKey_=null,r.sourceChangeKey_=null,r.renderer_=null,e.render&&(r.render=e.render),e.map&&r.setMap(e.map),r.addEventListener(it(Vo),r.handleSourcePropertyChange_);var i=e.source?e.source:null;return r.setSource(i),r}return ea(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Vo)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():$o},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(H(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=Z(t,F,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var r=this.getRenderer();if(r.prepareFrame(t))return r.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(H(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(H(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=Z(t,Zo,(function(t){var e=t.frameState.layerStatesArray,r=this.getLayerState(!1);pt(!e.some((function(t){return t.layer===r.layer})),67),e.push(r)}),this),this.mapRenderKey_=Z(this,F,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Vo,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Wo),ia=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function oa(t,e){Ao.expire()}var aa=function(t){function e(e){var r=t.call(this)||this;return r.map_=e,r}return ia(e,t),e.prototype.dispatchRenderEvent=function(t,e){n()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,r=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;kt(r,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),jt(n,r)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i,o,a,s){var l,u=e.viewState;function c(t,e,r,n){return i.call(o,e,t?r:null,n)}var h=u.projection,p=Fr(t.slice(),h),f=[[0,0]];if(h.canWrapX()&&n){var d=Pe(h.getExtent());f.push([-d,0],[d,0])}for(var g=e.layerStatesArray,y=g.length,m=[],v=[],_=0;_=0;--b){var x=g[b],w=x.layer;if(w.hasRenderer()&&ra(x,u)&&a.call(s,w)){var S=w.getRenderer(),E=w.getSource();if(S&&E){var T=E.getWrapX()?p:t,C=c.bind(null,x.managed);v[0]=T[0]+f[_][0],v[1]=T[1]+f[_][1],l=S.forEachFeatureAtCoordinate(v,e,r,C,m)}if(l)return l}}if(0!==m.length){var O=1/m.length;return m.forEach((function(t,e){return t.distanceSq+=e*O})),m.sort((function(t,e){return t.distanceSq-e.distanceSq})),m.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,r,i,o){return n()},e.prototype.hasFeatureAtCoordinate=function(t,e,r,n,i,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,r,n,S,this,i,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){n()},e.prototype.scheduleExpireIconCache=function(t){Ao.canExpireCache()&&t.postRenderFunctions.push(oa)},e}(p),sa=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),la=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.inversePixelTransform=r,o.frameState=n,o.context=i,o}return sa(e,t),e}(c),ua=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),ca=["style","variant","weight","size","lineHeight","family"],ha=function(t){var e=t.match(ua);if(!e)return null;for(var r={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},n=0,i=ca.length;n=0;--o)n[o].renderDeclutter(t);yo(this.element_,this.children_),this.dispatchRenderEvent(Ko,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,r,n,i){for(var o=e.viewState,a=e.layerStatesArray,s=a.length-1;s>=0;--s){var l=a[s],u=l.layer;if(u.hasRenderer()&&ra(l,o)&&i(u)){var c=u.getRenderer().getDataAtPixel(t,e,r);if(c){var h=n(u,c);if(h)return h}}}},e}(aa),Ma=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fa="layers",Aa=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.layers;var o=n.layers;return(r=t.call(this,i)||this).layersListenerKeys_=[],r.listenerKeys_={},r.addEventListener(it(Fa),r.handleLayersChanged_),o?Array.isArray(o)?o=new ht(o.slice(),{unique:!0}):pt("function"==typeof o.getArray,43):o=new ht(void 0,{unique:!0}),r.setLayers(o),r}return Ma(e,t),e.prototype.handleLayerChange_=function(){this.changed()},e.prototype.handleLayersChanged_=function(){this.layersListenerKeys_.forEach(H),this.layersListenerKeys_.length=0;var t=this.getLayers();for(var e in this.layersListenerKeys_.push(Z(t,at,this.handleLayersAdd_,this),Z(t,st,this.handleLayersRemove_,this)),this.listenerKeys_)this.listenerKeys_[e].forEach(H);P(this.listenerKeys_);for(var r=t.getArray(),n=0,i=r.length;nthis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(H(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(q,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(H(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(M),qa="postrender",Xa="movestart",Za="moveend",Ka="layergroup",Ha="size",$a="target",Ja="view",Qa=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,P(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,r=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(r);return delete this.queuedElements_[n],r},t.prototype.enqueue=function(t){pt(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=1/0&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,r=this.priorities_,n=e.length,i=e[t],o=r[t],a=t;t>1;){var s=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),u=lt;){var a=this.getParentIndex_(e);if(!(n[a]>o))break;r[e]=r[a],n[e]=n[a],e=a}r[e]=i,n[e]=o},t.prototype.reprioritize=function(){var t,e,r,n=this.priorityFunction_,i=this.elements_,o=this.priorities_,a=0,s=i.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),r.getState()!==Ji||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++i,r.load())},e}(Qa);function rs(t,e,r,n,i){if(!t||!(r in t.wantedTiles))return 1/0;if(!t.wantedTiles[r][e.getKey()])return 1/0;var o=t.viewState.center,a=n[0]-o[0],s=n[1]-o[1];return 65536*Math.log(i)+Math.sqrt(a*a+s*s)/i}var ns=0,is=1,os="center",as="resolution",ss="rotation";function ls(t,e,r){return function(n,i,o,a,s){if(n){var l=e?0:o[0]*i,u=e?0:o[1]*i,c=s?s[0]:0,h=s?s[1]:0,p=t[0]+l/2+c,f=t[2]-l/2+c,d=t[1]+u/2+h,g=t[3]-u/2+h;p>f&&(f=p=(f+p)/2),d>g&&(g=d=(g+d)/2);var y=Ne(n[0],p,f),m=Ne(n[1],d,g),v=30*i;return a&&r&&(y+=-v*Math.log(1+Math.max(0,p-n[0])/v)+v*Math.log(1+Math.max(0,n[0]-f)/v),m+=-v*Math.log(1+Math.max(0,d-n[1])/v)+v*Math.log(1+Math.max(0,n[1]-g)/v)),[y,m]}}}function us(t){return t}function cs(t,e,r,n){var i=Pe(e)/r[0],o=Ee(e)/r[1];return n?Math.min(t,Math.max(i,o)):Math.min(t,Math.min(i,o))}function hs(t,e,r){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,r&&(n=Math.max(n,r),n/=Math.log(1+50*Math.max(0,r/t-1))/50+1),Ne(n,r/2,2*e)}function ps(t,e,r,n){return function(i,o,a,s){if(void 0!==i){var l=t[0],u=t[t.length-1],c=r?cs(l,r,a,n):l;if(s)return void 0===e||e?hs(i,c,u):Ne(i,u,c);var h=Math.min(c,i),p=Math.floor(y(t,h,o));return t[p]>c&&p1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r),!this.isDef()){var n=arguments[r-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&bs(e,!0))}for(var i=Date.now(),o=this.targetCenter_.slice(),a=this.targetResolution_,s=this.targetRotation_,l=[],u=0;u0},e.prototype.getInteracting=function(){return this.hints_[is]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(ns,-this.hints_[ns]);for(var e=0,r=this.animations_.length;e=0;--r){for(var n=this.animations_[r],i=!0,o=0,a=n.length;o0?l/s.duration:1;u>=1?(s.complete=!0,u=1):i=!1;var c=s.easing(u);if(s.sourceCenter){var h=s.sourceCenter[0],p=s.sourceCenter[1],f=h+c*(s.targetCenter[0]-h),d=p+c*(s.targetCenter[1]-p);this.targetCenter_=[f,d]}if(s.sourceResolution&&s.targetResolution){var g=1===c?s.targetResolution:s.sourceResolution+c*(s.targetResolution-s.sourceResolution);if(s.anchor){var y=this.getViewportSize_(this.getRotation()),m=this.constraints_.resolution(g,0,y,!0);this.targetCenter_=this.calculateCenterZoom(m,s.anchor)}this.targetResolution_=g,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){var v=1===c?We(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+c*(s.targetRotation-s.sourceRotation);if(s.anchor){var _=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(_,s.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!s.complete)break}}if(i){this.animations_[r]=null,this.setHint(ns,-1);var b=n[0].callback;b&&bs(b,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var r,n=this.getCenterInternal();return void 0!==n&&(Or(r=[n[0]-e[0],n[1]-e[1]],t-this.getRotation()),xr(r,e)),r},e.prototype.calculateCenterZoom=function(t,e){var r,n=this.getCenterInternal(),i=this.getResolution();void 0!==n&&void 0!==i&&(r=[e[0]-t*(e[0]-n[0])/i,e[1]-t*(e[1]-n[1])/i]);return r},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var r=e[0],n=e[1];return[Math.abs(r*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(r*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?en(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(os)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return nn(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),r=this.getCenterInternal();pt(r,1);var n=this.getResolution();pt(void 0!==n,2);var i=this.getRotation();return pt(void 0!==i,3),Se(r,n,i,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(as)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(on(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var r=e||this.getViewportSize_(),n=Pe(t)/r[0],i=Ee(t)/r[1];return Math.max(n,i)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/Math.log(e);return function(t){return r/Math.pow(e,t*i)}},e.prototype.getRotation=function(){return this.get(ss)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/e;return function(t){return Math.log(r/t)/e/i}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),r=this.padding;return r&&(e=[e[0]-r[1]-r[3],e[1]-r[0]-r[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),r=this.getRotation(),n=this.getCenterInternal(),i=this.padding;if(i){var o=this.getViewportSizeMinusPadding_();n=Ts(n,this.getViewportSize_(),[o[0]/2+i[3],o[1]/2+i[0]],e,r)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,rotation:r,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,r,n=this.minZoom_||0;if(this.resolutions_){var i=y(this.resolutions_,t,1);n=i,e=this.resolutions_[i],r=i==this.resolutions_.length-1?2:e/this.resolutions_[i+1]}else e=this.maxResolution_,r=this.zoomFactor_;return n+Math.log(e/t)/Math.log(r)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Ne(Math.floor(t),0,this.resolutions_.length-2),r=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(r,Ne(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var r;if(pt(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))pt(!Ie(t),25),r=gi(n=on(t,this.getProjection()));else if(t.getType()===bt.CIRCLE){var n;(r=gi(n=on(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),xe(n))}else{var i=tn();r=i?t.clone().transform(i,this.getProjection()):t}this.fitInternal(r,e)},e.prototype.fitInternal=function(t,e){var r=e||{},n=r.size;n||(n=this.getViewportSizeMinusPadding_());var i,o=void 0!==r.padding?r.padding:[0,0,0,0],a=void 0!==r.nearest&&r.nearest;i=void 0!==r.minResolution?r.minResolution:void 0!==r.maxZoom?this.getResolutionForZoom(r.maxZoom):0;for(var s=t.getFlatCoordinates(),l=this.getRotation(),u=Math.cos(-l),c=Math.sin(-l),h=1/0,p=1/0,f=-1/0,d=-1/0,g=t.getStride(),y=0,m=s.length;y0&&t[1]>0}function Rs(t,e,r){return void 0===r&&(r=[0,0]),r[0]=t[0]*e+.5|0,r[1]=t[1]*e+.5|0,r}function Is(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}var Ls=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Ms=function(t){function e(e){var r=t.call(this)||this,n=function(t){var e=null;void 0!==t.keyboardEventTarget&&(e="string"==typeof t.keyboardEventTarget?document.getElementById(t.keyboardEventTarget):t.keyboardEventTarget);var r,n,i,o={},a=t.layers&&"function"==typeof t.layers.getLayers?t.layers:new Aa({layers:t.layers});o[Ka]=a,o[$a]=t.target,o[Ja]=void 0!==t.view?t.view:new Cs,void 0!==t.controls&&(Array.isArray(t.controls)?r=new ht(t.controls.slice()):(pt("function"==typeof t.controls.getArray,47),r=t.controls));void 0!==t.interactions&&(Array.isArray(t.interactions)?n=new ht(t.interactions.slice()):(pt("function"==typeof t.interactions.getArray,48),n=t.interactions));void 0!==t.overlays?Array.isArray(t.overlays)?i=new ht(t.overlays.slice()):(pt("function"==typeof t.overlays.getArray,49),i=t.overlays):i=new ht;return{controls:r,interactions:n,keyboardEventTarget:e,overlays:i,values:o}}(e);return r.boundHandleBrowserEvent_=r.handleBrowserEvent.bind(r),r.maxTilesLoading_=void 0!==e.maxTilesLoading?e.maxTilesLoading:16,r.pixelRatio_=void 0!==e.pixelRatio?e.pixelRatio:Vi,r.postRenderTimeoutHandle_,r.animationDelayKey_,r.animationDelay_=function(){this.animationDelayKey_=void 0,this.renderFrame_(Date.now())}.bind(r),r.coordinateToPixelTransform_=[1,0,0,1,0,0],r.pixelToCoordinateTransform_=[1,0,0,1,0,0],r.frameIndex_=0,r.frameState_=null,r.previousExtent_=null,r.viewPropertyListenerKey_=null,r.viewChangeListenerKey_=null,r.layerGroupPropertyListenerKeys_=null,r.viewport_=document.createElement("div"),r.viewport_.className="ol-viewport"+("ontouchstart"in window?" ol-touch":""),r.viewport_.style.position="relative",r.viewport_.style.overflow="hidden",r.viewport_.style.width="100%",r.viewport_.style.height="100%",r.overlayContainer_=document.createElement("div"),r.overlayContainer_.style.position="absolute",r.overlayContainer_.style.zIndex="0",r.overlayContainer_.style.width="100%",r.overlayContainer_.style.height="100%",r.overlayContainer_.style.pointerEvents="none",r.overlayContainer_.className="ol-overlaycontainer",r.viewport_.appendChild(r.overlayContainer_),r.overlayContainerStopEvent_=document.createElement("div"),r.overlayContainerStopEvent_.style.position="absolute",r.overlayContainerStopEvent_.style.zIndex="0",r.overlayContainerStopEvent_.style.width="100%",r.overlayContainerStopEvent_.style.height="100%",r.overlayContainerStopEvent_.style.pointerEvents="none",r.overlayContainerStopEvent_.className="ol-overlaycontainer-stopevent",r.viewport_.appendChild(r.overlayContainerStopEvent_),r.mapBrowserEventHandler_=null,r.moveTolerance_=e.moveTolerance,r.keyboardEventTarget_=n.keyboardEventTarget,r.keyHandlerKeys_=null,r.controls=n.controls||new ht,r.interactions=n.interactions||new ht,r.overlays_=n.overlays,r.overlayIdIndex_={},r.renderer_=null,r.handleResize_,r.postRenderFunctions_=[],r.tileQueue_=new es(r.getTilePriority.bind(r),r.handleTileChange_.bind(r)),r.addEventListener(it(Ka),r.handleLayerGroupChanged_),r.addEventListener(it(Ja),r.handleViewChanged_),r.addEventListener(it(Ha),r.handleSizeChanged_),r.addEventListener(it($a),r.handleTargetChanged_),r.setProperties(n.values),r.controls.forEach(function(t){t.setMap(this)}.bind(r)),r.controls.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.controls.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.interactions.forEach(function(t){t.setMap(this)}.bind(r)),r.interactions.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.interactions.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.overlays_.forEach(r.addOverlayInternal_.bind(r)),r.overlays_.addEventListener(at,function(t){this.addOverlayInternal_(t.element)}.bind(r)),r.overlays_.addEventListener(st,function(t){var e=t.element.getId();void 0!==e&&delete this.overlayIdIndex_[e.toString()],t.element.setMap(null)}.bind(r)),r}return Ls(e,t),e.prototype.createRenderer=function(){throw new Error("Use a map type that has a createRenderer method")},e.prototype.addControl=function(t){this.getControls().push(t)},e.prototype.addInteraction=function(t){this.getInteractions().push(t)},e.prototype.addLayer=function(t){this.getLayerGroup().getLayers().push(t)},e.prototype.addOverlay=function(t){this.getOverlays().push(t)},e.prototype.addOverlayInternal_=function(t){var e=t.getId();void 0!==e&&(this.overlayIdIndex_[e.toString()]=t),t.setMap(this)},e.prototype.disposeInternal=function(){this.setTarget(null),t.prototype.disposeInternal.call(this)},e.prototype.forEachFeatureAtPixel=function(t,e,r){if(this.frameState_){var n=this.getCoordinateFromPixelInternal(t),i=void 0!==(r=void 0!==r?r:{}).hitTolerance?r.hitTolerance:0,o=void 0!==r.layerFilter?r.layerFilter:S,a=!1!==r.checkWrapped;return this.renderer_.forEachFeatureAtCoordinate(n,this.frameState_,i,a,e,null,o,null)}},e.prototype.getFeaturesAtPixel=function(t,e){var r=[];return this.forEachFeatureAtPixel(t,(function(t){r.push(t)}),e),r},e.prototype.forEachLayerAtPixel=function(t,e,r){if(this.frameState_){var n=r||{},i=void 0!==n.hitTolerance?n.hitTolerance:0,o=n.layerFilter||S;return this.renderer_.forEachLayerAtPixel(t,this.frameState_,i,e,o)}},e.prototype.hasFeatureAtPixel=function(t,e){if(!this.frameState_)return!1;var r=this.getCoordinateFromPixelInternal(t),n=void 0!==(e=void 0!==e?e:{}).layerFilter?e.layerFilter:S,i=void 0!==e.hitTolerance?e.hitTolerance:0,o=!1!==e.checkWrapped;return this.renderer_.hasFeatureAtCoordinate(r,this.frameState_,i,o,n,null)},e.prototype.getEventCoordinate=function(t){return this.getCoordinateFromPixel(this.getEventPixel(t))},e.prototype.getEventCoordinateInternal=function(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))},e.prototype.getEventPixel=function(t){var e=this.viewport_.getBoundingClientRect(),r="changedTouches"in t?t.changedTouches[0]:t;return[r.clientX-e.left,r.clientY-e.top]},e.prototype.getTarget=function(){return this.get($a)},e.prototype.getTargetElement=function(){var t=this.getTarget();return void 0!==t?"string"==typeof t?document.getElementById(t):t:null},e.prototype.getCoordinateFromPixel=function(t){return en(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())},e.prototype.getCoordinateFromPixelInternal=function(t){var e=this.frameState_;return e?It(e.pixelToCoordinateTransform,t.slice()):null},e.prototype.getControls=function(){return this.controls},e.prototype.getOverlays=function(){return this.overlays_},e.prototype.getOverlayById=function(t){var e=this.overlayIdIndex_[t.toString()];return void 0!==e?e:null},e.prototype.getInteractions=function(){return this.interactions},e.prototype.getLayerGroup=function(){return this.get(Ka)},e.prototype.getLayers=function(){return this.getLayerGroup().getLayers()},e.prototype.getLoading=function(){for(var t=this.getLayerGroup().getLayerStatesArray(),e=0,r=t.length;e=0;s--){var l=a[s];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var r=this.maxTilesLoading_,n=r;if(t){var i=t.viewHints;if(i[ns]||i[is]){var o=!Wi&&Date.now()-t.time>8;r=o?0:8,n=o?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=r&&(this.element.style.display=r?"":"none",this.renderedVisible_=r),!b(e,this.renderedAttributions_)){go(this.ulElement_);for(var n=0,i=e.length;n0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:io}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var r=e.viewState.rotation;if(r!=this.rotation_){var n="rotate("+r+"rad)";if(this.autoHide_){var i=this.element.classList.contains("ol-hidden");i||0!==r?i&&0!==r&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.label_.style.transform=n}this.rotation_=r}},e}(As),Gs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zs=function(t){function e(e){var r=this,n=e||{};r=t.call(this,{element:document.createElement("div"),target:n.target})||this;var i=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,a=void 0!==n.zoomInClassName?n.zoomInClassName:i+"-in",s=void 0!==n.zoomOutClassName?n.zoomOutClassName:i+"-out",l=void 0!==n.zoomInLabel?n.zoomInLabel:"+",u=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",c=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=a,p.setAttribute("type","button"),p.title=c,p.appendChild("string"==typeof l?document.createTextNode(l):l),p.addEventListener(N,r.handleClick_.bind(r,o),!1);var f=document.createElement("button");f.className=s,f.setAttribute("type","button"),f.title=h,f.appendChild("string"==typeof u?document.createTextNode(u):u),f.addEventListener(N,r.handleClick_.bind(r,-o),!1);var d=i+" ol-unselectable ol-control",g=r.element;return g.className=d,g.appendChild(p),g.appendChild(f),r.duration_=void 0!==n.duration?n.duration:250,r}return Gs(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var r=e.getZoom();if(void 0!==r){var n=e.getConstrainedZoom(r+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:io})):e.setZoom(n)}}},e}(As);function Us(t){var e=t||{},r=new ht;return(void 0===e.zoom||e.zoom)&&r.push(new zs(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&r.push(new Ds(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&r.push(new js(e.attributionOptions)),r}var Bs="active",Vs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ys(t,e,r){var n=t.getCenterInternal();if(n){var i=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==r?r:250,easing:ao,center:t.getConstrainedCenter(i)})}}function Ws(t,e,r,n){var i=t.getZoom();if(void 0!==i){var o=t.getConstrainedZoom(i+e),a=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:a,anchor:r,duration:void 0!==n?n:250,easing:io})}}var qs=function(t){function e(e){var r=t.call(this)||this;return e&&e.handleEvent&&(r.handleEvent=e.handleEvent),r.map_=null,r.setActive(!0),r}return Vs(e,t),e.prototype.getActive=function(){return this.get(Bs)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Bs,t)},e.prototype.setMap=function(t){this.map_=t},e}(ot),Xs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zs=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:250,r}return Xs(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Ga.DBLCLICK){var r=t.originalEvent,n=t.map,i=t.coordinate,o=r.shiftKey?-this.delta_:this.delta_;Ws(n.getView(),o,i,this.duration_),r.preventDefault(),e=!0}return!e},e}(qs),Ks=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Hs(t){for(var e=t.length,r=0,n=0,i=0;i0}}else if(t.type==Ga.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Ga.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Ga.POINTERDOWN||e===Ga.POINTERDRAG||e===Ga.POINTERUP}(t)){var e=t.originalEvent,r=e.pointerId.toString();t.type==Ga.POINTERUP?delete this.trackedPointers_[r]:(t.type==Ga.POINTERDOWN||r in this.trackedPointers_)&&(this.trackedPointers_[r]=e),this.targetPointers=R(this.trackedPointers_)}},e}(qs);function Js(t){var e=arguments;return function(t){for(var r=!0,n=0,i=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}($s),dl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gl=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{stopDown:E})||this).condition_=n.condition?n.condition:tl,r.lastAngle_=void 0,r.duration_=void 0!==n.duration?n.duration:250,r}return dl(e,t),e.prototype.handleDragEvent=function(t){if(cl(t)){var e=t.map,r=e.getView();if(r.getConstraints().rotation!==gs){var n=e.getSize(),i=t.pixel,o=Math.atan2(n[1]/2-i[1],i[0]-n[0]/2);if(void 0!==this.lastAngle_){var a=o-this.lastAngle_;r.adjustRotationInternal(-a)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!cl(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!(!il(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}($s),yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ml=function(t){function e(e){var r=t.call(this)||this;return r.geometry_=null,r.element_=document.createElement("div"),r.element_.style.position="absolute",r.element_.style.pointerEvents="auto",r.element_.className="ol-box "+e,r.map_=null,r.startPixel_=null,r.endPixel_=null,r}return yl(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,r=this.element_.style;r.left=Math.min(t[0],e[0])+"px",r.top=Math.min(t[1],e[1])+"px",r.width=Math.abs(e[0]-t[0])+"px",r.height=Math.abs(e[1]-t[1])+"px"},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,r=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);r[4]=r[0].slice(),this.geometry_?this.geometry_.setCoordinates([r]):this.geometry_=new fi([r])},e.prototype.getGeometry=function(){return this.geometry_},e}(p),vl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_l="boxstart",bl="boxdrag",xl="boxend",wl="boxcancel",Sl=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.coordinate=r,i.mapBrowserEvent=n,i}return vl(e,t),e}(c),El=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.box_=new ml(n.className||"ol-dragbox"),r.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(r.onBoxEnd=n.onBoxEnd),r.startPixel_=null,r.condition_=n.condition?n.condition:il,r.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:r.defaultBoxEndCondition,r}return vl(e,t),e.prototype.defaultBoxEndCondition=function(t,e,r){var n=r[0]-e[0],i=r[1]-e[1];return n*n+i*i>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Sl(bl,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Sl(e?xl:wl,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Sl(_l,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}($s),Tl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cl=function(t){function e(e){var r=this,n=e||{},i=n.condition?n.condition:ll;return(r=t.call(this,{condition:i,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,r.out_=void 0!==n.out&&n.out,r}return Tl(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap(),r=e.getView(),n=e.getSize(),i=this.getGeometry().getExtent();if(this.out_){var o=r.calculateExtentInternal(n),a=se([e.getPixelFromCoordinateInternal(_e(i)),e.getPixelFromCoordinateInternal(Oe(i))]);Me(o,1/r.getResolutionForExtentInternal(a,n)),i=o}var s=r.getConstrainedResolution(r.getResolutionForExtentInternal(i,n)),l=r.getConstrainedCenter(xe(i),s);r.animateInternal({resolution:s,center:l,duration:this.duration_,easing:io})},e}(El),Ol=37,Pl=38,Rl=39,Il=40,Ll=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ml=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.defaultCondition_=function(t){return sl(t)&&ul(t)},r.condition_=void 0!==n.condition?n.condition:r.defaultCondition_,r.duration_=void 0!==n.duration?n.duration:100,r.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,r}return Ll(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B){var r=t.originalEvent,n=r.keyCode;if(this.condition_(t)&&(n==Il||n==Ol||n==Rl||n==Pl)){var i=t.map.getView(),o=i.getResolution()*this.pixelDelta_,a=0,s=0;n==Il?s=-o:n==Ol?a=-o:n==Rl?a=o:s=o;var l=[a,s];Or(l,i.getRotation()),Ys(i,l,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),Fl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Al=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.condition_=n.condition?n.condition:ul,r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:100,r}return Fl(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B||t.type==V){var r=t.originalEvent,n=r.charCode;if(this.condition_(t)&&(n=="+".charCodeAt(0)||n=="-".charCodeAt(0))){var i=t.map,o=n=="+".charCodeAt(0)?this.delta_:-this.delta_;Ws(i.getView(),o,void 0,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),kl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jl="trackpad",Nl="wheel",Dl=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,n)||this).totalDelta_=0,r.lastDelta_=0,r.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,r.duration_=void 0!==n.duration?n.duration:250,r.timeout_=void 0!==n.timeout?n.timeout:80,r.useAnchor_=void 0===n.useAnchor||n.useAnchor,r.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var i=n.condition?n.condition:nl;return r.condition_=n.onFocusOnly?Js(rl,i):i,r.lastAnchor_=null,r.startTime_=void 0,r.timeoutId_,r.mode_=void 0,r.trackpadEventGap_=400,r.trackpadTimeoutId_,r.deltaPerZoom_=300,r}return kl(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==X)return!0;var e,r=t.map,n=t.originalEvent;if(n.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==X&&(e=n.deltaY,Gi&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Vi),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var i=Date.now();void 0===this.startTime_&&(this.startTime_=i),(!this.mode_||i-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?jl:Nl);var o=r.getView();if(this.mode_===jl&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=i,!1;this.totalDelta_+=e;var a=Math.max(this.timeout_-(i-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),a),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var r=-Ne(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(r=r?r>0?1:-1:0),Ws(e,r,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(qs),Gl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.lastAngle_=void 0,r.rotating_=!1,r.rotationDelta_=0,r.threshold_=void 0!==n.threshold?n.threshold:.3,r.duration_=void 0!==n.duration?n.duration:250,r}return Gl(e,t),e.prototype.handleDragEvent=function(t){var e=0,r=this.targetPointers[0],n=this.targetPointers[1],i=Math.atan2(n.clientY-r.clientY,n.clientX-r.clientX);if(void 0!==this.lastAngle_){var o=i-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=i;var a=t.map,s=a.getView();if(s.getConstraints().rotation!==gs){var l=a.getViewport().getBoundingClientRect(),u=Hs(this.targetPointers);u[0]-=l.left,u[1]-=l.top,this.anchor_=a.getCoordinateFromPixelInternal(u),this.rotating_&&(a.render(),s.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s),Ul=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.duration_=void 0!==n.duration?n.duration:400,r.lastDistance_=void 0,r.lastScaleDelta_=1,r}return Ul(e,t),e.prototype.handleDragEvent=function(t){var e=1,r=this.targetPointers[0],n=this.targetPointers[1],i=r.clientX-n.clientX,o=r.clientY-n.clientY,a=Math.sqrt(i*i+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/a),this.lastDistance_=a;var s=t.map,l=s.getView();1!=e&&(this.lastScaleDelta_=e);var u=s.getViewport().getBoundingClientRect(),c=Hs(this.targetPointers);c[0]-=u.left,c[1]-=u.top,this.anchor_=s.getCoordinateFromPixelInternal(c),s.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s);function Vl(t){var e=t||{},r=new ht,n=new _o(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&r.push(new gl),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&r.push(new Zs({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&r.push(new fl({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&r.push(new zl),(void 0===e.pinchZoom||e.pinchZoom)&&r.push(new Bl({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(r.push(new Ml),r.push(new Al({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&r.push(new Dl({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&r.push(new Cl({duration:e.zoomDuration})),r}var Yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wl=function(t){function e(e){return(e=O({},e)).controls||(e.controls=Us()),e.interactions||(e.interactions=Vl({onFocusOnly:!0})),t.call(this,e)||this}return Yl(e,t),e.prototype.createRenderer=function(){return new La(this)},e}(Ms),ql="bottom-left",Xl="bottom-center",Zl="bottom-right",Kl="center-left",Hl="center-center",$l="center-right",Jl="top-left",Ql="top-center",tu="top-right",eu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ru="element",nu="map",iu="offset",ou="position",au="positioning",su=function(t){function e(e){var r=t.call(this)||this;r.options=e,r.id=e.id,r.insertFirst=void 0===e.insertFirst||e.insertFirst,r.stopEvent=void 0===e.stopEvent||e.stopEvent,r.element=document.createElement("div"),r.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",r.element.style.position="absolute",r.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!=typeof n&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),r.autoPan=n||!1,r.rendered={transform_:"",visible:!0},r.mapPostrenderListenerKey=null,r.addEventListener(it(ru),r.handleElementChanged),r.addEventListener(it(nu),r.handleMapChanged),r.addEventListener(it(iu),r.handleOffsetChanged),r.addEventListener(it(ou),r.handlePositionChanged),r.addEventListener(it(au),r.handlePositioningChanged),void 0!==e.element&&r.setElement(e.element),r.setOffset(void 0!==e.offset?e.offset:[0,0]),r.setPositioning(void 0!==e.positioning?e.positioning:Jl),void 0!==e.position&&r.setPosition(e.position),r}return eu(e,t),e.prototype.getElement=function(){return this.get(ru)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(nu)},e.prototype.getOffset=function(){return this.get(iu)},e.prototype.getPosition=function(){return this.get(ou)},e.prototype.getPositioning=function(){return this.get(au)},e.prototype.handleElementChanged=function(){go(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(fo(this.element),H(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=Z(t,qa,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(ru,t)},e.prototype.setMap=function(t){this.set(nu,t)},e.prototype.setOffset=function(t){this.set(iu,t)},e.prototype.setPosition=function(t){this.set(ou,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(ou)){var r=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),i=this.getRect(n,[co(n),ho(n)]),o=t||{},a=void 0===o.margin?20:o.margin;if(!te(r,i)){var s=i[0]-r[0],l=r[2]-i[2],u=i[1]-r[1],c=r[3]-i[3],h=[0,0];if(s<0?h[0]=s-a:l<0&&(h[0]=Math.abs(l)+a),u<0?h[1]=u-a:c<0&&(h[1]=Math.abs(c)+a),0!==h[0]||0!==h[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p);if(!f)return;var d=[f[0]+h[0],f[1]+h[1]],g=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:g.duration,easing:g.easing})}}}},e.prototype.getRect=function(t,e){var r=t.getBoundingClientRect(),n=r.left+window.pageXOffset,i=r.top+window.pageYOffset;return[n,i,n+e[0],i+e[1]]},e.prototype.setPositioning=function(t){this.set(au,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var r=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(r,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var r=this.element.style,n=this.getOffset(),i=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",a=Math.round(t[1]+n[1])+"px",s="0%",l="0%";i==Zl||i==$l||i==tu?s="-100%":i!=Xl&&i!=Hl&&i!=Ql||(s="-50%"),i==ql||i==Xl||i==Zl?l="-100%":i!=Kl&&i!=Hl&&i!=$l||(l="-50%");var u="translate("+s+", "+l+") translate("+o+", "+a+")";this.rendered.transform_!=u&&(this.rendered.transform_=u,r.transform=u,r.msTransform=u)},e.prototype.getOptions=function(){return this.options},e}(ot),lu=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var r=this.entries_[t];return pt(void 0!==r,15),r===this.newest_||(r===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(r.newer.older=r.older,r.older.newer=r.newer),r.newer=null,r.older=this.newest_,this.newest_.newer=r,this.newest_=r),r.value_},t.prototype.remove=function(t){var e=this.entries_[t];return pt(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){pt(!(t in this.entries_),16);var r={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=r:this.oldest_=r,this.newest_=r,this.entries_[t]=r,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function uu(t,e,r,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=r,n):[t,e,r]}function cu(t,e,r){return t+"/"+e+"/"+r}function hu(t){return cu(t[0],t[1],t[2])}function pu(t){return t.split("/").map(Number)}function fu(t){return(t[1]<r||r>e.getMaxZoom())return!1;var o=e.getFullTileRange(r);return!o||o.containsXY(n,i)}var gu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return gu(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=pu(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(hu(e.tileCoord)),e.release())}.bind(this))}},e}(lu),mu=function(){function t(t,e,r,n){this.minX=t,this.maxX=e,this.minY=r,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function vu(t,e,r,n,i){return void 0!==i?(i.minX=t,i.maxX=e,i.minY=r,i.maxY=n,i):new mu(t,e,r,n)}var _u=mu,bu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xu=[],wu=function(t){function e(e,r,n,i){var o=t.call(this,e,r,{transition:0})||this;return o.context_={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.errorSourceTileKeys={},o.hitDetectionImageData={},o.replayState_={},o.sourceTiles=null,o.wantedResolution,o.getSourceTiles=i.bind(void 0,o),o.sourceZ=-1,o.hifi=!1,o.wrappedTileCoord=n,o}return bu(e,t),e.prototype.getContext=function(t){var e=o(t);return e in this.context_||(this.context_[e]=uo(1,1,xu)),this.context_[e]},e.prototype.hasContext=function(t){return o(t)in this.context_},e.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},e.prototype.getReplayState=function(t){var e=o(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedZ:-1,renderedTileZ:-1}),this.replayState_[e]},e.prototype.load=function(){this.getSourceTiles()},e.prototype.release=function(){for(var e in this.context_)xu.push(this.context_[e].canvas),delete this.context_[e];t.prototype.release.call(this)},e}(lo),Su=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eu=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.extent=null,s.format_=i,s.features_=null,s.loader_,s.projection=null,s.resolution,s.tileLoadFunction_=o,s.url_=n,s.key=n,s}return Su(e,t),e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.load=function(){this.state==Ji&&(this.setState(Qi),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))},e.prototype.onLoad=function(t,e){this.setFeatures(t)},e.prototype.onError=function(){this.setState(eo)},e.prototype.setFeatures=function(t){this.features_=t,this.setState(to)},e.prototype.setLoader=function(t){this.loader_=t},e}(lo);function Tu(t){return Array.isArray(t)?Ro(t):t}var Cu="arraybuffer",Ou="json",Pu="text",Ru="xml",Iu=!1;function Lu(t,e,r,n,i,o,a){var s=new XMLHttpRequest;s.open("GET","function"==typeof t?t(r,n,i):t,!0),e.getType()==Cu&&(s.responseType="arraybuffer"),s.withCredentials=Iu,s.onload=function(t){if(!s.status||s.status>=200&&s.status<300){var n=e.getType(),l=void 0;n==Ou||n==Pu?l=s.responseText:n==Ru?(l=s.responseXML)||(l=(new DOMParser).parseFromString(s.responseText,"application/xml")):n==Cu&&(l=s.response),l?o(e.readFeatures(l,{extent:r,featureProjection:i}),e.readProjection(l)):a()}else a()},s.onerror=a,s.send()}function Mu(t,e){return function(r,n,i,o,a){var s=this;Lu(t,e,r,n,i,(function(t,e){void 0!==o&&o(t),s.addFeatures(t)}),a||T)}}function Fu(t,e){return[[-1/0,-1/0,1/0,1/0]]}function Au(t,e,r,n){var i=document.createElement("script"),a="olc_"+o(e);function s(){delete window[a],i.parentNode.removeChild(i)}i.async=!0,i.src=t+(-1==t.indexOf("?")?"?":"&")+(n||"callback")+"="+a;var l=setTimeout((function(){s(),r&&r()}),1e4);window[a]=function(t){clearTimeout(l),s(),e(t)},document.getElementsByTagName("head")[0].appendChild(i)}var ku=function(){function t(){}return t.prototype.drawCustom=function(t,e,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),ju=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Nu=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this)||this;return l.context_=e,l.pixelRatio_=r,l.extent_=n,l.transform_=i,l.viewRotation_=o,l.squaredTolerance_=a,l.userTransform_=s,l.contextFillState_=null,l.contextStrokeState_=null,l.contextTextState_=null,l.fillState_=null,l.strokeState_=null,l.image_=null,l.imageAnchorX_=0,l.imageAnchorY_=0,l.imageHeight_=0,l.imageOpacity_=0,l.imageOriginX_=0,l.imageOriginY_=0,l.imageRotateWithView_=!1,l.imageRotation_=0,l.imageScale_=[0,0],l.imageWidth_=0,l.text_="",l.textOffsetX_=0,l.textOffsetY_=0,l.textRotateWithView_=!1,l.textRotation_=0,l.textScale_=[0,0],l.textFillState_=null,l.textStrokeState_=null,l.textState_=null,l.pixelCoordinates_=[],l.tmpLocalTransform_=[1,0,0,1,0,0],l}return ju(e,t),e.prototype.drawImages_=function(t,e,r,n){if(this.image_){var i=ln(t,e,r,2,this.transform_,this.pixelCoordinates_),o=this.context_,a=this.tmpLocalTransform_,s=o.globalAlpha;1!=this.imageOpacity_&&(o.globalAlpha=s*this.imageOpacity_);var l=this.imageRotation_;this.imageRotateWithView_&&(l+=this.viewRotation_);for(var u=0,c=i.length;u2||Math.abs(t[4*e+3]-191.25)>2}function tc(t,e,r,n){var i=Hr(r,e,t),o=zr(e,n,r),a=e.getMetersPerUnit();void 0!==a&&(o*=a);var s=t.getMetersPerUnit();void 0!==s&&(o/=s);var l=t.getExtent();if(!l||Qt(l,i)){var u=zr(t,o,i)/o;isFinite(u)&&u>0&&(o/=u)}return o}function ec(t,e,r,n){var i=xe(r),o=tc(t,e,i,n);return(!isFinite(o)||o<=0)&&me(r,(function(r){return o=tc(t,e,r,n),isFinite(o)&&o>0})),o}function rc(t,e,r,n,i,o,a,s,l,u,c,h){var p=uo(Math.round(r*t),Math.round(r*e));if(O(p,h),0===l.length)return p.canvas;function f(t){return Math.round(t*r)/r}p.scale(r,r),p.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,r){he(d,t.extent)}));var g=Pe(d),y=Ee(d),m=uo(Math.round(r*g/n),Math.round(r*y/n));O(m,h);var v=r/n;l.forEach((function(t,e,r){var n=t.extent[0]-d[0],i=-(t.extent[3]-d[3]),o=Pe(t.extent),a=Ee(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,u,u,t.image.width-2*u,t.image.height-2*u,n*v,i*v,o*v,a*v)}));var _=Ce(a);return s.getTriangles().forEach((function(t,e,i){var a=t.source,s=t.target,l=a[0][0],u=a[0][1],c=a[1][0],g=a[1][1],y=a[2][0],v=a[2][1],b=f((s[0][0]-_[0])/o),x=f(-(s[0][1]-_[1])/o),w=f((s[1][0]-_[0])/o),S=f(-(s[1][1]-_[1])/o),E=f((s[2][0]-_[0])/o),T=f(-(s[2][1]-_[1])/o),C=l,O=u;l=0,u=0;var P=Be([[c-=C,g-=O,0,0,w-b],[y-=C,v-=O,0,0,E-b],[0,0,c,g,S-x],[0,0,y,v,T-x]]);if(P){if(p.save(),p.beginPath(),function(){if(void 0===Hu){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Ju(t,4,5,4,0),Ju(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;Hu=Qu(e,0)||Qu(e,4)||Qu(e,8)}return Hu}()||h===$u){p.moveTo(w,S);for(var R=b-w,I=x-S,L=0;L<4;L++)p.lineTo(w+f((L+1)*R/4),S+f(L*I/3)),3!=L&&p.lineTo(w+f((L+1)*R/4),S+f((L+1)*I/3));p.lineTo(E,T)}else p.moveTo(w,S),p.lineTo(b,x),p.lineTo(E,T);p.clip(),p.transform(P[0],P[2],P[1],P[3],b,x),p.translate(d[0]-C,d[3]-O),p.scale(n/r,-n/r),p.drawImage(m.canvas,0,0),p.restore()}})),c&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,s.getTriangles().forEach((function(t,e,r){var n=t.target,i=(n[0][0]-_[0])/o,a=-(n[0][1]-_[1])/o,s=(n[1][0]-_[0])/o,l=-(n[1][1]-_[1])/o,u=(n[2][0]-_[0])/o,c=-(n[2][1]-_[1])/o;p.beginPath(),p.moveTo(s,l),p.lineTo(i,a),p.lineTo(u,c),p.closePath(),p.stroke()})),p.restore()),p.canvas}var nc=[0,0,0],ic=function(){function t(t){var e;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,pt(w(this.resolutions_,(function(t,e){return e-t}),!0),17),!t.origins)for(var r=0,n=this.resolutions_.length-1;r=this.minZoom;){if(e(s,2===this.zoomFactor_?vu(i=Math.floor(i/2),i,o=Math.floor(o/2),o,r):this.getTileRangeForExtentAndZ(a,s,r)))return!0;--s}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,r){if(t[0]0?n:Math.max(a/s[0],o/s[1]),u=i+1,c=new Array(u),h=0;h=0;o--)this.postProcessPasses_[o].init(t);e.bindTexture(e.TEXTURE_2D,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.prepareDrawToRenderTarget=function(t,e,r){var n=this.getGL(),i=e.getSize();n.bindFramebuffer(n.FRAMEBUFFER,e.getFramebuffer()),n.viewport(0,0,i[0],i[1]),n.bindTexture(n.TEXTURE_2D,e.getTexture()),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,r?n.ZERO:n.ONE_MINUS_SRC_ALPHA),n.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.drawElements=function(t,e){var r=this.getGL(),n=r.UNSIGNED_INT,i=e-t,o=4*t;r.drawElements(r.TRIANGLES,i,n,o)},e.prototype.finalizeDraw=function(t){for(var e=0;ethis.size_[0]||e>=this.size_[1])return yh[0]=0,yh[1]=0,yh[2]=0,yh[3]=0,yh;this.readAll();var r=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return yh[0]=this.data_[4*r],yh[1]=this.data_[4*r+1],yh[2]=this.data_[4*r+2],yh[3]=this.data_[4*r+3],yh},t.prototype.getTexture=function(){return this.texture_},t.prototype.getFramebuffer=function(){return this.framebuffer_},t.prototype.updateSize_=function(){var t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),this.data_=new Uint8Array(t[0]*t[1]*4)},t}(),vh=1,_h=2,bh=4,xh=8,wh=16,Sh=31,Eh={};function Th(t){if("number"==typeof t)return vh;if("boolean"==typeof t)return xh;if("string"==typeof t)return Io(t)?bh|_h:_h;if(!Array.isArray(t))throw new Error("Unhandled value type: "+JSON.stringify(t));var e=t;if(e.every((function(t){return"number"==typeof t})))return 3===e.length||4===e.length?bh|wh:wh;if("string"!=typeof e[0])throw new Error("Expected an expression operator but received: "+JSON.stringify(e));var r=Eh[e[0]];if(void 0===r)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return r.getReturnType(e.slice(1))}function Ch(t){return Math.log2(t)%1==0}function Oh(t){var e=t.toString();return-1===e.indexOf(".")?e+".0":e}function Ph(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec"+t.length+"("+t.map(Oh).join(", ")+")"}function Rh(t){var e=Oo(t).slice();return e.length<4&&e.push(1),Ph(e.map((function(t,e){return e<3?t/255:t})))}function Ih(t,e){return void 0===t.stringLiteralsMap[e]&&(t.stringLiteralsMap[e]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[e]}function Lh(t,e){return Oh(Ih(t,e))}function Mh(t,e,r){if(Array.isArray(e)&&"string"==typeof e[0]){var n=Eh[e[0]];if(void 0===n)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return n.toGlsl(t,e.slice(1),r)}var i=Th(e);return(i&vh)>0?Oh(e):(i&xh)>0?e.toString():(i&_h)>0&&(void 0===r||r==_h)?Lh(t,e.toString()):(i&bh)>0&&(void 0===r||r==bh)?Rh(e):(i&wh)>0?Ph(e):void 0}function Fh(t){if(!(Th(t)&vh))throw new Error("A numeric value was expected, got "+JSON.stringify(t)+" instead")}function Ah(t){for(var e=0;ee)throw new Error("At most "+e+" arguments were expected, got "+t.length+" instead")}function zh(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got "+t+" instead")}function Uh(t,e){if(!Ch(e))throw new Error("Could not infer only one type from the following expression: "+JSON.stringify(t))}function Bh(t){return{getReturnType:function(t){return xh},toGlsl:function(e,r){Nh(r,2);for(var n=Sh,i=0;i"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" > "+Mh(t,e[1])+")"}},Eh[">="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" >= "+Mh(t,e[1])+")"}},Eh["<"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" < "+Mh(t,e[1])+")"}},Eh["<="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" <= "+Mh(t,e[1])+")"}},Eh["=="]=Bh("=="),Eh["!="]=Bh("!="),Eh["!"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,1),jh(e[0]),"(!"+Mh(t,e[0])+")"}},Eh.all=Vh("&&"),Eh.any=Vh("||"),Eh.between={getReturnType:function(t){return xh},toGlsl:function(t,e){Nh(e,3),Ah(e);var r=Mh(t,e[1]),n=Mh(t,e[2]),i=Mh(t,e[0]);return"("+i+" >= "+r+" && "+i+" <= "+n+")"}},Eh.array={getReturnType:function(t){return wh},toGlsl:function(t,e){Dh(e,2),Gh(e,4),Ah(e);var r=e.map((function(e){return Mh(t,e,vh)}));return"vec"+e.length+"("+r.join(", ")+")"}},Eh.color={getReturnType:function(t){return bh},toGlsl:function(t,e){Dh(e,3),Gh(e,4),Ah(e);var r=e;3===e.length&&r.push(1);var n=e.map((function(e,r){return Mh(t,e,vh)+(r<3?" / 255.0":"")}));return"vec"+e.length+"("+n.join(", ")+")"}},Eh.interpolate={getReturnType:function(t){for(var e=bh|vh,r=3;r=1;l-=2){s="("+o+" == "+Mh(t,e[l])+" ? "+Mh(t,e[l+1],i)+" : "+(s||a)+")"}return s}},Eh.case={getReturnType:function(t){for(var e=Sh,r=1;r=0;o-=2){s="("+Mh(t,e[o])+" ? "+Mh(t,e[o+1],i)+" : "+(s||a)+")"}return s}};var Yh=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,e,r){return this.varyings.push({name:t,type:e,expression:r}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var e=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",r=this.attributes,n=this.varyings;return t&&(r=r.concat("vec4 a_hitColor"),n=n.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nattribute vec2 a_position;\nattribute float a_index;\n"+r.map((function(t){return"attribute "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+n.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n mat4 offsetMatrix = "+e+";\n vec2 halfSize = "+this.sizeExpression+" * 0.5;\n vec2 offset = "+this.offsetExpression+";\n float angle = "+this.rotationExpression+";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = "+this.texCoordExpression+";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n"+n.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n")+"\n}"},t.prototype.getSymbolFragmentShader=function(t){var e=t?" if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",r=this.varyings;return t&&(r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n if ("+this.discardExpression+") { discard; }\n gl_FragColor = "+this.colorExpression+";\n gl_FragColor.rgb *= gl_FragColor.a;\n"+e+"\n}"},t}();function Wh(t){var e=t.symbol,r=void 0!==e.size?e.size:1,n=e.color||"white",i=e.textureCoord||[0,0,1,1],o=e.offset||[0,0],a=void 0!==e.opacity?e.opacity:1,s=void 0!==e.rotation?e.rotation:0,l={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{}},u=Mh(l,r,wh|vh),c=Mh(l,o,wh),h=Mh(l,i,wh),p=Mh(l,s,vh),f={inFragmentShader:!0,variables:l.variables,attributes:[],stringLiteralsMap:l.stringLiteralsMap},d=Mh(f,n,bh),g=Mh(f,a,vh),y="1.0",m="vec2("+Mh(f,r,wh|vh)+").x";switch(e.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./"+m+",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))";break;case"triangle":var v="(v_quadCoord*2.-1.)",_="(atan("+v+".x,"+v+".y))";y="(1.0-smoothstep(.5-3./"+m+",.5,cos(floor(.5+"+_+"/2.094395102)*2.094395102-"+_+")*length("+v+")))";break;default:throw new Error("Unexpected symbol type: "+e.symbolType)}var b=(new Yh).setSizeExpression("vec2("+u+")").setRotationExpression(p).setSymbolOffsetExpression(c).setTextureCoordinateExpression(h).setSymbolRotateWithView(!!e.rotateWithView).setColorExpression("vec4("+d+".rgb, "+d+".a * "+g+" * "+y+")");if(t.filter){var x=Mh(f,t.filter,xh);b.setFragmentDiscardExpression("!"+x)}var w={};if(f.variables.forEach((function(e){b.addUniform("float u_"+e),w["u_"+e]=function(){if(!t.variables||void 0===t.variables[e])throw new Error("The following variable is missing from the style: "+e);var r=t.variables[e];return"string"==typeof r&&(r=Ih(l,r)),void 0!==r?r:-9999999}})),"image"===e.symbolType&&e.src){var S=new Image;S.src=e.src,b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),w.u_texture=S}return f.attributes.forEach((function(t){-1===l.attributes.indexOf(t)&&l.attributes.push(t),b.addVarying("v_"+t,"float","a_"+t)})),l.attributes.forEach((function(t){b.addAttribute("float a_"+t)})),{builder:b,attributes:l.attributes.map((function(t){return{name:t,callback:function(e,r){var n=r[t];return"string"==typeof n&&(n=Ih(l,n)),void 0!==n?n:-9999999}}})),uniforms:w}}var qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xh=function(t){function e(e){var r=t.call(this,{extent:e.extent,origin:e.origin,origins:e.origins,resolutions:e.resolutions,tileSize:e.tileSize,tileSizes:e.tileSizes,sizes:e.sizes})||this;return r.matrixIds_=e.matrixIds,r}return qh(e,t),e.prototype.getMatrixId=function(t){return this.matrixIds_[t]},e.prototype.getMatrixIds=function(){return this.matrixIds_},e}(ic),Zh=Xh;function Kh(t,e,r){var n=[],i=[],o=[],a=[],s=[],l=void 0!==r?r:[],u=Gr(t.SupportedCRS),c=u.getMetersPerUnit(),h="ne"==u.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,e){return e.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(e){if(!(l.length>0)||_(l,(function(r){return e.Identifier==r.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===r.TileMatrix}))){i.push(e.Identifier);var r=28e-5*e.ScaleDenominator/c,u=e.TileWidth,p=e.TileHeight;h?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),n.push(r),a.push(u==p?u:[u,p]),s.push([e.MatrixWidth,e.MatrixHeight])}})),new Xh({extent:e,origins:o,resolutions:n,matrixIds:i,tileSizes:a,sizes:s})}var Hh=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Is(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return n()},t.prototype.getImage=function(t){return n()},t.prototype.getHitDetectionImage=function(){return n()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return n()},t.prototype.getImageSize=function(){return n()},t.prototype.getHitDetectionImageSize=function(){return n()},t.prototype.getOrigin=function(){return n()},t.prototype.getSize=function(){return n()},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(t)},t.prototype.listenImageChange=function(t){n()},t.prototype.load=function(){n()},t.prototype.unlistenImageChange=function(t){n()},t}(),$h=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jh=function(t){function e(e){var r=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(r=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_={},r.hitDetectionCanvas_=null,r.fill_=void 0!==e.fill?e.fill:null,r.origin_=[0,0],r.points_=e.points,r.radius_=void 0!==e.radius?e.radius:e.radius1,r.radius2_=e.radius2,r.angle_=void 0!==e.angle?e.angle:0,r.stroke_=void 0!==e.stroke?e.stroke:null,r.anchor_=null,r.size_=null,r.imageSize_=null,r.hitDetectionImageSize_=null,r.render(),r}return $h(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionCanvas_){var t=this.createRenderOptions();this.createHitDetectionCanvas_(t)}return this.hitDetectionCanvas_},e.prototype.getImage=function(t){if(!this.canvas_[t||1]){var e=this.createRenderOptions(),r=uo(e.size*t||1,e.size*t||1);this.draw_(e,r,0,0,t||1),this.canvas_[t||1]=r.canvas}return this.canvas_[t||1]},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return ki},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.createRenderOptions=function(){var t,e="round",r="round",n=0,i=null,o=0,a=0;return this.stroke_&&(null===(t=this.stroke_.getColor())&&(t="#000"),t=Tu(t),void 0===(a=this.stroke_.getWidth())&&(a=1),i=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(r=this.stroke_.getLineJoin())&&(r="round"),void 0===(e=this.stroke_.getLineCap())&&(e="round"),void 0===(n=this.stroke_.getMiterLimit())&&(n=10)),{strokeStyle:t,strokeWidth:a,size:2*(this.radius_+a)+1,lineCap:e,lineDash:i,lineDashOffset:o,lineJoin:r,miterLimit:n}},e.prototype.render=function(){var t=this.createRenderOptions(),e=uo(t.size,t.size);this.draw_(t,e,0,0,1),this.canvas_={},this.canvas_[1]=e.canvas;var r=e.canvas.width,n=r,i=this.getDisplacement();this.hitDetectionImageSize_=[t.size,t.size],this.createHitDetectionCanvas_(t),this.anchor_=[r/2-i[0],r/2+i[1]],this.size_=[r,r],this.imageSize_=[n,n]},e.prototype.draw_=function(t,e,r,n,i){var o,a,s;e.setTransform(i,0,0,i,0,0),e.translate(r,n),e.beginPath();var l=this.points_;if(l===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var u=void 0!==this.radius2_?this.radius2_:this.radius_;for(u!==this.radius_&&(l*=2),o=0;o<=l;o++)a=2*o*Math.PI/l-Math.PI/2+this.angle_,s=o%2==0?this.radius_:u,e.lineTo(t.size/2+s*Math.cos(a),t.size/2+s*Math.sin(a))}if(this.fill_){var c=this.fill_.getColor();null===c&&(c="#000"),e.fillStyle=Tu(c),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionCanvas_=this.getImage(1),this.fill_){var e=this.fill_.getColor(),r=0;if("string"==typeof e&&(e=Oo(e)),null===e?r=1:Array.isArray(e)&&(r=4===e.length?e[3]:1),0===r){var n=uo(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,r,n){e.translate(r,n),e.beginPath();var i=this.points_;if(i===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(i*=2);var a=void 0,s=void 0,l=void 0;for(a=0;a<=i;a++)l=2*a*Math.PI/i-Math.PI/2+this.angle_,s=a%2==0?this.radius_:o,e.lineTo(t.size/2+s*Math.cos(l),t.size/2+s*Math.sin(l))}e.fillStyle="#000",e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(Hh),Qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tp=function(t){function e(e){var r=e||{};return t.call(this,{points:1/0,fill:r.fill,radius:r.radius,stroke:r.stroke,scale:void 0!==r.scale?r.scale:1,rotation:void 0!==r.rotation?r.rotation:0,rotateWithView:void 0!==r.rotateWithView&&r.rotateWithView,displacement:void 0!==r.displacement?r.displacement:[0,0]})||this}return Qh(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Jh),ep=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}(),rp="fraction",np="pixels",ip="bottom-left",op="bottom-right",ap="top-left",sp="top-right",lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),up=null,cp=function(t){function e(e,r,n,i,o,a){var s=t.call(this)||this;return s.hitDetectionImage_=null,s.image_=e||new Image,null!==i&&(s.image_.crossOrigin=i),s.canvas_={},s.color_=a,s.unlisten_=null,s.imageState_=o,s.size_=n,s.src_=r,s.tainted_,s}return lp(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===ki){up||(up=uo(1,1)),up.drawImage(this.image_,0,0);try{up.getImageData(0,0,1,1),this.tainted_=!1}catch(t){up=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(F)},e.prototype.handleImageError_=function(){this.imageState_=ji,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=ki,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],r=uo(t,e);r.fillRect(0,0,t,e),this.hitDetectionImage_=r.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Fi){this.imageState_=Ai;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var r=e.getContext("2d");if(r.scale(t,t),r.drawImage(this.image_,0,0),r.globalCompositeOperation="multiply","multiply"===r.globalCompositeOperation||this.isTainted_())r.fillStyle=wo(this.color_),r.fillRect(0,0,e.width,e.height),r.globalCompositeOperation="destination-in",r.drawImage(this.image_,0,0);else{for(var n=r.getImageData(0,0,e.width,e.height),i=n.data,o=this.color_[0]/255,a=this.color_[1]/255,s=this.color_[2]/255,l=this.color_[3],u=0,c=i.length;u0,6);var p=void 0!==n.src?Fi:ki;return r.color_=void 0!==n.color?Oo(n.color):null,r.iconImage_=hp(u,h,c,r.crossOrigin_,p,r.color_),r.offset_=void 0!==n.offset?n.offset:[0,0],r.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:ap,r.origin_=null,r.size_=void 0!==n.size?n.size:null,r}return fp(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==rp||this.anchorYUnits_==rp){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==rp&&(t[0]*=e[0]),this.anchorYUnits_==rp&&(t[1]*=e[1])}if(this.anchorOrigin_!=ap){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=sp&&this.anchorOrigin_!=op||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=ip&&this.anchorOrigin_!=op||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=ap){var r=this.getSize(),n=this.iconImage_.getSize();if(!r||!n)return null;t=t.slice(),this.offsetOrigin_!=sp&&this.offsetOrigin_!=op||(t[0]=n[0]-r[0]-t[0]),this.offsetOrigin_!=ip&&this.offsetOrigin_!=op||(t[1]=n[1]-r[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(F,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(F,t)},e}(Hh),gp=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),yp=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=xp,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"==typeof e&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=xp,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();function mp(t){var e;if("function"==typeof t)e=t;else{var r;if(Array.isArray(t))r=t;else pt("function"==typeof t.getZIndex,41),r=[t];e=function(){return r}}return e}var vp=null;function _p(t,e){if(!vp){var r=new ep({color:"rgba(255,255,255,0.4)"}),n=new gp({color:"#3399CC",width:1.25});vp=[new yp({image:new tp({fill:r,stroke:n,radius:5}),fill:r,stroke:n})]}return vp}function bp(){var t={},e=[255,255,255,1],r=[0,153,255,1];return t[bt.POLYGON]=[new yp({fill:new ep({color:[255,255,255,.5]})})],t[bt.MULTI_POLYGON]=t[bt.POLYGON],t[bt.LINE_STRING]=[new yp({stroke:new gp({color:e,width:5})}),new yp({stroke:new gp({color:r,width:3})})],t[bt.MULTI_LINE_STRING]=t[bt.LINE_STRING],t[bt.CIRCLE]=t[bt.POLYGON].concat(t[bt.LINE_STRING]),t[bt.POINT]=[new yp({image:new tp({radius:6,fill:new ep({color:r}),stroke:new gp({color:e,width:1.5})}),zIndex:1/0})],t[bt.MULTI_POINT]=t[bt.POINT],t[bt.GEOMETRY_COLLECTION]=t[bt.POLYGON].concat(t[bt.LINE_STRING],t[bt.POINT]),t}function xp(t){return t.getGeometry()}var wp=yp,Sp="point",Ep="line",Tp=function(){function t(t){var e=t||{};this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=Is(void 0!==e.scale?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.textBaseline_=e.textBaseline,this.fill_=void 0!==e.fill?e.fill:new ep({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:Sp,this.overflow_=!!e.overflow,this.stroke_=void 0!==e.stroke?e.stroke:null,this.offsetX_=void 0!==e.offsetX?e.offsetX:0,this.offsetY_=void 0!==e.offsetY?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=void 0===e.padding?null:e.padding}return t.prototype.clone=function(){var e=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()})},t.prototype.getOverflow=function(){return this.overflow_},t.prototype.getFont=function(){return this.font_},t.prototype.getMaxAngle=function(){return this.maxAngle_},t.prototype.getPlacement=function(){return this.placement_},t.prototype.getOffsetX=function(){return this.offsetX_},t.prototype.getOffsetY=function(){return this.offsetY_},t.prototype.getFill=function(){return this.fill_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getStroke=function(){return this.stroke_},t.prototype.getText=function(){return this.text_},t.prototype.getTextAlign=function(){return this.textAlign_},t.prototype.getTextBaseline=function(){return this.textBaseline_},t.prototype.getBackgroundFill=function(){return this.backgroundFill_},t.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},t.prototype.getPadding=function(){return this.padding_},t.prototype.setOverflow=function(t){this.overflow_=t},t.prototype.setFont=function(t){this.font_=t},t.prototype.setMaxAngle=function(t){this.maxAngle_=t},t.prototype.setOffsetX=function(t){this.offsetX_=t},t.prototype.setOffsetY=function(t){this.offsetY_=t},t.prototype.setPlacement=function(t){this.placement_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setFill=function(t){this.fill_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.setText=function(t){this.text_=t},t.prototype.setTextAlign=function(t){this.textAlign_=t},t.prototype.setTextBaseline=function(t){this.textBaseline_=t},t.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},t.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},t.prototype.setPadding=function(t){this.padding_=t},t}(),Cp=function(){function t(t){this.first_,this.last_,this.head_,this.circular_=void 0===t||t,this.length_=0}return t.prototype.insertItem=function(t){var e={prev:void 0,next:void 0,data:t},r=this.head_;if(r){var n=r.next;e.prev=r,e.next=n,r.next=e,n&&(n.prev=e),r===this.last_&&(this.last_=e)}else this.first_=e,this.last_=e,this.circular_&&(e.next=e,e.prev=e);this.head_=e,this.length_++},t.prototype.removeItem=function(){var t=this.head_;if(t){var e=t.next,r=t.prev;e&&(e.prev=r),r&&(r.next=e),this.head_=e||r,this.first_===this.last_?(this.head_=void 0,this.first_=void 0,this.last_=void 0):this.first_===t?this.first_=this.head_:this.last_===t&&(this.last_=r?this.head_.prev:this.head_),this.length_--}},t.prototype.firstItem=function(){if(this.head_=this.first_,this.head_)return this.head_.data},t.prototype.lastItem=function(){if(this.head_=this.last_,this.head_)return this.head_.data},t.prototype.nextItem=function(){if(this.head_&&this.head_.next)return this.head_=this.head_.next,this.head_.data},t.prototype.getNextItem=function(){if(this.head_&&this.head_.next)return this.head_.next.data},t.prototype.prevItem=function(){if(this.head_&&this.head_.prev)return this.head_=this.head_.prev,this.head_.data},t.prototype.getPrevItem=function(){if(this.head_&&this.head_.prev)return this.head_.prev.data},t.prototype.getCurrItem=function(){if(this.head_)return this.head_.data},t.prototype.setFirstItem=function(){this.circular_&&this.head_&&(this.first_=this.head_,this.last_=this.head_.prev)},t.prototype.concat=function(t){if(t.head_){if(this.head_){var e=this.head_.next;this.head_.next=t.first_,t.first_.prev=this.head_,e.prev=t.last_,t.last_.next=e,this.length_+=t.length_}else this.head_=t.head_,this.first_=t.first_,this.last_=t.last_,this.length_=t.length_;t.head_=void 0,t.first_=void 0,t.last_=void 0,t.length_=0}},t.prototype.getLength=function(){return this.length_},t}(),Op=r(1),Pp=r.n(Op),Rp=function(){function t(t){this.rbush_=new Pp.a(t),this.items_={}}return t.prototype.insert=function(t,e){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(r),this.items_[o(e)]=r},t.prototype.load=function(t,e){for(var r=new Array(e.length),n=0,i=e.length;nthis.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-m>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-m>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-m>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var r=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-r.5&&c<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Pe(Kt([t,e,r,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&c&&(f=c>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(u[0])&&isFinite(u[1])&&isFinite(u[2])&&isFinite(u[3]))||Re(u,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(i[0])&&isFinite(i[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])&&isFinite(s[0])&&isFinite(s[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(i[0])&&isFinite(i[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(a[0])&&isFinite(a[1])?0:2)+(isFinite(s[0])&&isFinite(s[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var g=[(t[0]+r[0])/2,(t[1]+r[1])/2],y=this.transformInv_(g),m=void 0;if(p)m=(We(i[0],h)+We(a[0],h))/2-We(y[0],h);else m=(i[0]+a[0])/2-y[0];var v=(i[1]+a[1])/2-y[1];f=m*m+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-r[0])<=Math.abs(t[1]-r[1])){var _=[(e[0]+r[0])/2,(e[1]+r[1])/2],b=this.transformInv_(_),x=[(n[0]+t[0])/2,(n[1]+t[1])/2],w=this.transformInv_(x);this.addQuad_(t,e,_,x,i,o,b,w,l-1),this.addQuad_(x,_,r,n,w,b,a,s,l-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),T=[(r[0]+n[0])/2,(r[1]+n[1])/2],C=this.transformInv_(T);this.addQuad_(t,S,T,n,i,E,C,s,l-1),this.addQuad_(S,e,r,T,E,o,a,C,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,r,n,i,a,s),0==(14&d)&&this.addTriangle_(t,r,e,i,a,o),d&&(0==(13&d)&&this.addTriangle_(e,n,t,o,s,i),0==(7&d)&&this.addTriangle_(e,n,r,o,s,a))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,r,n){var i=e.source;pe(t,i[0]),pe(t,i[1]),pe(t,i[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Mp=function(t){function e(e,r,n,i,o,a,s,l,u,c,h,p){var f=t.call(this,o,Ji)||this;f.renderEdges_=void 0!==h&&h,f.contextOptions_=p,f.pixelRatio_=s,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=r,f.targetTileGrid_=i,f.wrappedTileCoord_=a||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=i.getTileCoordExtent(f.wrappedTileCoord_),g=f.targetTileGrid_.getExtent(),y=f.sourceTileGrid_.getExtent(),m=g?Te(d,g):d;if(0===ve(m))return f.state=ro,f;var v=e.getExtent();v&&(y=y?Te(y,v):v);var _=i.getResolution(f.wrappedTileCoord_[0]),b=ec(e,n,m,_);if(!isFinite(b)||b<=0)return f.state=ro,f;var x=void 0!==c?c:.5;if(f.triangulation_=new Ip(e,n,m,y,b*x,_),0===f.triangulation_.getTriangles().length)return f.state=ro,f;f.sourceZ_=r.getZForResolution(b);var w=f.triangulation_.calculateSourceExtent();if(y&&(e.canWrapX()?(w[1]=Ne(w[1],y[1],y[3]),w[3]=Ne(w[3],y[1],y[3])):w=Te(w,y)),ve(w)){for(var S=r.getTileRangeForExtentAndZ(w,f.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var T=S.minY;T<=S.maxY;T++){var C=u(f.sourceZ_,E,T,s);C&&f.sourceTiles_.push(C)}0===f.sourceTiles_.length&&(f.state=ro)}else f.state=ro;return f}return Lp(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,r,n){e&&e.getState()==to&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=eo;else{var e=this.wrappedTileCoord_[0],r=this.targetTileGrid_.getTileSize(e),n="number"==typeof r?r:r[0],i="number"==typeof r?r:r[1],o=this.targetTileGrid_.getResolution(e),a=this.sourceTileGrid_.getResolution(this.sourceZ_),s=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=rc(n,i,this.pixelRatio_,a,this.sourceTileGrid_.getExtent(),o,s,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=to}this.changed()},e.prototype.load=function(){if(this.state==Ji){this.state=Qi,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,r,n){var i=e.getState();if(i==Ji||i==Qi){t++;var o=Z(e,F,(function(r){var n=e.getState();n!=to&&n!=eo&&n!=ro||(H(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,r){t.getState()==Ji&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(H),this.sourcesListenerKeys_=null},e}(lo),Fp="tileloadstart",Ap="tileloadend",kp="tileloaderror",jp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Np(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Dp=function(t){function e(e){var r=t.call(this)||this;return r.projection_=Gr(e.projection),r.attributions_=Np(e.attributions),r.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,r.loading=!1,r.state_=void 0!==e.state?e.state:Qo,r.wrapX_=void 0!==e.wrapX&&e.wrapX,r}return jp(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return n()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=Np(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(ot),Gp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX})||this;r.opaque_=void 0!==e.opaque&&e.opaque,r.tilePixelRatio_=void 0!==e.tilePixelRatio?e.tilePixelRatio:1,r.tileGrid=void 0!==e.tileGrid?e.tileGrid:null;var n=e.tileGrid;return n&&Is(n.getTileSize(n.getMinZoom()),[256,256]),r.tileCache=new yu(e.cacheSize||0),r.tmpSize=[0,0],r.key_=e.key||"",r.tileOptions={transition:e.transition},r.zDirection=e.zDirection?e.zDirection:0,r}return Gp(e,t),e.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);r&&r.expireCache(e)},e.prototype.forEachLoadedTile=function(t,e,r,n){var i=this.getTileCacheForProjection(t);if(!i)return!1;for(var o,a,s,l=!0,u=r.minX;u<=r.maxX;++u)for(var c=r.minY;c<=r.maxY;++c)a=cu(e,u,c),s=!1,i.containsKey(a)&&(s=(o=i.get(a)).getState()===to)&&(s=!1!==n(o)),s||(l=!1);return l},e.prototype.getGutterForProjection=function(t){return 0},e.prototype.getKey=function(){return this.key_},e.prototype.setKey=function(t){this.key_!==t&&(this.key_=t,this.changed())},e.prototype.getOpaque=function(t){return this.opaque_},e.prototype.getResolutions=function(){return this.tileGrid.getResolutions()},e.prototype.getTile=function(t,e,r,i,o){return n()},e.prototype.getTileGrid=function(){return this.tileGrid},e.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:oc(t)},e.prototype.getTileCacheForProjection=function(t){return pt(Xr(this.getProjection(),t),68),this.tileCache},e.prototype.getTilePixelRatio=function(t){return this.tilePixelRatio_},e.prototype.getTilePixelSize=function(t,e,r){var n=this.getTileGridForProjection(r),i=this.getTilePixelRatio(e),o=Is(n.getTileSize(t),this.tmpSize);return 1==i?o:Rs(o,i,this.tmpSize)},e.prototype.getTileCoordForTileUrlFunction=function(t,e){var r=void 0!==e?e:this.getProjection(),n=this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(t=ac(n,t,r)),du(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var r=this.getTileCacheForProjection(e);t>r.highWaterMark&&(r.highWaterMark=t)},e.prototype.useTile=function(t,e,r,n){},e}(Dp),Up=function(t){function e(e,r){var n=t.call(this,e)||this;return n.tile=r,n}return Gp(e,t),e}(c),Bp=zp,Vp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yp=function(t){function e(r){var n=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,opaque:r.opaque,projection:r.projection,state:r.state,tileGrid:r.tileGrid,tilePixelRatio:r.tilePixelRatio,wrapX:r.wrapX,transition:r.transition,key:r.key,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this;return n.generateTileUrlFunction_=n.tileUrlFunction===e.prototype.tileUrlFunction,n.tileLoadFunction=r.tileLoadFunction,r.tileUrlFunction&&(n.tileUrlFunction=r.tileUrlFunction),n.urls=null,r.urls?n.setUrls(r.urls):r.url&&n.setUrl(r.url),n.tileLoadingKeys_={},n}return Vp(e,t),e.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},e.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},e.prototype.getUrls=function(){return this.urls},e.prototype.handleTileChange=function(t){var e,r=t.target,n=o(r),i=r.getState();i==Qi?(this.tileLoadingKeys_[n]=!0,e=Fp):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=i==eo?kp:i==to?Ap:void 0),null!=e&&this.dispatchEvent(new Up(e,r))},e.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},e.prototype.setTileUrlFunction=function(t,e){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==e?this.setKey(e):this.changed()},e.prototype.setUrl=function(t){var e=yc(t);this.urls=e,this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(fc(t,this.tileGrid),e):this.setKey(e)},e.prototype.tileUrlFunction=function(t,e,r){},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),Wp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function qp(t,e){t.getImage().src=e}var Xp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:qp,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return r.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,r.tileClass=void 0!==e.tileClass?e.tileClass:vo,r.tileCacheForProjection={},r.tileGridForProjection={},r.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r.renderReprojectionEdges_=!1,r}return Wp(e,t),e.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);for(var n in this.tileCache.expireCache(this.tileCache==r?e:{}),this.tileCacheForProjection){var i=this.tileCacheForProjection[n];i.expireCache(i==r?e:{})}},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Xr(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getKey=function(){return t.prototype.getKey.call(this)+(this.contextOptions_?"\n"+JSON.stringify(this.contextOptions_):"")},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!Xr(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!Xr(e,t)){var r=o(t);return r in this.tileGridForProjection||(this.tileGridForProjection[r]=oc(t)),this.tileGridForProjection[r]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||Xr(e,t))return this.tileCache;var r=o(t);return r in this.tileCacheForProjection||(this.tileCacheForProjection[r]=new yu(this.tileCache.highWaterMark)),this.tileCacheForProjection[r]},e.prototype.createTile_=function(t,e,r,n,i,o){var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=s?this.tileUrlFunction(s,n,i):void 0,u=new this.tileClass(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return u.key=o,u.addEventListener(F,this.handleTileChange.bind(this)),u},e.prototype.getTile=function(t,e,r,n,i){var o=this.getProjection();if(o&&i&&!Xr(o,i)){var a=this.getTileCacheForProjection(i),s=[t,e,r],l=void 0,u=hu(s);a.containsKey(u)&&(l=a.get(u));var c=this.getKey();if(l&&l.key==c)return l;var h=this.getTileGridForProjection(o),p=this.getTileGridForProjection(i),f=this.getTileCoordForTileUrlFunction(s,i),d=new Mp(o,h,i,p,s,f,this.getTilePixelRatio(n),this.getGutter(),function(t,e,r,n){return this.getTileInternal(t,e,r,n,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.contextOptions_);return d.key=c,l?(d.interimTile=l,d.refreshInterimChain(),a.replace(u,d)):a.set(u,d),d}return this.getTileInternal(t,e,r,n,o||i)},e.prototype.getTileInternal=function(t,e,r,n,i){var o=null,a=cu(t,e,r),s=this.getKey();if(this.tileCache.containsKey(a)){if((o=this.tileCache.get(a)).key!=s){var l=o;o=this.createTile_(t,e,r,n,i,s),l.getState()==Ji?o.interimTile=l.interimTile:o.interimTile=l,o.refreshInterimChain(),this.tileCache.replace(a,o)}}else o=this.createTile_(t,e,r,n,i,s),this.tileCache.set(a,o);return o},e.prototype.setRenderReprojectionEdges=function(t){if(this.renderReprojectionEdges_!=t){for(var e in this.renderReprojectionEdges_=t,this.tileCacheForProjection)this.tileCacheForProjection[e].clear();this.changed()}},e.prototype.setTileGridForProjection=function(t,e){var r=Gr(t);if(r){var n=o(r);n in this.tileGridForProjection||(this.tileGridForProjection[n]=e)}},e}(Yp),Zp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Kp(t){var e,r,n=t[0],i=new Array(n),o=1<>=1;return i.join("")}var Hp=function(t){function e(e){var r=this,n=void 0!==e.hidpi&&e.hidpi;return(r=t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,opaque:!0,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:n?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this).hidpi_=n,r.culture_=void 0!==e.culture?e.culture:"en-us",r.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,r.apiKey_=e.key,r.imagerySet_=e.imagerySet,Au("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+r.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+r.apiKey_+"&c="+r.culture_,r.handleImageryMetadataResponse.bind(r),void 0,"jsonp"),r}return Zp(e,t),e.prototype.getApiKey=function(){return this.apiKey_},e.prototype.getImagerySet=function(){return this.imagerySet_},e.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var e=t.resourceSets[0].resources[0],r=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=hc(this.getProjection()),i=this.hidpi_?2:1,o=e.imageWidth==e.imageHeight?e.imageWidth/i:[e.imageWidth/i,e.imageHeight/i],a=lc({extent:n,minZoom:e.zoomMin,maxZoom:r,tileSize:o});this.tileGrid=a;var s=this.culture_,l=this.hidpi_;if(this.tileUrlFunction=dc(e.imageUrlSubdomains.map((function(t){var r=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",s);return function(t,e,i){if(t){uu(t[0],t[1],t[2],r);var o=n;return l&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",Kp(r))}}}))),e.imageryProviders){var u=Zr(Gr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var r=[],n=t.viewState,i=this.getTileGrid(),o=i.getZForResolution(n.resolution,this.zDirection),a=i.getTileCoordForCoordAndZ(n.center,o)[0];return e.imageryProviders.map((function(e){for(var n=!1,i=e.coverageAreas,o=0,s=i.length;o=l.zoomMin&&a<=l.zoomMax){var c=l.bbox;if(Re(Ae([c[1],c[0],c[3],c[2]],u),t.extent)){n=!0;break}}}n&&r.push(e.attribution)})),r.push('Terms of Use'),r}.bind(this))}this.setState(Qo)}else this.setState(ta)},e}(Xp),$p=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jp=function(t){function e(e){var r=e||{},n=void 0!==r.projection?r.projection:"EPSG:3857",i=void 0!==r.tileGrid?r.tileGrid:lc({extent:hc(n),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,imageSmoothing:r.imageSmoothing,opaque:r.opaque,projection:n,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this}return $p(e,t),e}(Xp),Qp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,maxZoom:void 0!==e.maxZoom?e.maxZoom:18,minZoom:e.minZoom,projection:e.projection,transition:e.transition,wrapX:e.wrapX})||this;return r.account_=e.account,r.mapId_=e.map||"",r.config_=e.config||{},r.templateCache_={},r.initializeMap_(),r}return Qp(e,t),e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){O(this.config_,t),this.initializeMap_()},e.prototype.setConfig=function(t){this.config_=t||{},this.initializeMap_()},e.prototype.initializeMap_=function(){var t=JSON.stringify(this.config_);if(this.templateCache_[t])this.applyTemplate_(this.templateCache_[t]);else{var e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);var r=new XMLHttpRequest;r.addEventListener("load",this.handleInitResponse_.bind(this,t)),r.addEventListener("error",this.handleInitError_.bind(this)),r.open("POST",e),r.setRequestHeader("Content-type","application/json"),r.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var r=e.target;if(!r.status||r.status>=200&&r.status<300){var n=void 0;try{n=JSON.parse(r.responseText)}catch(t){return void this.setState(ta)}this.applyTemplate_(n),this.templateCache_[t]=n,this.setState(Qo)}else this.setState(ta)},e.prototype.handleInitError_=function(t){this.setState(ta)},e.prototype.applyTemplate_=function(t){var e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)},e}(Jp),ef="addfeature",rf="changefeature",nf="clear",of="removefeature",af="featuresloadstart",sf="featuresloadend",lf="featuresloaderror",uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cf=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.feature=r,i.features=n,i}return uf(e,t),e}(c),hf=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{attributions:n.attributions,projection:void 0,state:Qo,wrapX:void 0===n.wrapX||n.wrapX})||this).loader_=T,r.format_=n.format,r.overlaps_=void 0===n.overlaps||n.overlaps,r.url_=n.url,void 0!==n.loader?r.loader_=n.loader:void 0!==r.url_&&(pt(r.format_,7),r.loader_=Mu(r.url_,r.format_)),r.strategy_=void 0!==n.strategy?n.strategy:Fu;var i,o,a=void 0===n.useSpatialIndex||n.useSpatialIndex;return r.featuresRtree_=a?new Rp:null,r.loadedExtentsRtree_=new Rp,r.nullGeometryFeatures_={},r.idIndex_={},r.uidIndex_={},r.featureChangeKeys_={},r.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(i=n.features).getArray()),a||void 0!==i||(i=new ht(o)),void 0!==o&&r.addFeaturesInternal(o),void 0!==i&&r.bindFeaturesCollection_(i),r}return uf(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=o(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var r=t.getGeometry();if(r){var n=r.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new cf(ef,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[Z(e,F,this.handleFeatureChange_,this),Z(e,h,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var r=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?r=!1:this.idIndex_[n.toString()]=e),r&&(pt(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),r},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],r=[],n=[],i=0,a=t.length;i=0;--r){var n=this.geometryFunction(t[r]);n?xr(e,n.getCoordinates()):t.splice(r,1)}Pr(e,1/t.length);var i=new gt(new qn(e));return i.set("features",t),i},e}(hf),df=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gf="default",yf="truncated",mf=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this,r,n,i,o,a,s)||this;return l.zoomifyImage_=null,l.tileSize_=e,l}return df(e,t),e.prototype.getImage=function(){if(this.zoomifyImage_)return this.zoomifyImage_;var e=t.prototype.getImage.call(this);if(this.state==to){var r=this.tileSize_;if(e.width==r[0]&&e.height==r[1])return this.zoomifyImage_=e,e;var n=uo(r[0],r[1]);return n.drawImage(e,0,0),this.zoomifyImage_=n.canvas,n.canvas}return e},e}(vo),vf=function(t){function e(e){var r=this,n=e,i=n.size,o=void 0!==n.tierSizeCalculation?n.tierSizeCalculation:gf,a=n.tilePixelRatio||1,s=i[0],l=i[1],u=[],c=n.tileSize||256,h=c*a;switch(o){case gf:for(;s>h||l>h;)u.push([Math.ceil(s/h),Math.ceil(l/h)]),h+=h;break;case yf:for(var p=s,f=l;p>h||f>h;)u.push([Math.ceil(p/h),Math.ceil(f/h)]),p>>=1,f>>=1;break;default:pt(!1,53)}u.push([1,1]),u.reverse();for(var d=[a],g=[0],y=1,m=u.length;y1,n=r&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],i=r&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=r&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:_f(e.supports,n),formats:_f(e.formats,i),qualities:_f(e.qualities,o)}},Of[wf]=function(t){var e=t.getComplianceLevelSupportedFeatures(),r=void 0===t.imageInfo.extraFormats?e.formats:_f(e.formats,t.imageInfo.extraFormats),n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&r.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:_f(e.supports,t.imageInfo.extraFeatures),formats:r,qualities:void 0===t.imageInfo.extraQualities?e.qualities:_f(e.qualities,t.imageInfo.extraQualities),preferredFormat:n}};var Pf=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&Tf.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var e=this.getComplianceLevelEntryFromProfile(t);if(void 0!==e){var r=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(r)?r[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?Sf.none.none:Sf[t][e]}},t.prototype.getTileSourceOptions=function(t){var e=t||{},r=this.getImageApiVersion();if(void 0!==r){var n=void 0===r?void 0:Of[r](this);if(void 0!==n)return{url:n.url,version:r,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}}},t}(),Rf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function If(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Lf=function(t){function e(e){var r=this,n=e||{},i=n.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";var o=n.version||xf,a=n.sizes||[],s=n.size;pt(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,60);var l,u,c,h=s[0],p=s[1],f=n.tileSize,d=n.tilePixelRatio||1,g=n.format||"jpg",y=n.quality||(n.version==bf?"native":"default"),m=n.resolutions||[],v=n.supports||[],_=n.extent||[0,-p,h,0],b=null!=a&&Array.isArray(a)&&a.length>0,x=void 0!==f&&("number"==typeof f&&Number.isInteger(f)&&f>0||Array.isArray(f)&&f.length>0),w=null!=v&&Array.isArray(v)&&(v.includes("regionByPx")||v.includes("regionByPct"))&&(v.includes("sizeByWh")||v.includes("sizeByH")||v.includes("sizeByW")||v.includes("sizeByPct"));if(m.sort((function(t,e){return e-t})),x||w)if(null!=f&&("number"==typeof f&&Number.isInteger(f)&&f>0?(l=f,u=f):Array.isArray(f)&&f.length>0&&((1==f.length||null==f[1]&&Number.isInteger(f[0]))&&(l=f[0],u=f[0]),2==f.length&&(Number.isInteger(f[0])&&Number.isInteger(f[1])?(l=f[0],u=f[1]):null==f[0]&&Number.isInteger(f[1])&&(l=f[1],u=f[1])))),void 0!==l&&void 0!==u||(l=256,u=256),0==m.length)for(var S=c=Math.max(Math.ceil(Math.log(h/l)/Math.LN2),Math.ceil(Math.log(p/u)/Math.LN2));S>=0;S--)m.push(Math.pow(2,S));else{var E=Math.max.apply(Math,m);c=Math.round(Math.log(E)/Math.LN2)}else if(l=h,u=p,m=[],b){a.sort((function(t,e){return t[0]-e[0]})),c=-1;var T=[];for(S=0;S0&&m[m.length-1]==C?T.push(S):(m.push(C),c++)}if(T.length>0)for(S=0;Sc)){var d=t[1],_=t[2],S=m[f];if(!(void 0===d||void 0===_||void 0===S||d<0||Math.ceil(h/S/l)<=d||_<0||Math.ceil(p/S/u)<=_)){if(w||x){var E=d*l*S,T=_*u*S,C=l*S,O=u*S,P=l,R=u;if(E+C>h&&(C=h-E),T+O>p&&(O=p-T),E+l*S>h&&(P=Math.floor((h-E+S-1)/S)),T+u*S>p&&(R=Math.floor((p-T+S-1)/S)),0==E&&C==h&&0==T&&O==p)n="full";else if(!w||v.includes("regionByPx"))n=E+","+T+","+C+","+O;else if(v.includes("regionByPct")){n="pct:"+If(E/h*100)+","+If(T/p*100)+","+If(C/h*100)+","+If(O/p*100)}o!=wf||w&&!v.includes("sizeByWh")?!w||v.includes("sizeByW")?s=P+",":v.includes("sizeByH")?s=","+R:v.includes("sizeByWh")?s=P+","+R:v.includes("sizeByPct")&&(s="pct:"+If(100/S)):s=P+","+R}else if(n="full",b){var I=a[f][0],L=a[f][1];s=o==wf?I==h&&L==p?"max":I+","+L:I==h?"full":I+","}else s=o==wf?"max":"full";return i+n+"/"+s+"/0/"+y+"."+g}}},transition:n.transition})||this).zDirection=n.zDirection,r}return Rf(e,t),e}(Xp),Mf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ff=function(t){function e(e,r,n,i,o,a,s){var l=this,u=e.getExtent(),c=r.getExtent(),h=c?Te(n,c):n,p=tc(e,r,xe(h),i),f=new Ip(e,r,h,u,.5*p,i),d=a(f.calculateSourceExtent(),p,o),g=d?Fi:Ni,y=d?d.getPixelRatio():1;return(l=t.call(this,n,i,y,g)||this).targetProj_=r,l.maxSourceExtent_=u,l.triangulation_=f,l.targetResolution_=i,l.targetExtent_=n,l.sourceImage_=d,l.sourcePixelRatio_=y,l.contextOptions_=s,l.canvas_=null,l.sourceListenerKey_=null,l}return Mf(e,t),e.prototype.disposeInternal=function(){this.state==Ai&&this.unlistenSource_(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.canvas_},e.prototype.getProjection=function(){return this.targetProj_},e.prototype.reproject_=function(){var t=this.sourceImage_.getState();if(t==ki){var e=Pe(this.targetExtent_)/this.targetResolution_,r=Ee(this.targetExtent_)/this.targetResolution_;this.canvas_=rc(e,r,this.sourcePixelRatio_,this.sourceImage_.getResolution(),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.contextOptions_)}this.state=t,this.changed()},e.prototype.load=function(){if(this.state==Fi){this.state=Ai,this.changed();var t=this.sourceImage_.getState();t==ki||t==ji?this.reproject_():(this.sourceListenerKey_=Z(this.sourceImage_,F,(function(t){var e=this.sourceImage_.getState();e!=ki&&e!=ji||(this.unlistenSource_(),this.reproject_())}),this),this.sourceImage_.load())}},e.prototype.unlistenSource_=function(){H(this.sourceListenerKey_),this.sourceListenerKey_=null},e}(Mi),Af=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),kf="imageloadstart",jf="imageloadend",Nf="imageloaderror",Df=function(t){function e(e,r){var n=t.call(this,e)||this;return n.image=r,n}return Af(e,t),e}(c);function Gf(t,e){t.getImage().src=e}var zf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,projection:e.projection,state:e.state})||this;return r.resolutions_=void 0!==e.resolutions?e.resolutions:null,r.reprojectedImage_=null,r.reprojectedRevision_=0,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r}return Af(e,t),e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.findNearestResolution=function(t){if(this.resolutions_){var e=y(this.resolutions_,t,0);t=this.resolutions_[e]}return t},e.prototype.getImage=function(t,e,r,n){var i=this.getProjection();if(i&&n&&!Xr(i,n)){if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Xr(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&ue(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Ff(i,n,t,e,r,function(t,e,r){return this.getImageInternal(t,e,r,i)}.bind(this),this.contextOptions_),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}return i&&(n=i),this.getImageInternal(t,e,r,n)},e.prototype.getImageInternal=function(t,e,r,i){return n()},e.prototype.handleImageChange=function(t){var e=t.target;switch(e.getState()){case Ai:this.loading=!0,this.dispatchEvent(new Df(kf,e));break;case ki:this.loading=!1,this.dispatchEvent(new Df(jf,e));break;case ji:this.loading=!1,this.dispatchEvent(new Df(Nf,e))}},e}(Dp),Uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.hidpi_=void 0===n.hidpi||n.hidpi,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Uf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};O(o,this.params_);var a=((t=t.slice())[0]+t[2])/2,s=(t[1]+t[3])/2;if(1!=this.ratio_){var l=this.ratio_*Pe(t)/2,u=this.ratio_*Ee(t)/2;t[0]=a-l,t[1]=s-u,t[2]=a+l,t[3]=s+u}var c=e/r,h=Math.ceil(Pe(t)/c),p=Math.ceil(Ee(t)/c);t[0]=a-c*h/2,t[2]=a+c*h/2,t[1]=s-c*p/2,t[3]=s+c*p/2,this.imageSize_[0]=h,this.imageSize_[1]=p;var f=this.getRequestUrl_(t,this.imageSize_,r,n,o);return this.image_=new Ki(t,e,r,f,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){var o=n.getCode().split(":").pop();i.SIZE=e[0]+","+e[1],i.BBOX=t.join(","),i.BBOXSR=o,i.IMAGESR=o,i.DPI=Math.round(90*r);var a=this.url_,s=a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return s==a&&pt(!1,50),mc(s,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.image_=null,this.changed()},e}(zf),Vf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions,state:n.state})||this).canvasFunction_=n.canvasFunction,r.canvas_=null,r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Vf(e,t),e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e);var i=this.canvas_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r],a=this.canvasFunction_.call(this,t,e,r,o,n);return a&&(i=new $i(t,e,r,a)),this.canvas_=i,this.renderedRevision_=this.getRevision(),i},e}(zf),Wf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var qf=function(t){function e(e){var r=t.call(this,{imageSmoothing:e.imageSmoothing,projection:e.projection,resolutions:e.resolutions})||this;return r.crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,r.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,r.params_=e.params||{},r.url_=e.url,r.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf,r.hidpi_=void 0===e.hidpi||e.hidpi,r.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,r.ratio_=void 0!==e.ratio?e.ratio:1,r.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,r.image_=null,r.renderedRevision_=0,r}return Wf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;1!=this.ratio_&&Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r];if(void 0!==this.url_){var a=this.getUrl(this.url_,this.params_,t,o,n);(i=new Ki(t,e,r,a,this.crossOrigin_,this.imageLoadFunction_)).addEventListener(F,this.handleImageChange.bind(this))}else i=null;return this.image_=i,this.renderedRevision_=this.getRevision(),i},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){O(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,r,n,i){var o=function(t,e,r,n){var i=Pe(t),o=Ee(t),a=e[0],s=e[1],l=.0254/n;return s*i>a*o?i*r/(a*l):o*r/(s*l)}(r,n,this.metersPerUnit_,this.displayDpi_),a=xe(r),s={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:o,SETVIEWCENTERX:a[0],SETVIEWCENTERY:a[1]};return O(s,e),mc(t,s)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(zf),Xf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zf=function(t){function e(e){var r=this,n=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf;return(r=t.call(this,{attributions:e.attributions,imageSmoothing:e.imageSmoothing,projection:Gr(e.projection)})||this).url_=e.url,r.imageExtent_=e.imageExtent,r.image_=new Ki(r.imageExtent_,void 0,1,r.url_,n,i),r.imageSize_=e.imageSize?e.imageSize:null,r.image_.addEventListener(F,r.handleImageChange.bind(r)),r}return Xf(e,t),e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,r,n){return Re(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==ki){var r=this.image_.getExtent(),n=this.image_.getImage(),i=void 0,o=void 0;this.imageSize_?(i=this.imageSize_[0],o=this.imageSize_[1]):(i=n.width,o=n.height);var a=Ee(r)/o,s=Math.ceil(Pe(r)/a);if(s!=i){var l=uo(s,o);O(l,this.getContextOptions());var u=l.canvas;l.drawImage(n,0,0,i,o,0,0,u.width,u.height),this.image_.setImage(u)}}t.prototype.handleImageChange.call(this,e)},e}(zf),Kf="carmentaserver",Hf="geoserver",$f="mapserver",Jf="qgis",Qf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),td=[101,101],ed=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.v13_=!0,r.updateV13_(),r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Qf(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){if(void 0!==this.url_){var i=Gr(r),o=this.getProjection();o&&o!==i&&(e=tc(o,i,t,e),t=Hr(t,i,o));var a=Se(t,e,0,td),s={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(s,this.params_,n);var l=Math.floor((t[0]-a[0])/e),u=Math.floor((a[3]-t[1])/e);return s[this.v13_?"I":"X"]=l,s[this.v13_?"J":"Y"]=u,this.getRequestUrl_(a,td,1,o||i,s)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.url_){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.url_,r)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==r||this.hidpi_&&void 0!==this.serverType_||(r=1);var i=e/r,o=xe(t),a=Se(o,i,0,[Math.ceil(Pe(t)/i),Math.ceil(Ee(t)/i)]),s=Se(o,i,0,[Math.ceil(this.ratio_*Pe(t)/i),Math.ceil(this.ratio_*Ee(t)/i)]),l=this.image_;if(l&&this.renderedRevision_==this.getRevision()&&l.getResolution()==e&&l.getPixelRatio()==r&&te(l.getExtent(),a))return l;var u={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};O(u,this.params_),this.imageSize_[0]=Math.round(Pe(s)/i),this.imageSize_[1]=Math.round(Ee(s)/i);var c=this.getRequestUrl_(s,this.imageSize_,r,n,u);return this.image_=new Ki(s,e,r,c,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){if(pt(void 0!==this.url_,9),i[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(i.STYLES=""),1!=r)switch(this.serverType_){case Hf:var o=90*r+.5|0;"FORMAT_OPTIONS"in i?i.FORMAT_OPTIONS+=";dpi:"+o:i.FORMAT_OPTIONS="dpi:"+o;break;case $f:i.MAP_RESOLUTION=90*r;break;case Kf:case Jf:i.DPI=90*r;break;default:pt(!1,8)}i.WIDTH=e[0],i.HEIGHT=e[1];var a,s=n.getAxisOrientation();return a=this.v13_&&"ne"==s.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,i.BBOX=a.join(","),mc(this.url_,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e}(zf),rd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nd='© OpenStreetMap contributors.',id=function(t){function e(e){var r,n=e||{};r=void 0!==n.attributions?n.attributions:[nd];var i=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:r,attributionsCollapsible:!1,cacheSize:n.cacheSize,crossOrigin:i,imageSmoothing:n.imageSmoothing,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,opaque:void 0===n.opaque||n.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:o,wrapX:n.wrapX})||this}return rd(e,t),e}(Jp),od=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ad=function(t){function e(e){var r=e||{};return t.call(this,r)||this}return od(e,t),e}(na),sd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ld=function(t){function e(e){var r=t.call(this)||this;return r.boundHandleImageChange_=r.handleImageChange_.bind(r),r.layer_=e,r.declutterExecutorGroup=null,r}return sd(e,t),e.prototype.getFeatures=function(t){return n()},e.prototype.prepareFrame=function(t){return n()},e.prototype.renderFrame=function(t,e){return n()},e.prototype.loadedTileCallback=function(t,e,r){t[e]||(t[e]={}),t[e][r.tileCoord.toString()]=r},e.prototype.createLoadedTileFinder=function(t,e,r){return function(n,i){var o=this.loadedTileCallback.bind(this,r,n);return t.forEachLoadedTile(e,n,i,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){},e.prototype.getDataAtPixel=function(t,e,r){return n()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===ki&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=ki&&e!=ji&&t.addEventListener(F,this.boundHandleImageChange_),e==Fi&&(t.load(),e=t.getState()),e==ki},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Qo&&t.changed()},e}(Q),ud=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cd=function(t){function e(e){var r=t.call(this,e)||this;return r.container=null,r.renderedResolution,r.tempTransform=[1,0,0,1,0,0],r.pixelTransform=[1,0,0,1,0,0],r.inversePixelTransform=[1,0,0,1,0,0],r.context=null,r.containerReused=!1,r}return ud(e,t),e.prototype.useContainer=function(t,e,r){var n,i,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((s=t.firstElementChild)instanceof HTMLCanvasElement&&(i=s.getContext("2d")));if(!i||0!==i.canvas.width&&i.canvas.style.transform!==e?this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1):(this.container=t,this.context=i,this.containerReused=!0),!this.container){(n=document.createElement("div")).className=o;var a=n.style;a.position="absolute",a.width="100%",a.height="100%";var s=(i=uo()).canvas;n.appendChild(s),(a=s.style).position="absolute",a.left="0",a.transformOrigin="top left",this.container=n,this.context=i}},e.prototype.clip=function(t,e,r){var n=e.pixelRatio,i=e.size[0]*n/2,o=e.size[1]*n/2,a=e.viewState.rotation,s=Ce(r),l=Oe(r),u=be(r),c=_e(r);It(e.coordinateToPixelTransform,s),It(e.coordinateToPixelTransform,l),It(e.coordinateToPixelTransform,u),It(e.coordinateToPixelTransform,c),t.save(),Ca(t,-a,i,o),t.beginPath(),t.moveTo(s[0]*n,s[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(u[0]*n,u[1]*n),t.lineTo(c[0]*n,c[1]*n),t.clip(),Ca(t,a,i,o)},e.prototype.clipUnrotated=function(t,e,r){var n=Ce(r),i=Oe(r),o=be(r),a=_e(r);It(e.coordinateToPixelTransform,n),It(e.coordinateToPixelTransform,i),It(e.coordinateToPixelTransform,o),It(e.coordinateToPixelTransform,a);var s=this.inversePixelTransform;It(s,n),It(s,i),It(s,o),It(s,a),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(i[0]),Math.round(i[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(a[0]),Math.round(a[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,r){var n=this.getLayer();if(n.hasListener(t)){var i=new la(t,this.inversePixelTransform,r,e);n.dispatchEvent(i)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(qo,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(Xo,t,e)},e.prototype.getRenderTransform=function(t,e,r,n,i,o,a){var s=i/2,l=o/2,u=n/e,c=-u,h=-t[0]+a,p=-t[1];return kt(this.tempTransform,s,l,u,c,-r,h,p)},e.prototype.getDataAtPixel=function(t,e,r){var n,i=It(this.inversePixelTransform,t.slice()),o=this.context,a=this.getLayer().getExtent();if(a&&!Qt(a,It(e.pixelToCoordinateTransform,t.slice())))return null;try{var s=Math.round(i[0]),l=Math.round(i[1]),u=document.createElement("canvas"),c=u.getContext("2d");u.width=1,u.height=1,c.clearRect(0,0,1,1),c.drawImage(o.canvas,s,l,1,1,0,0,1,1),n=c.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(ld),hd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pd=function(t){function e(e){var r=t.call(this,e)||this;return r.image_=null,r}return hd(e,t),e.prototype.getImage=function(){return this.image_?this.image_.getImage():null},e.prototype.prepareFrame=function(t){var e=t.layerStatesArray[t.layerIndex],r=t.pixelRatio,n=t.viewState,i=n.resolution,o=this.getLayer().getSource(),a=t.viewHints,s=t.extent;if(void 0!==e.extent&&(s=Te(s,on(e.extent,n.projection))),!a[ns]&&!a[is]&&!Ie(s))if(o){var l=n.projection,u=o.getImage(s,i,r,l);u&&this.loadImage(u)&&(this.image_=u)}else this.image_=null;return!!this.image_},e.prototype.renderFrame=function(t,e){var r=this.image_,n=r.getExtent(),i=r.getResolution(),o=r.getPixelRatio(),a=t.layerStatesArray[t.layerIndex],s=t.pixelRatio,l=t.viewState,u=l.center,c=l.resolution,h=t.size,p=s*i/(c*o),f=Math.round(h[0]*s),d=Math.round(h[1]*s),g=l.rotation;if(g){var y=Math.round(Math.sqrt(f*f+d*d));f=y,d=y}kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,g,-f/2,-d/2),jt(this.inversePixelTransform,this.pixelTransform);var m=Ra(this.pixelTransform);this.useContainer(e,m,a.opacity);var v=this.context,_=v.canvas;_.width!=f||_.height!=d?(_.width=f,_.height=d):this.containerReused||v.clearRect(0,0,f,d);var b=!1;if(a.extent){var x=on(a.extent,l.projection);(b=!te(x,t.extent)&&Re(x,t.extent))&&this.clipUnrotated(v,t,x)}var w=r.getImage(),S=kt(this.tempTransform,f/2,d/2,p,p,0,o*(n[0]-u[0])/i,o*(u[1]-n[3])/i);this.renderedResolution=i*s/o;var E=S[4],T=S[5],C=w.width*S[0],P=w.height*S[3];if(O(v,this.getLayer().getSource().getContextOptions()),this.preRender(v,t),C>=.5&&P>=.5){var R=a.opacity,I=void 0;1!==R&&(I=this.context.globalAlpha,this.context.globalAlpha=R),this.context.drawImage(w,0,0,+w.width,+w.height,Math.round(E),Math.round(T),Math.round(C),Math.round(P)),1!==R&&(this.context.globalAlpha=I)}return this.postRender(v,t),b&&v.restore(),m!==_.style.transform&&(_.style.transform=m),this.container},e}(cd),fd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dd=function(t){function e(e){return t.call(this,e)||this}return fd(e,t),e.prototype.createRenderer=function(){return new pd(this)},e}(ad),gd="preload",yd="useInterimTilesOnError",md=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vd=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.preload,delete i.useInterimTilesOnError,(r=t.call(this,i)||this).setPreload(void 0!==n.preload?n.preload:0),r.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),r}return md(e,t),e.prototype.getPreload=function(){return this.get(gd)},e.prototype.setPreload=function(t){this.set(gd,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(yd)},e.prototype.setUseInterimTilesOnError=function(t){this.set(yd,t)},e}(na),_d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bd=function(t){function e(e){var r=t.call(this,e)||this;return r.extentChanged=!0,r.renderedExtent_=null,r.renderedPixelRatio,r.renderedProjection=null,r.renderedRevision,r.renderedTiles=[],r.newTiles_=!1,r.tmpExtent=[1/0,1/0,-1/0,-1/0],r.tmpTileRange_=new _u(0,0,0,0),r}return _d(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),r=t.getState(),n=e.getUseInterimTilesOnError();return r==to||r==ro||r==eo&&!n},e.prototype.getTile=function(t,e,r,n){var i=n.pixelRatio,o=n.viewState.projection,a=this.getLayer(),s=a.getSource().getTile(t,e,r,i,o);return s.getState()==eo&&(a.getUseInterimTilesOnError()?a.getPreload()>0&&(this.newTiles_=!0):s.setState(to)),this.isDrawableTile(s)||(s=s.getInterimTile()),s},e.prototype.loadedTileCallback=function(e,r,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,r,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var r=t.layerStatesArray[t.layerIndex],n=t.viewState,i=n.projection,a=n.resolution,s=n.center,l=n.rotation,u=t.pixelRatio,c=this.getLayer(),h=c.getSource(),p=h.getRevision(),f=h.getTileGridForProjection(i),g=f.getZForResolution(a,h.zDirection),y=f.getResolution(g),m=t.extent,v=r.extent&&on(r.extent,i);v&&(m=Te(m,on(r.extent,i)));var _=h.getTilePixelRatio(u),b=Math.round(t.size[0]*_),x=Math.round(t.size[1]*_);if(l){var w=Math.round(Math.sqrt(b*b+x*x));b=w,x=w}var S=y*b/2/_,E=y*x/2/_,T=[s[0]-S,s[1]-E,s[0]+S,s[1]+E],C=f.getTileRangeForExtentAndZ(m,g),P={};P[g]={};var R=this.createLoadedTileFinder(h,i,P),I=this.tmpExtent,L=this.tmpTileRange_;this.newTiles_=!1;for(var M=C.minX;M<=C.maxX;++M)for(var F=C.minY;F<=C.maxY;++F){var A=this.getTile(g,M,F,t);if(this.isDrawableTile(A)){var k=o(this);if(A.getState()==to){P[g][A.tileCoord.toString()]=A;var j=A.inTransition(k);this.newTiles_||!j&&-1!==this.renderedTiles.indexOf(A)||(this.newTiles_=!0)}if(1===A.getAlpha(k,t.time))continue}var N=f.getTileCoordChildTileRange(A.tileCoord,L,I),D=!1;N&&(D=R(g+1,N)),D||f.forEachTileCoordParentTileRange(A.tileCoord,R,L,I)}var G=y/a;kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/_,1/_,l,-b/2,-x/2);var z=Ra(this.pixelTransform);this.useContainer(e,z,r.opacity);var U=this.context,B=U.canvas;jt(this.inversePixelTransform,this.pixelTransform),kt(this.tempTransform,b/2,x/2,G,G,0,-b/2,-x/2),B.width!=b||B.height!=x?(B.width=b,B.height=x):this.containerReused||U.clearRect(0,0,b,x),v&&this.clipUnrotated(U,t,v),O(U,h.getContextOptions()),this.preRender(U,t),this.renderedTiles.length=0;var V,Y,W,q=Object.keys(P).map(Number);q.sort(d),1!==r.opacity||this.containerReused&&!h.getOpaque(t.viewState.projection)?(V=[],Y=[]):q=q.reverse();for(var X=q.length-1;X>=0;--X){var Z=q[X],K=h.getTilePixelSize(Z,u,i),H=f.getResolution(Z)/y,$=K[0]*H*G,J=K[1]*H*G,Q=f.getTileCoordForCoordAndZ(Ce(T),Z),tt=f.getTileCoordExtent(Q),et=It(this.tempTransform,[_*(tt[0]-T[0])/y,_*(T[3]-tt[3])/y]),rt=_*h.getGutterForProjection(i),nt=P[Z];for(var it in nt){var ot=(A=nt[it]).tileCoord,at=et[0]-(Q[1]-ot[1])*$,st=Math.round(at+$),lt=et[1]-(Q[2]-ot[2])*J,ut=Math.round(lt+J),ct=st-(M=Math.round(at)),ht=ut-(F=Math.round(lt)),pt=g===Z;if(!(j=pt&&1!==A.getAlpha(o(this),t.time)))if(V){U.save(),W=[M,F,M+ct,F,M+ct,F+ht,M,F+ht];for(var ft=0,dt=V.length;ftthis._maxQueueLength;)this._queue.shift().callback(null,null)},e.prototype._dispatch=function(){if(0===this._running&&this._queue.length>0){var t=this._queue.shift();this._job=t;var e=t.inputs[0].width,r=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),i=this._workers.length;if(this._running=i,1===i)this._workers[0].postMessage({buffers:n,meta:t.meta,imageOps:this._imageOps,width:e,height:r},n);else for(var o=t.inputs[0].data.length,a=4*Math.ceil(o/4/i),s=0;sStamen Design, under CC BY 3.0.',nd],Vd={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},Yd={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},Wd=function(t){function e(e){var r=e.layer.indexOf("-"),n=-1==r?e.layer:e.layer.slice(0,r),i=Yd[n],o=Vd[e.layer],a=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+o.extension;return t.call(this,{attributions:Bd,cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,maxZoom:null!=e.maxZoom?e.maxZoom:i.maxZoom,minZoom:null!=e.minZoom?e.minZoom:i.minZoom,opaque:o.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:a,wrapX:e.wrapX})||this}return Ud(e,t),e}(Jp),qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xd=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).params_=n.params||{},r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.setKey(r.getKeyForParams_()),r}return qd(e,t),e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){var s,l=i.getCode().split(":").pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=r.join(","),o.BBOXSR=l,o.IMAGESR=l,o.DPI=Math.round(o.DPI?o.DPI*n:90*n),1==a.length)s=a[0];else s=a[We(fu(t),a.length)];return mc(s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_?t:1},e.prototype.updateParams=function(t){O(this.params_,t),this.setKey(this.getKeyForParams_())},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_||(e=1);var i=n.getTileCoordExtent(t,this.tmpExtent_),o=Is(n.getTileSize(t[0]),this.tmpSize);1!=e&&(o=Rs(o,e,this.tmpSize));var a={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return O(a,this.params_),this.getRequestUrl_(t,o,i,e,r,a)}},e}(Xp),Zd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kd=function(t){function e(e,r,n){var i=t.call(this,e,to)||this;return i.tileSize_=r,i.text_=n,i.canvas_=null,i}return Zd(e,t),e.prototype.getImage=function(){if(this.canvas_)return this.canvas_;var t=this.tileSize_,e=uo(t[0],t[1]);return e.strokeStyle="grey",e.strokeRect(.5,.5,t[0]+.5,t[1]+.5),e.fillStyle="grey",e.strokeStyle="white",e.textAlign="center",e.textBaseline="middle",e.font="24px sans-serif",e.lineWidth=4,e.strokeText(this.text_,t[0]/2,t[1]/2,t[0]),e.fillText(this.text_,t[0]/2,t[1]/2,t[0]),this.canvas_=e.canvas,e.canvas},e.prototype.load=function(){},e}(lo),Hd=function(t){function e(e){var r=e||{};return t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection})||this}return Zd(e,t),e.prototype.getTile=function(t,e,r){var n=cu(t,e,r);if(this.tileCache.containsKey(n))return this.tileCache.get(n);var i=Is(this.tileGrid.getTileSize(t)),o=[t,e,r],a=this.getTileCoordForTileUrlFunction(o),s=void 0;s=a?"z:"+a[0]+" x:"+a[1]+" y:"+a[2]:"none";var l=new Kd(o,i,s);return this.tileCache.set(n,l),l},e}(Jp),$d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jd=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,imageSmoothing:e.imageSmoothing,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this;if(r.tileJSON_=null,r.tileSize_=e.tileSize,e.url)if(e.jsonp)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return $d(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o,tileSize:this.tileSize_});if(this.tileGrid=s,this.tileUrlFunction=fc(t.tiles,s),void 0!==t.attribution&&!this.getAttributions()){var l=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(l,e.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState(Qo)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e}(Xp),Qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tg=function(t){function e(e){var r=this,n=e||{},i=n.params||{},o=!("TRANSPARENT"in i)||i.TRANSPARENT;return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,opaque:!o,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).gutter_=void 0!==n.gutter?n.gutter:0,r.params_=i,r.v13_=!0,r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.updateV13_(),r.setKey(r.getKeyForParams_()),r}return Qd(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){var i=Gr(r),o=this.getProjection(),a=this.getTileGrid();a||(a=this.getTileGridForProjection(i));var s=a.getZForResolution(e,this.zDirection),l=a.getTileCoordForCoordAndZ(t,s);if(!(a.getResolutions().length<=l[0])){var u=a.getResolution(l[0]),c=a.getTileCoordExtent(l,this.tmpExtent_),h=Is(a.getTileSize(l[0]),this.tmpSize),p=this.gutter_;0!==p&&(h=Os(h,p,this.tmpSize),c=Ht(c,u*p,c)),o&&o!==i&&(u=tc(o,i,t,u),c=$r(c,i,o),t=Hr(t,i,o));var f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(f,this.params_,n);var d=Math.floor((t[0]-c[0])/u),g=Math.floor((c[3]-t[1])/u);return f[this.v13_?"I":"X"]=d,f[this.v13_?"J":"Y"]=g,this.getRequestUrl_(l,h,c,1,o||i,f)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.urls[0]){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.urls[0],r)}},e.prototype.getGutter=function(){return this.gutter_},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){if(o.WIDTH=e[0],o.HEIGHT=e[1],o[this.v13_?"CRS":"SRS"]=i.getCode(),"STYLES"in this.params_||(o.STYLES=""),1!=n)switch(this.serverType_){case Hf:var s=90*n+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+s:o.FORMAT_OPTIONS="dpi:"+s;break;case $f:o.MAP_RESOLUTION=90*n;break;case Kf:case Jf:o.DPI=90*n;break;default:pt(!1,52)}var l,u=i.getAxisOrientation(),c=r;if(this.v13_&&"ne"==u.substr(0,2)){var h=void 0;h=r[0],c[0]=r[1],c[1]=h,h=r[2],c[2]=r[3],c[3]=h}if(o.BBOX=c.join(","),1==a.length)l=a[0];else l=a[We(fu(t),a.length)];return mc(l,o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_&&void 0!==this.serverType_?t:1},e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var i=n.getResolution(t[0]),o=n.getTileCoordExtent(t,this.tmpExtent_),a=Is(n.getTileSize(t[0]),this.tmpSize),s=this.gutter_;0!==s&&(a=Os(a,s,this.tmpSize),o=Ht(o,i*s,o)),1!=e&&(a=Rs(a,e,this.tmpSize));var l={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return O(l,this.params_),this.getRequestUrl_(t,a,o,e,r,l)}},e}(Xp),eg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rg=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r)||this;return s.src_=n,s.extent_=i,s.preemptive_=o,s.grid_=null,s.keys_=null,s.data_=null,s.jsonp_=a,s}return eg(e,t),e.prototype.getImage=function(){return null},e.prototype.getData=function(t){if(!this.grid_||!this.keys_)return null;var e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),r=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-r)*this.grid_.length)];if("string"!=typeof n)return null;var i=n.charCodeAt(Math.floor(e*n.length));i>=93&&i--,i>=35&&i--;var o=null;if((i-=32)in this.keys_){var a=this.keys_[i];o=this.data_&&a in this.data_?this.data_[a]:a}return o},e.prototype.forDataAtCoordinate=function(t,e,r){this.state==ro&&!0===r?(this.state=Ji,K(this,F,(function(r){e(this.getData(t))}),this),this.loadInternal_()):!0===r?setTimeout(function(){e(this.getData(t))}.bind(this),0):e(this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=eo,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=to,this.changed()},e.prototype.loadInternal_=function(){if(this.state==Ji)if(this.state=Qi,this.jsonp_)Au(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}},e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(r)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_?this.loadInternal_():this.setState(ro)},e}(lo),ng=function(t){function e(e){var r=t.call(this,{projection:Gr("EPSG:3857"),state:Jo})||this;if(r.preemptive_=void 0===e.preemptive||e.preemptive,r.tileUrlFunction_=gc,r.template_=void 0,r.jsonp_=e.jsonp||!1,e.url)if(r.jsonp_)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return eg(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,r,n){if(this.tileGrid){var i=this.tileGrid.getZForResolution(e,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,i);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,r,n)}else!0===n?setTimeout((function(){r(null)}),0):r(null)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o});this.tileGrid=s,this.template_=t.template;var l=t.grids;if(l){if(this.tileUrlFunction_=fc(l,s),void 0!==t.attribution){var u=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(u,e.extent)?[t.attribution]:null}))}this.setState(Qo)}else this.setState(ta)},e.prototype.getTile=function(t,e,r,n,i){var o=cu(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=this.tileUrlFunction_(s,n,i),u=new rg(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.tileGrid.getTileCoordExtent(a),this.preemptive_,this.jsonp_);return this.tileCache.set(o,u),u},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),ig=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),og=function(t){function e(e){var r=this,n=e.projection||"EPSG:3857",i=e.extent||hc(n),o=e.tileGrid||lc({extent:i,maxResolution:e.maxResolution,maxZoom:void 0!==e.maxZoom?e.maxZoom:22,minZoom:e.minZoom,tileSize:e.tileSize||512});return(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,opaque:!1,projection:n,state:e.state,tileGrid:o,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:ag,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:void 0===e.zDirection?1:e.zDirection})||this).format_=e.format?e.format:null,r.loadingTiles_={},r.sourceTileCache=new yu(r.tileCache.highWaterMark),r.overlaps_=null==e.overlaps||e.overlaps,r.tileClass=e.tileClass?e.tileClass:Eu,r.tileGrids_={},r}return ig(e,t),e.prototype.getFeaturesInExtent=function(t){var e=[],r=this.tileCache;if(0===r.getCount())return e;var n=pu(r.peekFirstKey())[0],i=this.tileGrid;return r.forEach((function(r){if(r.tileCoord[0]===n&&r.getState()===to)for(var o=r.getSourceTiles(),a=0,s=o.length;a0&&g[0].tileCoord[0]===f)c=g,h=!0,p=f;else{c=[],p=f+1;do{--p,h=!0,l.forEachTileCoord(o,p,function(n){var i,o=this.tileUrlFunction(n,t,e);if(void 0!==o)if(this.sourceTileCache.containsKey(o)){var a=(i=this.sourceTileCache.get(o)).getState();if(a===to||a===eo||a===ro)return void c.push(i)}else p===f&&((i=new this.tileClass(n,Ji,o,this.format_,this.tileLoadFunction)).extent=l.getTileCoordExtent(n),i.projection=e,i.resolution=l.getResolution(n[0]),this.sourceTileCache.set(o,i),i.addEventListener(F,this.handleTileChange.bind(this)),i.load());h=h&&i&&i.getState()===to,i&&i.getState()!==ro&&r.getState()===Ji&&(r.loadingSourceTiles++,i.addEventListener(F,(function t(){var e=i.getState(),n=i.getKey();if(e===to||e===eo){e===to?(i.removeEventListener(F,t),r.loadingSourceTiles--,delete r.errorSourceTileKeys[n]):e===eo&&(r.errorSourceTileKeys[n]=!0);var o=Object.keys(r.errorSourceTileKeys).length;r.loadingSourceTiles-o==0&&(r.hifi=0===o,r.sourceZ=f,r.setState(to))}})))}.bind(this)),h||(c.length=0)}while(!h&&p>d)}return r.getState()===Ji&&r.setState(Qi),h&&(r.hifi=f===p,r.sourceZ=p,r.getState()0&&(r.tileUrlFunction=dc(o.map(r.createFromWMTSTemplate.bind(r)))),r}return ug(e,t),e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(dc(t.map(this.createFromWMTSTemplate.bind(this))),e)},e.prototype.getDimensions=function(){return this.dimensions_},e.prototype.getFormat=function(){return this.format_},e.prototype.getLayer=function(){return this.layer_},e.prototype.getMatrixSet=function(){return this.matrixSet_},e.prototype.getRequestEncoding=function(){return this.requestEncoding_},e.prototype.getStyle=function(){return this.style_},e.prototype.getVersion=function(){return this.version_},e.prototype.getKeyForDimensions_=function(){var t=0,e=[];for(var r in this.dimensions_)e[t++]=r+"-"+this.dimensions_[r];return e.join("/")},e.prototype.updateDimensions=function(t){O(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e.prototype.createFromWMTSTemplate=function(t){var e=this.requestEncoding_,r={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==sg&&O(r,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==sg?mc(t,r):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in r?r[e.toLowerCase()]:t}));var n=this.tileGrid,i=this.dimensions_;return function(r,o,a){if(r){var s={TileMatrix:n.getMatrixId(r[0]),TileCol:r[1],TileRow:r[2]};O(s,i);var l=t;return l=e==sg?mc(l,s):l.replace(/\{(\w+?)\}/g,(function(t,e){return s[e]}))}}},e}(Xp);var hg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pg="GENERATE_BUFFERS",fg=function(t){function e(e,r){var n=t.call(this,e)||this,i=r||{};return n.helper=new gh({postProcesses:i.postProcesses,uniforms:i.uniforms}),void 0!==i.className&&(n.helper.getCanvas().className=i.className),n}return hg(e,t),e.prototype.disposeInternal=function(){this.helper.dispose(),t.prototype.disposeInternal.call(this)},e.prototype.getShaderCompileErrors=function(){return this.helper.getShaderCompileErrors()},e.prototype.dispatchRenderEvent_=function(t,e){var r=this.getLayer();if(r.hasListener(t)){var n=new la(t,null,e,null);r.dispatchEvent(n)}},e.prototype.preRender=function(t){this.dispatchRenderEvent_(qo,t)},e.prototype.postRender=function(t){this.dispatchRenderEvent_(Xo,t)},e}(ld),dg=[],gg={vertexPosition:0,indexPosition:0};function yg(t,e,r,n,i){t[e+0]=r,t[e+1]=n,t[e+2]=i}function mg(t,e){var r=e||[];return r[0]=Math.floor(t/256/256/256)/255,r[1]=Math.floor(t/256/256)%256/255,r[2]=Math.floor(t/256)%256/255,r[3]=t%256/255,r}function vg(t){var e=0;return e+=Math.round(256*t[0]*256*256*255),e+=Math.round(256*t[1]*256*255),e+=Math.round(256*t[2]*255),e+=Math.round(255*t[3])}var _g=fg,bg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xg="renderOrder",wg=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.style,delete i.renderBuffer,delete i.updateWhileAnimating,delete i.updateWhileInteracting,(r=t.call(this,i)||this).declutter_=void 0!==n.declutter&&n.declutter,r.renderBuffer_=void 0!==n.renderBuffer?n.renderBuffer:100,r.style_=null,r.styleFunction_=void 0,r.setStyle(n.style),r.updateWhileAnimating_=void 0!==n.updateWhileAnimating&&n.updateWhileAnimating,r.updateWhileInteracting_=void 0!==n.updateWhileInteracting&&n.updateWhileInteracting,r}return bg(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(xg)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new Pp.a(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(xg,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:_p,this.styleFunction_=null===t?void 0:mp(this.style_),this.changed()},e}(na),Sg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eg=function(t){function e(e,r){var n=this,i=r.uniforms||{},a=[1,0,0,1,0,0];i[ah]=a,(n=t.call(this,e,{className:r.className,uniforms:i,postProcesses:r.postProcesses})||this).sourceRevision_=-1,n.verticesBuffer_=new Qc(34962,35048),n.hitVerticesBuffer_=new Qc(34962,35048),n.indicesBuffer_=new Qc(34963,35048),n.program_=n.helper.getProgram(r.fragmentShader,r.vertexShader),n.hitDetectionEnabled_=!(!r.hitFragmentShader||!r.hitVertexShader),n.hitProgram_=n.hitDetectionEnabled_&&n.helper.getProgram(r.hitFragmentShader,r.hitVertexShader);var s=r.attributes?r.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:ph.FLOAT}})):[];n.attributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT}].concat(s),n.hitDetectionAttributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT},{name:"a_hitColor",size:4,type:ph.FLOAT},{name:"a_featureUid",size:1,type:ph.FLOAT}].concat(s),n.customAttributes=r.attributes?r.attributes:[],n.previousExtent_=[1/0,1/0,-1/0,-1/0],n.currentTransform_=a,n.renderTransform_=[1,0,0,1,0,0],n.invertRenderTransform_=[1,0,0,1,0,0],n.renderInstructions_=new Float32Array(0),n.hitRenderInstructions_=new Float32Array(0),n.hitRenderTarget_=n.hitDetectionEnabled_&&new mh(n.helper),n.worker_=new Worker(Hc),n.worker_.addEventListener("message",function(t){var e=t.data;if(e.type===pg){var r=e.projectionTransform;e.hitDetection?(this.hitVerticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.hitVerticesBuffer_)):(this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_)),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=r,jt(this.invertRenderTransform_,this.renderTransform_),e.hitDetection?this.hitRenderInstructions_=new Float32Array(t.data.renderInstructions):this.renderInstructions_=new Float32Array(t.data.renderInstructions),this.getLayer().changed()}}.bind(n)),n.featureCache_={},n.featureCount_=0;var l=n.getLayer().getSource();return n.sourceListenKeys_=[Z(l,ef,n.handleSourceFeatureAdded_,n),Z(l,rf,n.handleSourceFeatureChanged_,n),Z(l,of,n.handleSourceFeatureDelete_,n),Z(l,nf,n.handleSourceFeatureClear_,n)],l.forEachFeature(function(t){this.featureCache_[o(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.featureCount_++}.bind(n)),n}return Sg(e,t),e.prototype.handleSourceFeatureAdded_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++},e.prototype.handleSourceFeatureChanged_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}},e.prototype.handleSourceFeatureDelete_=function(t){var e=t.feature;delete this.featureCache_[o(e)],this.featureCount_--},e.prototype.handleSourceFeatureClear_=function(){this.featureCache_={},this.featureCount_=0},e.prototype.renderFrame=function(t){this.preRender(t);var e=this.indicesBuffer_.getSize();this.helper.drawElements(0,e),this.helper.finalizeDraw(t);var r=this.helper.getCanvas(),n=t.layerStatesArray[t.layerIndex].opacity;return n!==parseFloat(r.style.opacity)&&(r.style.opacity=String(n)),this.hitDetectionEnabled_&&(this.renderHitDetection(t),this.hitRenderTarget_.clearCachedData()),this.postRender(t),r},e.prototype.prepareFrame=function(t){var e=this.getLayer(),r=e.getSource(),n=t.viewState,i=!t.viewHints[ns]&&!t.viewHints[is],o=!ue(this.previousExtent_,t.extent),a=this.sourceRevision_c&&this.instructions.push([Ig.CUSTOM,c,i,t,r,Nn])):l==bt.POINT&&(n=t.getFlatCoordinates(),this.coordinates.push(n[0],n[1]),i=this.coordinates.length,this.instructions.push([Ig.CUSTOM,c,i,t,r]));this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[Ig.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Ig.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var r,n,i=e.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=r.lineWidth,this.bufferedMaxExtent_=null)}else r.strokeStyle=void 0,r.lineCap=void 0,r.lineDash=null,r.lineDashOffset=void 0,r.lineJoin=void 0,r.lineWidth=void 0,r.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,r=[Ig.SET_FILL_STYLE,e];return"string"!=typeof e&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Ig.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var r=t.strokeStyle,n=t.lineCap,i=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,s=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=r||t.currentLineCap!=n||i!=t.currentLineDash&&!b(t.currentLineDash,i)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=s||t.currentMiterLimit!=l)&&(void 0!==r&&e.call(this,t),t.currentStrokeStyle=r,t.currentLineCap=n,t.currentLineDash=i,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=s,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Ig.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=$t(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Ht(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(ku),Fg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ag=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o.declutterImageWithText_=void 0,o}return Fg(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var r=t.getAnchor(),n=t.getSize(),i=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),a=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=r[0],this.anchorY_=r[1],this.hitDetectionImage_=i,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=a[0],this.originY_=a[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterImageWithText_=e},e}(Mg),kg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jg=function(t){function e(e,r,n,i){return t.call(this,e,r,n,i)||this}return kg(e,t),e.prototype.drawFlatCoordinates_=function(t,e,r,n){var i=this.coordinates.length,o=this.appendFlatLineCoordinates(t,e,r,n,!1,!1),a=[Ig.MOVE_TO_LINE_TO,i,o];return this.instructions.push(a),this.hitDetectionInstructions.push(a),r},e.prototype.drawLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);var o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(Og),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);for(var o=t.getEnds(),a=t.getFlatCoordinates(),s=t.getStride(),l=0,u=0,c=o.length;ut&&(m>y&&(y=m,d=v,g=o),m=0,v=o-i)),a=s,c=p,h=f),l=_,u=b}return(m+=s)>y?[v,o]:[d,g]}var zg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ug={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Bg=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o.declutterImageWithText_=void 0,o}return zg(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var r=this.textFillState_,n=this.textStrokeState_,i=this.textState_;if(""!==this.text_&&i&&(r||n)){var o=this.coordinates,a=o.length,s=t.getType(),l=null,u=t.getStride();if(i.placement!==Ep||s!=bt.LINE_STRING&&s!=bt.MULTI_LINE_STRING&&s!=bt.POLYGON&&s!=bt.MULTI_POLYGON){var c=i.overflow?null:[];switch(s){case bt.POINT:case bt.MULTI_POINT:l=t.getFlatCoordinates();break;case bt.LINE_STRING:l=t.getFlatMidpoint();break;case bt.CIRCLE:l=t.getCenter();break;case bt.MULTI_LINE_STRING:l=t.getFlatMidpoints(),u=2;break;case bt.POLYGON:l=t.getFlatInteriorPoint(),i.overflow||c.push(l[2]/this.resolution),u=3;break;case bt.MULTI_POLYGON:var h=t.getFlatInteriorPoints();l=[];for(x=0,w=h.length;xP[2]}else T=b>C;var R,I=Math.PI,L=[],M=w+n===e;if(y=0,m=S,p=t[e=w],f=t[e+1],M){v();var F=Math.atan2(f-g,p-d);T&&(F+=F>0?-I:I);var A=(C+b)/2,k=(O+x)/2;return L[0]=[A,k,(E-o)/2,F,i],L}for(var j=0,N=i.length;j0?-I:I),void 0!==R){var G=D-R;if(G+=G>I?-2*I:G<-I?2*I:0,Math.abs(G)>a)return null}R=D;for(var z=j,U=0;jt?t-l:i,b=o+u>e?e-u:o,x=f[3]+_*h[0]+f[1],w=f[0]+b*h[1]+f[2],S=m-f[3],E=v-f[0];return(d||0!==c)&&(Zg[0]=S,$g[0]=S,Zg[1]=E,Kg[1]=E,Kg[0]=S+x,Hg[0]=Kg[0],Hg[1]=E+w,$g[1]=Hg[1]),0!==c?(It(y=kt([1,0,0,1,0,0],r,n,1,1,c,-r,-n),Zg),It(y,Kg),It(y,Hg),It(y,$g),ie(Math.min(Zg[0],Kg[0],Hg[0],$g[0]),Math.min(Zg[1],Kg[1],Hg[1],$g[1]),Math.max(Zg[0],Kg[0],Hg[0],$g[0]),Math.max(Zg[1],Kg[1],Hg[1],$g[1]),Xg)):ie(Math.min(S,S+x),Math.min(E,E+w),Math.max(S,S+x),Math.max(E,E+w),Xg),p&&(m=Math.round(m),v=Math.round(v)),{drawImageX:m,drawImageY:v,drawImageW:_,drawImageH:b,originX:l,originY:u,declutterBox:{minX:Xg[0],minY:Xg[1],maxX:Xg[2],maxY:Xg[3],value:g},canvasTransform:y,scale:h}},t.prototype.replayImageOrLabel_=function(t,e,r,n,i,o,a){var s=!(!o&&!a),l=n.declutterBox,u=t.canvas,c=a?a[2]*n.scale[0]/2:0;return l.minX-c<=u.width/e&&l.maxX+c>=0&&l.minY-c<=u.height/e&&l.maxY+c>=0&&(s&&this.replayTextBackground_(t,Zg,Kg,Hg,$g,o,a),Oa(t,n.canvasTransform,i,r,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=It(this.renderedTransform_,[0,0]),r=512*this.pixelRatio;t.save(),t.translate(e[0]%r,e[1]%r),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,r,n){var i=this.textStates[e],o=this.createLabel(t,e,n,r),a=this.strokeStates[r],s=this.pixelRatio,l=ty(t,i.textAlign||"center"),u=Ug[i.textBaseline||"middle"],c=a&&a.lineWidth?a.lineWidth:0;return{label:o,anchorX:l*(o.width/s-2*i.scale[0])+2*(.5-l)*c,anchorY:u*o.height/s+2*(.5-u)*c}},t.prototype.execute_=function(t,e,r,n,i,o,a,s){var l;this.pixelCoordinates_&&b(r,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=ln(this.coordinates,0,this.coordinates.length,2,r,this.pixelCoordinates_),Rt(this.renderedTransform_,r));for(var u,c,h,p,f,d,g,y,m,v,_,x,w,S,E,T,C=0,O=n.length,P=0,R=0,I=0,L=null,M=null,F=this.coordinateCache_,A=this.viewRotation_,k=Math.round(1e12*Math.atan2(-r[1],r[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:A},N=this.instructions!=n||this.overlaps?0:200;CN&&(this.fill_(t),R=0),I>N&&(t.stroke(),I=0),R||I||(t.beginPath(),p=NaN,f=NaN),++C;break;case Ig.CIRCLE:var G=l[P=D[1]],z=l[P+1],U=l[P+2]-G,B=l[P+3]-z,V=Math.sqrt(U*U+B*B);t.moveTo(G+V,z),t.arc(G,z,V,0,2*Math.PI,!0),++C;break;case Ig.CLOSE_PATH:t.closePath(),++C;break;case Ig.CUSTOM:P=D[1],u=D[2];var Y=D[3],W=D[4],q=6==D.length?D[5]:void 0;j.geometry=Y,j.feature=w,C in F||(F[C]=[]);var X=F[C];q?q(l,P,u,2,X):(X[0]=l[P],X[1]=l[P+1],X.length=2),W(X,j),++C;break;case Ig.DRAW_IMAGE:P=D[1],u=D[2],y=D[3],c=D[4],h=D[5];var Z=D[6],K=D[7],H=D[8],$=D[9],J=D[10],Q=D[11],tt=D[12],et=D[13],rt=D[14];if(!y&&D.length>=19){m=D[18],v=D[19],_=D[20],x=D[21];var nt=this.drawLabelWithPointPlacement_(m,v,_,x);y=nt.label,D[3]=y;var it=D[22];c=(nt.anchorX-it)*this.pixelRatio,D[4]=c;var ot=D[23];h=(nt.anchorY-ot)*this.pixelRatio,D[5]=h,Z=y.height,D[6]=Z,et=y.width,D[13]=et}var at=void 0;D.length>24&&(at=D[24]);var st=void 0,lt=void 0,ut=void 0;D.length>16?(st=D[15],lt=D[16],ut=D[17]):(st=fa,lt=!1,ut=!1),J&&k?Q+=A:J||k||(Q-=A);for(var ct=0;P0){if(!o||h!==zu&&h!==Vu||-1!==o.indexOf(t)){var u=(p[s]-3)/4,f=n-u%a,d=n-(u/a|0),g=i(t,e,f*f+d*d);if(g)return g}c.clearRect(0,0,a,a);break}}var g,y,m,v,_,b=Object.keys(this.executorsByZIndex_).map(Number);for(b.sort(d),g=b.length-1;g>=0;--g){var x=b[g].toString();for(m=this.executorsByZIndex_[x],y=ry.length-1;y>=0;--y)if(void 0!==(v=m[h=ry[y]])&&(_=v.executeHitDetection(c,s,r,f,u)))return _}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var r=e[0],n=e[1],i=e[2],o=e[3],a=[r,n,r,o,i,o,i,n];return ln(a,0,8,2,t,a),a},t.prototype.isEmpty=function(){return I(this.executorsByZIndex_)},t.prototype.execute=function(t,e,r,n,i,o,a){var s=Object.keys(this.executorsByZIndex_).map(Number);s.sort(d),this.maxExtent_&&(t.save(),this.clip(t,r));var l,u,c,h,p,f,g=o||ry;for(a&&s.reverse(),l=0,u=s.length;lr)break;var s=n[a];s||(s=[],n[a]=s),s.push(4*((t+i)*e+(t+o))+3),i>0&&s.push(4*((t-i)*e+(t+o))+3),o>0&&(s.push(4*((t+i)*e+(t-o))+3),i>0&&s.push(4*((t-i)*e+(t-o))+3))}for(var l=[],u=(i=0,n.length);i0&&(a.width=0),this.container;var u=Math.round(t.size[0]*r),c=Math.round(t.size[1]*r);a.width!=u||a.height!=c?(a.width=u,a.height=c,a.style.transform!==i&&(a.style.transform=i)):this.containerReused||o.clearRect(0,0,u,c),this.preRender(o,t);var h=t.viewState,p=h.projection,f=!1;if(n.extent&&this.clipping){var d=on(n.extent,p);(f=!te(d,t.extent)&&Re(d,t.extent))&&this.clipUnrotated(o,t,d)}this.renderWorlds(s,t),f&&o.restore(),this.postRender(o,t);var g=n.opacity,y=this.container;return g!==parseFloat(y.style.opacity)&&(y.style.opacity=1===g?"":String(g)),this.renderedRotation_!==h.rotation&&(this.renderedRotation_=h.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var r=[this.context.canvas.width,this.context.canvas.height];It(this.pixelTransform,r);var n=this.renderedCenter_,i=this.renderedResolution_,o=this.renderedRotation_,a=this.renderedProjection_,s=this.renderedExtent_,l=this.getLayer(),u=[],c=r[0]/2,h=r[1]/2;u.push(this.getRenderTransform(n,i,o,.5,c,h,0).slice());var p=l.getSource(),f=a.getExtent();if(p.getWrapX()&&a.canWrapX()&&!te(f,s)){for(var d=s[0],g=Pe(f),y=0,m=void 0;df[2];)m=g*++y,u.push(this.getRenderTransform(n,i,o,.5,c,h,m).slice()),d-=g}this.hitDetectionImageData_=sy(r,u,this.renderedFeatures_,l.getStyleFunction(),s,i,o)}e(ly(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){var a=this;if(this.replayGroup_){var s,l=e.viewState.resolution,u=e.viewState.rotation,c=this.getLayer(),h={},p=function(t,e,r){var a=o(t),s=h[a];if(s){if(!0!==s&&rv[0]&&x[2]>v[2]&&m.push([x[0]-_,x[1],x[2]-_,x[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&te(this.renderedExtent_,y))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var w,S=new Yg(Xu(c,h),y,c,h);this.getLayer().getDeclutter()&&(w=new Yg(Xu(c,h),y,c,h));var E,T=tn();if(T){for(var C=0,O=m.length;C0)e([]);else{var m=Ce(h.getTileCoordExtent(n.wrappedTileCoord)),v=[(p[0]-m[0])/c,(m[1]-p[1])/c],_=n.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]),b=n.hitDetectionImageData[a];if(!b&&!this.animatingOrInteracting_){var x=Is(h.getTileSize(h.getZForResolution(c))),w=[x[0]/2,x[1]/2],S=this.renderedRotation_;b=sy(x,[this.getRenderTransform(h.getTileCoordCenter(n.wrappedTileCoord),c,0,.5,w[0],w[1],0)],_,i.getStyleFunction(),h.getTileCoordExtent(n.wrappedTileCoord),n.getReplayState(i).renderedResolution,S),n.hitDetectionImageData[a]=b}e(ly(v,_,b))}}.bind(this))},e.prototype.handleFontsChanged=function(){P(this.renderTileImageQueue_);var t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.renderDeclutter=function(t){for(var e=t.viewHints,r=!(e[ns]||e[is]),n=this.renderedTiles,i=0,a=n.length;i=0;--u)l[u].execute(this.context,1,this.getTileRenderTransform(s,t),t.viewState.rotation,r,void 0,t.declutterTree)}},e.prototype.getTileRenderTransform=function(t,e){var r=e.pixelRatio,n=e.viewState,i=n.center,o=n.resolution,a=n.rotation,s=e.size,l=Math.round(s[0]*r),u=Math.round(s[1]*r),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),h=t.tileCoord,p=c.getTileCoordExtent(t.wrappedTileCoord),f=c.getTileCoordExtent(h,this.tmpExtent)[0]-p[0];return Ot(Mt(this.inversePixelTransform.slice(),1/r,1/r),this.getRenderTransform(i,o,a,r,l,u,f))},e.prototype.renderFrame=function(e,r){var n=e.viewHints,i=!(n[ns]||n[is]);this.renderQueuedTileImages_(i,e),t.prototype.renderFrame.call(this,e,r),this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;var a=this.getLayer(),s=a.getRenderMode();if(s===fy)return this.container;var l=a.getSource(),u=e.usedTiles[o(l)];for(var c in this.renderTileImageQueue_)u&&c in u||delete this.renderTileImageQueue_[c];for(var h=this.context,p=vy[s],f=e.viewState.rotation,d=this.renderedTiles,g=[],y=[],m=d.length-1;m>=0;--m)for(var v=d[m],_=this.getTileRenderTransform(v,e),b=v.executorGroups[o(a)],x=!1,w=0,S=b.length;w8){e.animate=!0;break}var n=this.renderTileImageQueue_[r];delete this.renderTileImageQueue_[r],this.renderTileImage_(n,e)}},e.prototype.renderFeature=function(t,e,r,n,i){if(!r)return!1;var o=!1;if(Array.isArray(r))for(var a=0,s=r.length;a1?a:2,x=o||new Array(b);for(g=0;g>1;i0&&y.length>0;)o=y.pop(),c=d.pop(),p=g.pop(),(l=o.toString())in m||(u.push(p[0],p[1]),m[l]=!0),a=y.pop(),h=d.pop(),f=g.pop(),ze((i=e(n=t(s=(o+a)/2)))[0],i[1],p[0],p[1],f[0],f[1])this.featurePool_.length;)s=new gt,this.featurePool_.push(s);var u=n.getFeaturesCollection();u.clear();var c,h,p=0;for(c=0,h=this.meridians_.length;cMath.PI/2);for(var y=Ku(t),m=h;m<=p;++m){var v=this.meridians_.length+this.parallels_.length,_=void 0,b=void 0,x=void 0,w=void 0;if(this.meridiansLabels_)for(b=0,x=this.meridiansLabels_.length;b=s?(t[0]=a[0],t[2]=a[2]):o=!0);var l=[Ne(e[0],this.minX_,this.maxX_),Ne(e[1],this.minY_,this.maxY_)],u=this.toLonLatTransform_(l);isNaN(u[1])&&(u[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);var c,h,p,f,d=Ne(u[0],this.minLon_,this.maxLon_),g=Ne(u[1],this.minLat_,this.maxLat_),y=this.maxLines_,m=t;o||(m=[Ne(t[0],this.minX_,this.maxX_),Ne(t[1],this.minY_,this.maxY_),Ne(t[2],this.minX_,this.maxX_),Ne(t[3],this.minY_,this.maxY_)]);var v=Ae(m,this.toLonLatTransform_,void 0,8),_=v[3],b=v[2],x=v[1],w=v[0];if(o||(Qt(m,this.bottomLeft_)&&(w=this.minLon_,x=this.minLat_),Qt(m,this.bottomRight_)&&(b=this.maxLon_,x=this.minLat_),Qt(m,this.topLeft_)&&(w=this.minLon_,_=this.maxLat_),Qt(m,this.topRight_)&&(b=this.maxLon_,_=this.maxLat_),_=Ne(_,g,this.maxLat_),b=Ne(b,d,this.maxLon_),x=Ne(x,this.minLat_,g),w=Ne(w,this.minLon_,d)),f=Ne(d=Math.floor(d/i)*i,this.minLon_,this.maxLon_),h=this.addMeridian_(f,x,_,n,t,0),c=0,o)for(;(f-=i)>=w&&c++n[o]&&(i=o,o=1);var a=Math.max(e[1],n[i]),s=Math.min(e[3],n[o]),l=Ne(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,a,s),u=[n[i-1]+(n[o-1]-n[i-1])*(l-n[i])/(n[o]-n[i]),l],c=this.meridiansLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getMeridians=function(){return this.meridians_},e.prototype.getParallel_=function(t,e,r,n,i){var o=Fy(t,e,r,this.projection_,n),a=this.parallels_[i];return a?(a.setFlatCoordinates(yt,o),a.changed()):a=new Py(o,yt),a},e.prototype.getParallelPoint_=function(t,e,r){var n=t.getFlatCoordinates(),i=0,o=n.length-2;n[i]>n[o]&&(i=o,o=0);var a=Math.max(e[0],n[i]),s=Math.min(e[2],n[o]),l=Ne(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,a,s),u=[l,n[i+1]+(n[o+1]-n[i+1])*(l-n[i])/(n[o]-n[i])],c=this.parallelsLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getParallels=function(){return this.parallels_},e.prototype.updateProjectionInfo_=function(t){var e=Gr("EPSG:4326"),r=t.getWorldExtent();this.maxLat_=r[3],this.maxLon_=r[2],this.minLat_=r[1],this.minLon_=r[0];var n=Kr(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t},e}(Iy),Dy=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gy="blur",zy="gradient",Uy="radius",By=["#00f","#0ff","#0f0","#ff0","#f00"];var Vy=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.gradient,delete i.radius,delete i.blur,delete i.weight,(r=t.call(this,i)||this).gradient_=null,r.addEventListener(it(zy),r.handleGradientChanged_),r.setGradient(n.gradient?n.gradient:By),r.setBlur(void 0!==n.blur?n.blur:15),r.setRadius(void 0!==n.radius?n.radius:8);var o=n.weight?n.weight:"weight";return r.weightFunction_="string"==typeof o?function(t){return t.get(o)}:o,r.setRenderOrder(null),r}return Dy(e,t),e.prototype.getBlur=function(){return this.get(Gy)},e.prototype.getGradient=function(){return this.get(zy)},e.prototype.getRadius=function(){return this.get(Uy)},e.prototype.handleGradientChanged_=function(){this.gradient_=function(t){for(var e=uo(1,256),r=e.createLinearGradient(0,0,1,256),n=1/(t.length-1),i=0,o=t.length;i>3)?r.readString():2===t?r.readFloat():3===t?r.readDouble():4===t?r.readVarint64():5===t?r.readVarint():6===t?r.readSVarint():7===t?r.readBoolean():null;e.values.push(n)}}function im(t,e,r){if(1==t)e.id=r.readVarint();else if(2==t)for(var n=r.readVarint()+r.pos;r.pos>3}a--,1===o||2===o?(s+=t.readSVarint(),l+=t.readSVarint(),1===o&&u>c&&(n.push(u),c=u),r.push(s,l),u+=2):7===o?u>c&&(r.push(r[c],r[c+1]),u+=2):pt(!1,59)}u>c&&(n.push(u),c=u)},e.prototype.createFeature_=function(t,e,r){var n,i=e.type;if(0===i)return null;var o,a=e.properties;this.idProperty_?(o=a[this.idProperty_],delete a[this.idProperty_]):o=e.id,a[this.layerName_]=e.layer.name;var s=[],l=[];this.readRawGeometry_(t,e,s,l);var u=function(t,e){var r;1===t?r=1===e?bt.POINT:bt.MULTI_POINT:2===t?r=1===e?bt.LINE_STRING:bt.MULTI_LINE_STRING:3===t&&(r=bt.POLYGON);return r}(i,l.length);if(this.featureClass_===Cy)(n=new this.featureClass_(u,s,l,a,o)).transform(r.dataProjection);else{var c=void 0;if(u==bt.POLYGON){for(var h=[],p=0,f=0,d=0,g=l.length;d1?new Jy(s,yt,h):new fi(s,yt,l)}else c=u===bt.POINT?new qn(s,yt):u===bt.LINE_STRING?new Py(s,yt):u===bt.POLYGON?new fi(s,yt,l):u===bt.MULTI_POINT?new Hy(s,yt):u===bt.MULTI_LINE_STRING?new Zy(s,yt,l):null;n=new(0,this.featureClass_),this.geometryName_&&n.setGeometryName(this.geometryName_);var m=Wy(c,!1,r);n.setGeometry(m),n.setId(o),n.setProperties(a,!0)}return n},e.prototype.getType=function(){return Cu},e.prototype.readFeatures=function(t,e){var r=this.layers_,n=this.adaptOptions(e),i=Gr(n.dataProjection);i.setWorldExtent(n.extent),n.dataProjection=i;var o=new tm.a(t),a=o.readFields(rm,{}),s=[];for(var l in a)if(!r||-1!=r.indexOf(l)){var u=a[l],c=u?[0,0,u.extent,u.extent]:null;i.setExtent(c);for(var h=0,p=u.length;h=.05){for(var r="",n=t.split("\n"),i=ym.slice(0,Math.round(e/.1)),o=0,a=n.length;o0&&(r+="\n"),r+=n[o].split("").join(i);return r}return t}function vm(){return gm||(gm=dm(1,1).getContext("2d")),gm}function _m(t,e){return vm().measureText(t).width+(t.length-1)*e}var bm={};ga&&Z(ga,k,(function(){bm={}}));var xm,wm,Sm=hm.e.isFunction,Em=hm.e.convertFunction,Tm=hm.c.isExpression,Cm=hm.c.createPropertyExpression,Om={Point:1,MultiPoint:1,LineString:2,MultiLineString:2,Polygon:3,MultiPolygon:3},Pm={center:[.5,.5],left:[0,.5],right:[1,.5],top:[.5,0],bottom:[.5,1],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},Rm={},Im={zoom:0},Lm={};function Mm(t,e,r,n,i){var o=t.id;Lm[o]||(Lm[o]={});var a=Lm[o];if(!a[r]){var s=(t[e]||Rm)[r],l=hm.f[e+"_"+t.type][r];void 0===s&&(s=l.default);var u=Tm(s);if(!u&&Sm(s)&&(s=Em(s,l),u=!0),u){var c=function(t,e){var r=Cm(t,e);if("error"===r.result)throw new Error(r.value.map((function(t){return t.key+": "+t.message})).join(", "));return r.value}(s,l);a[r]=c.evaluate.bind(c)}else"color"==l.type&&(s=hm.a.parse(s)),a[r]=function(){return s}}return Im.zoom=n,a[r](Im,i)}var Fm={};function Am(t,e){if(t){if(0===t.a||0===e)return;var r=t.a;return e=void 0===e?1:e,"rgba("+Math.round(255*t.r/r)+","+Math.round(255*t.g/r)+","+Math.round(255*t.b/r)+","+r*e+")"}return t}var km=/^([^]*)\{(.*)\}([^]*)$/;function jm(t,e){var r;do{if(r=t.match(km)){var n=e[r[2]]||"";t=r[1]+n+r[3]}}while(r);return t}var Nm=!1;var Dm=function(t,e,r,n,i,o,a){if(void 0===n&&(n=fm),"string"==typeof e&&(e=JSON.parse(e)),8!=e.version)throw new Error("glStyle version 8 required.");var s,l;if(o)if("undefined"!=typeof Image){var u=new Image;u.crossOrigin="anonymous",u.onload=function(){s=u,l=[u.width,u.height],t.changed(),u.onload=null},u.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var c=self;c.postMessage({action:"loadImage",src:o}),c.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(s=t.data.image,l=[s.width,s.height])}))}for(var h,p=Object(hm.b)(e.layers),f={},d=[],g=0,y=p.length;g=y.maxzoom)return"continue";var b=y.filter;if(!b||function(t,e,r,n){return t in Fm||(Fm[t]=Object(hm.d)(e).filter),Im.zoom=n,Fm[t](Im,r)}(m,b,p,u)){c=y;var x=void 0,w=void 0,P=void 0,R=void 0,I=void 0,L=void 0,M=g.index;if(3==h&&("fill"==y.type||"fill-extrusion"==y.type))if(w=Mm(y,"paint",y.type+"-opacity",u,p),y.type+"-pattern"in _){var F=Mm(y,"paint",y.type+"-pattern",u,p);if(F){var A="string"==typeof F?jm(F,r):F.toString();if(s&&i&&i[A]){++d,(L=O[d])&&L.getFill()&&!L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep})),P=L.getFill(),L.setZIndex(M);var k=C[ut=A+"."+w];if(!k)(pt=(ht=dm((ct=i[A]).width,ct.height)).getContext("2d")).globalAlpha=w,pt.drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height),k=pt.createPattern(ht,"repeat"),C[ut]=k;P.setColor(k)}}}else(x=Am(Mm(y,"paint",y.type+"-color",u,p),w))&&(y.type+"-outline-color"in _&&(I=Am(Mm(y,"paint",y.type+"-outline-color",u,p),w)),I||(I=x),++d,(L=O[d])&&L.getFill()&&L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep,stroke:new gp})),(P=L.getFill()).setColor(x),(R=L.getStroke()).setColor(I),R.setWidth(1),L.setZIndex(M));if(1!=h&&"line"==y.type){x=!("line-pattern"in _)&&"line-color"in _?Am(Mm(y,"paint","line-color",u,p),Mm(y,"paint","line-opacity",u,p)):void 0;var j=Mm(y,"paint","line-width",u,p);x&&j>0&&(++d,(L=O[d])&&L.getStroke()&&!L.getFill()&&!L.getText()||(L=O[d]=new wp({stroke:new gp})),(R=L.getStroke()).setLineCap(Mm(y,"layout","line-cap",u,p)),R.setLineJoin(Mm(y,"layout","line-join",u,p)),R.setMiterLimit(Mm(y,"layout","line-miter-limit",u,p)),R.setColor(x),R.setWidth(j),R.setLineDash(_["line-dasharray"]?Mm(y,"paint","line-dasharray",u,p).map((function(t){return t*j})):null),L.setZIndex(M))}var N=!1,D=null,G=0,z=void 0,U=void 0,B=void 0;if((1==h||2==h)&&"icon-image"in v){var V=Mm(y,"layout","icon-image",u,p);if(V){z="string"==typeof V?jm(V,r):V.toString();var Y=void 0;if(s&&i&&i[z]){var W=Mm(y,"layout","icon-rotation-alignment",u,p);if(2==h){var q=t.getGeometry();if(q.getFlatMidpoint||q.getFlatMidpoints){var X=q.getExtent();if(Math.sqrt(Math.max(Math.pow((X[2]-X[0])/e,2),Math.pow((X[3]-X[1])/e,2)))>150){var Z="MultiLineString"===q.getType()?q.getFlatMidpoints():q.getFlatMidpoint();if(wm||(wm=new Cy("Point",xm=[NaN,NaN],[],{},null)),Y=wm,xm[0]=Z[0],xm[1]=Z[1],"line"===(Mt=Mm(y,"layout","symbol-placement",u,p))&&"map"===W)for(var K=q.getStride(),H=q.getFlatCoordinates(),$=0,J=H.length-K;$=nt&&Z[0]<=ot&&Z[1]>=it&&Z[1]<=at){G=Math.atan2(tt-rt,et-Q);break}}}}}if(2!==h||Y){++d,(L=O[d])&&L.getImage()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setGeometry(Y);var st=Mm(y,"layout","icon-size",u,p),lt=void 0!==_["icon-color"]?Mm(y,"paint","icon-color",u,p):null,ut=z+"."+st;if(null!==lt&&(ut+="."+lt),!(U=T[ut])){var ct=i[z];if(null!==lt){var ht,pt;(pt=(ht=dm(ct.width,ct.height)).getContext("2d")).drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height);for(var ft=pt.getImageData(0,0,ht.width,ht.height),dt=0,gt=ft.data.length;dt0?new gp({width:bt,color:vt}):void 0,fill:_t?new ep({color:_t}):void 0})),L.setImage(U),D=L.getText(),L.setText(void 0),L.setGeometry(void 0),L.setZIndex(M),N=!0}var wt=void 0;if("text-field"in v)wt=jm(Mm(y,"layout","text-field",u,p).toString(),r).trim(),w=Mm(y,"paint","text-opacity",u,p);if(wt&&w&&!B){N||(++d,(L=O[d])&&L.getText()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setImage(void 0),L.setGeometry(void 0)),L.getText()||L.setText(D||new Tp({padding:[2,2,2,2]})),D=L.getText();var St=Math.round(Mm(y,"layout","text-size",u,p)),Et=Mm(y,"layout","text-font",u,p),Tt=Mm(y,"layout","text-line-height",u,p),Ct=cm()(a?a(Et):Et,St,Tt),Ot=v["text-transform"];"uppercase"==Ot?wt=wt.toUpperCase():"lowercase"==Ot&&(wt=wt.toLowerCase());var Pt=Mm(y,"layout","text-max-width",u,p),Rt=Mm(y,"layout","text-letter-spacing",u,p),It=2==h?mm(wt,Rt):function t(e,r,n,i){if(-1!==e.indexOf("\n")){for(var o=e.split("\n"),a=[],s=0,l=o.length;s1){var p=vm();p.font=r;var f=p.measureText("M").width*n,d="";for(a=[],s=0,l=h.length;s1;++s){var m=a[s];if(_m(m,i)<.35*f){var v=s>0?_m(a[s-1],i):1/0,_=s.7*f&&_m(x,i)<.6*f){var w=b.split(" "),S=w.pop();_m(S,i)<.2*f&&(a[s]=w.join(" "),a[s+1]=S+" "+x),l-=1}}c=a.join("\n")}else c=e;c=mm(c,i),bm[u]=c}return c}(wt,Ct,Pt,Rt);D.setText(It),D.setFont(Ct),D.setRotation(pm(Mm(y,"layout","text-rotate",u,p)));var Lt=Mm(y,"layout","text-anchor",u,p),Mt=N||1==h?"point":Mm(y,"layout","symbol-placement",u,p);D.setPlacement(Mt);var Ft=Mm(y,"paint","text-halo-width",u,p),At=Mm(y,"layout","text-offset",u,p),kt=Mm(y,"paint","text-translate",u,p),jt=0,Nt=0;if("point"==Mt){var Dt="center";-1!==Lt.indexOf("left")?(Dt="left",Nt=Ft):-1!==Lt.indexOf("right")&&(Dt="right",Nt=-Ft),D.setTextAlign(Dt);var Gt=Mm(y,"layout","text-rotation-alignment",u,p);D.setRotateWithView("map"==Gt)}else D.setMaxAngle(pm(Mm(y,"layout","text-max-angle",u,p))*wt.length/It.length),D.setTextAlign(),D.setRotateWithView(!1);var zt="middle";0==Lt.indexOf("bottom")?(zt="bottom",jt=-Ft-.5*(Tt-1)*St):0==Lt.indexOf("top")&&(zt="top",jt=Ft+.5*(Tt-1)*St),D.setTextBaseline(zt),D.setOffsetX(At[0]*St+Nt+kt[0]),D.setOffsetY(At[1]*St+jt+kt[1]),E.setColor(Am(Mm(y,"paint","text-color",u,p),w)),D.setFill(E);var Ut=Am(Mm(y,"paint","text-halo-color",u,p),w);if(Ut){S.setColor(Ut),Ft*=2;var Bt=.5*St;S.setWidth(Ft<=Bt?Ft:Bt),D.setStroke(S)}else D.setStroke(void 0);var Vt=Mm(y,"layout","text-padding",u,p),Yt=D.getPadding();Vt!==Yt[0]&&(Yt[0]=Yt[1]=Yt[2]=Yt[3]=Vt),L.setZIndex(M)}}},y=0,m=o.length;y-1?(O.length=d+1,Nm&&("function"==typeof t.set?t.set("mapbox-layer",c):t.getProperties()["mapbox-layer"]=c),O):void 0}};return t.setStyle(P),t.set("mapbox-source",h),t.set("mapbox-layers",d),P},Gm=r(6),zm=r.n(Gm),Um=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Bm(t){for(var e=[],r=0,n=t.length;r2?n[2]:""):t+r}function sv(t,e,r,n,i){return new Promise((function(o,a){if("object"!=typeof e&&(e=JSON.parse(e)),8!=e.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof Iy||t instanceof lm))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var s,l,u;function c(){u||e.sprite&&!s?u?(t.setStyle(u),o()):a(new Error("Something went wrong trying to apply style.")):(u=Dm(t,e,r,i,s,l,nv),t.getStyle()?o():a(new Error("Nothing to show for source ["+r+"]")))}if(e.sprite){var h=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",p=av(e.sprite,n,h+".json");fetch(p,{credentials:"same-origin"}).then((function(t){return t.ok||""===h?t:(p=av(e.sprite,n,".json"),fetch(p,{credentials:"same-origin"}))})).then((function(t){if(t.ok)return t.json();a(new Error("Problem fetching sprite from "+p+": "+t.statusText))})).then((function(t){if(void 0===t)return a(new Error("No sprites found."));s=t,l=av(e.sprite,n,h+".png"),c()})).catch((function(t){a(new Error("Sprites cannot be loaded: "+p+": "+t.message))}))}else c()}))}new $m;var lv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function uv(t){return 0!==t.indexOf("mapbox://")?"":t.slice("mapbox://".length)}function cv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("sprites/"))throw new Error("unexpected sprites url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("sprites/".length)+"/sprite?access_token="+e}function hv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("fonts/"))throw new Error("unexpected fonts url: "+t);return"https://api.mapbox.com/fonts/v1/"+r.slice("fonts/".length)+"/0-255.pbf?access_token="+e}function pv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("styles/"))throw new Error("unexpected style url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("styles/".length)+"?&access_token="+e}function fv(t,e){var r=uv(t);return r?"https://{a-d}.tiles.mapbox.com/v4/"+r+"/{z}/{x}/{y}.vector.pbf?access_token="+e:t}var dv=function(t){function e(e){var r=t.call(this,A)||this;return r.error=e,r}return lv(e,t),e}(c),gv="vector",yv=function(t){function e(e){var r=this,n=!("declutter"in e)||e.declutter,i=new og({state:Jo,format:new am});return(r=t.call(this,{source:i,declutter:n,className:e.className,opacity:e.opacity,visible:e.visible,zIndex:e.zIndex,minResolution:e.minResolution,maxResolution:e.maxResolution,minZoom:e.minZoom,maxZoom:e.maxZoom,renderOrder:e.renderOrder,renderBuffer:e.renderBuffer,renderMode:e.renderMode,map:e.map,updateWhileAnimating:e.updateWhileAnimating,updateWhileInteracting:e.updateWhileInteracting,preload:e.preload,useInterimTilesOnError:e.useInterimTilesOnError})||this).sourceId=e.source,r.layers=e.layers,r.accessToken=e.accessToken,r.fetchStyle(e.styleUrl),r}return lv(e,t),e.prototype.fetchStyle=function(t){var e=this,r=pv(t,this.accessToken);fetch(r).then((function(t){if(!t.ok)throw new Error("unexpected response when fetching style: "+t.status);return t.json()})).then((function(t){e.onStyleLoad(t)})).catch((function(t){e.handleError(t)}))},e.prototype.onStyleLoad=function(t){var e,r,n=this;if(this.layers){for(var i={},o=0;o0){this.source_&&(this.source_.clear(),this.source_.addFeatures(h)),this.dispatchEvent(new Sv(wv,t,h,o));break}}},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[Z(e,U,this.handleDrop,this),Z(e,G,this.handleStop,this),Z(e,z,this.handleStop,this),Z(e,U,this.handleStop,this)]}},e.prototype.setActive=function(e){!this.getActive()&&e&&this.registerListeners_(),this.getActive()&&!e&&this.unregisterListeners_(),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,r){try{return t.readFeatures(e,r)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(H),this.dropListenKeys_=null)},e.prototype.handleDrop=function(t){for(var e=t.dataTransfer.files,r=0,n=e.length;r1?1:-1;return e.endInteraction(this.duration_,r),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}($s),Ov=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Pv=function(t){function e(e,r,n){var i=t.call(this)||this;if(void 0!==n&&void 0===r)i.setFlatCoordinates(n,e);else{var o=r||0;i.setCenterAndRadius(e,o,n)}return i}return Ov(e,t),e.prototype.clone=function(){var t=new e(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},e.prototype.closestPointXY=function(t,e,r,n){var i=this.flatCoordinates,o=t-i[0],a=e-i[1],s=o*o+a*a;if(s=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||me(t,this.intersectsCoordinate.bind(this)))}return!1},e.prototype.setCenter=function(t){var e=this.stride,r=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+r;for(var i=1;i=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,r=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Ga.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e.coordinate),n=!1):this.freehand_&&e.type===Ga.POINTERDOWN?n=!1:r&&this.getPointerCount()<2?(n=e.type===Ga.POINTERMOVE)&&this.freehand_?(this.handlePointerMove_(e),this.shouldHandle_&&e.originalEvent.preventDefault()):("mouse"===e.originalEvent.pointerType||e.type===Ga.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Ga.DBLCLICK&&(n=!1),t.prototype.handleEvent.call(this,e)&&n},e.prototype.handleDownEvent=function(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(function(){this.handlePointerMove_(new Da(Ga.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)},e.prototype.handleUpEvent=function(t){var e=!0;if(0===this.getPointerCount())if(this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t),this.shouldHandle_){switch(!0){case!this.finishCoordinate_:if(this.startDrawing_(t.coordinate),this.mode_!==Lv)break;case this.freehand_||this.atFinish_(t.pixel)&&this.finishCondition_(t):this.finishDrawing();break;case!this.freehand_:this.addToDrawing_(t.coordinate)}e=!1}else this.freehand_&&this.abortDrawing();return!e&&this.stopClick_&&t.originalEvent.stopPropagation(),e},e.prototype.handlePointerMove_=function(t){if(this.pointerType_=t.originalEvent.pointerType,this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){var e=this.downPx_,r=t.pixel,n=e[0]-r[0],i=e[1]-r[1],o=n*n+i*i;if(this.shouldHandle_=this.freehand_?o>this.squaredClickTolerance_:o<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?this.modifyDrawing_(t.coordinate):this.createOrUpdateSketchPoint_(t)},e.prototype.atFinish_=function(t){var e=!1;if(this.sketchFeature_){var r=!1,n=[this.finishCoordinate_],i=this.mode_;if(i===Lv)e=!0;else if(i===Av)e=2===this.sketchCoords_.length;else if(i===Mv)r=this.sketchCoords_.length>this.minPoints_;else if(i===Fv){var o=this.sketchCoords_;r=o[0].length>this.minPoints_,n=[o[0][0],o[0][o[0].length-2]]}if(r)for(var a=this.getMap(),s=0,l=n.length;s=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),this.geometryFunction_(r,n,i)):o===Fv&&((r=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),e&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,n,i)),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry(),r=this.getMap().getView().getProjection(),n=this.mode_;if(n===Mv||n===Av){if((t=this.sketchCoords_).splice(-2,1),t.length>=2){this.finishCoordinate_=t[t.length-2].slice();var i=this.finishCoordinate_.slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}this.geometryFunction_(t,e,r),e.getType()===bt.POLYGON&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if(n===Fv){(t=this.sketchCoords_[0]).splice(-2,1);var o=this.sketchLine_.getGeometry();if(t.length>=2){i=t[t.length-2].slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}o.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,r)}1===t.length&&this.abortDrawing(),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,r=t.getGeometry(),n=this.getMap().getView().getProjection();this.mode_===Mv?(e.pop(),this.geometryFunction_(e,r,n)):this.mode_===Fv&&(e[0].pop(),this.geometryFunction_(e,r,n),e=r.getCoordinates()),this.type_===bt.MULTI_POINT?t.setGeometry(new Hy([e])):this.type_===bt.MULTI_LINE_STRING?t.setGeometry(new Zy([e])):this.type_===bt.MULTI_POLYGON&&t.setGeometry(new Jy([e])),this.dispatchEvent(new Dv(jv,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}},e.prototype.abortDrawing_=function(){this.finishCoordinate_=null;var t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),t},e.prototype.abortDrawing=function(){var t=this.abortDrawing_();t&&this.dispatchEvent(new Dv(Nv,t))},e.prototype.appendCoordinates=function(t){var e,r=this.mode_,n=!this.sketchFeature_;if(n&&this.startDrawing_(t[0]),r===Mv||r===Av)e=this.sketchCoords_;else{if(r!==Fv)return;e=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}n&&e.shift(),e.pop();for(var i=0;ih?o[1]:o[0]),a}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,r=t.map,n=this.snapToVertex_(e,r);n||(n=r.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(gi(t)):e.setGeometry(void 0):(e=new gt(t?gi(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e},e.prototype.createOrUpdatePointerFeature_=function(t){var e=this.vertexFeature_;e?e.getGeometry().setCoordinates(t):(e=new gt(new qn(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.originalEvent||!this.condition_(e)||(e.type!=Ga.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,r=t.map,n=this.getExtentInternal(),i=this.snapToVertex_(e,r),o=function(t){var e=null,r=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?r=n[3]:t[1]==n[3]&&(r=n[1]),null!==e&&null!==r?[e,r]:null};if(i&&n){var a=i[0]==n[0]||i[0]==n[2]?i[0]:null,s=i[1]==n[1]||i[1]==n[3]?i[1]:null;null!==a&&null!==s?this.pointerHandler_=Yv(o(i)):null!==a?this.pointerHandler_=Wv(o([a,n[1]]),o([a,n[3]])):null!==s&&(this.pointerHandler_=Wv(o([n[0],s]),o([n[2],s])))}else i=r.getCoordinateFromPixelInternal(e),this.setExtent([i[0],i[1],i[0],i[1]]),this.pointerHandler_=Yv(i);return!0},e.prototype.handleDragEvent=function(t){if(this.pointerHandler_){var e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}},e.prototype.handleUpEvent=function(t){this.pointerHandler_=null;var e=this.getExtentInternal();return e&&0!==ve(e)||this.setExtent(null),!1},e.prototype.setMap=function(e){this.extentOverlay_.setMap(e),this.vertexOverlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getExtent=function(){return nn(this.getExtentInternal(),this.getMap().getView().getProjection())},e.prototype.getExtentInternal=function(){return this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Bv(this.extent_))},e}($s),Xv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zv=[0,0,0,0],Kv=[],Hv="modifystart",$v="modifyend",Jv=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.features=r,i.mapBrowserEvent=n,i}return Xv(e,t),e}(c);function Qv(t,e){return t.index-e.index}function t_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE){var i=n;if(1===e.index){var o=tn();o&&(i=i.clone().transform(o,r));var a=Rr(i.getCenter(),rn(t,r)),s=Math.sqrt(a)-i.getRadius();return s*s}}var l=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),Lr(l,Kv)}function e_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE&&1===e.index){var i=n,o=tn();return o&&(i=i.clone().transform(o,r)),en(i.getClosestPoint(rn(t,r)),r)}var a=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),en(Sr(a,Kv),r)}var r_=function(t){function e(e){var r,n,i=t.call(this,e)||this;if(i.boundHandleFeatureChange_=i.handleFeatureChange_.bind(i),i.condition_=e.condition?e.condition:hl,i.defaultDeleteCondition_=function(t){return Qs(t)&&al(t)},i.deleteCondition_=e.deleteCondition?e.deleteCondition:i.defaultDeleteCondition_,i.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:nl,i.vertexFeature_=null,i.vertexSegments_=null,i.lastPixel_=[0,0],i.ignoreNextSingleClick_=!1,i.featuresBeingModified_=null,i.rBush_=new Rp,i.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,i.snappedToVertex_=!1,i.changingFeature_=!1,i.dragSegments_=[],i.overlay_=new Iy({source:new hf({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:(r=bp(),function(t,e){return r[bt.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),i.SEGMENT_WRITERS_={Point:i.writePointGeometry_.bind(i),LineString:i.writeLineStringGeometry_.bind(i),LinearRing:i.writeLineStringGeometry_.bind(i),Polygon:i.writePolygonGeometry_.bind(i),MultiPoint:i.writeMultiPointGeometry_.bind(i),MultiLineString:i.writeMultiLineStringGeometry_.bind(i),MultiPolygon:i.writeMultiPolygonGeometry_.bind(i),Circle:i.writeCircleGeometry_.bind(i),GeometryCollection:i.writeGeometryCollectionGeometry_.bind(i)},i.source_=null,i.hitDetection_=null,e.features?n=e.features:e.source&&(i.source_=e.source,n=new ht(i.source_.getFeatures()),i.source_.addEventListener(ef,i.handleSourceAdd_.bind(i)),i.source_.addEventListener(of,i.handleSourceRemove_.bind(i))),!n)throw new Error("The modify interaction requires features, a source or a layer");return e.hitDetection&&(i.hitDetection_=e.hitDetection),i.features_=n,i.features_.forEach(i.addFeature_.bind(i)),i.features_.addEventListener(at,i.handleFeatureAdd_.bind(i)),i.features_.addEventListener(st,i.handleFeatureRemove_.bind(i)),i.lastPointerEvent_=null,i.delta_=[0,0],i}return Xv(e,t),e.prototype.addFeature_=function(t){var e=t.getGeometry();if(e){var r=this.SEGMENT_WRITERS_[e.getType()];r&&r(t,e)}var n=this.getMap();n&&n.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,n),t.addEventListener(F,this.boundHandleFeatureChange_)},e.prototype.willModifyFeatures_=function(t,e){if(!this.featuresBeingModified_){this.featuresBeingModified_=new ht;for(var r=this.featuresBeingModified_.getArray(),n=0,i=e.length;n=0;--n){for(var i=r[n],o=this.dragSegments_.length-1;o>=0;--o)this.dragSegments_[o][0]===i&&this.dragSegments_.splice(o,1);e.remove(i)}},e.prototype.setActive=function(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.overlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleSourceAdd_=function(t){t.feature&&this.features_.push(t.feature)},e.prototype.handleSourceRemove_=function(t){t.feature&&this.features_.remove(t.feature)},e.prototype.handleFeatureAdd_=function(t){this.addFeature_(t.element)},e.prototype.handleFeatureChange_=function(t){if(!this.changingFeature_){var e=t.target;this.removeFeature_(e),this.addFeature_(e)}},e.prototype.handleFeatureRemove_=function(t){var e=t.element;this.removeFeature_(e)},e.prototype.writePointGeometry_=function(t,e){var r=e.getCoordinates(),n={feature:t,geometry:e,segment:[r,r]};this.rBush_.insert(e.getExtent(),n)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var r=e.getCoordinates(),n=0,i=r.length;n=0;--y)this.insertVertex_(i[y],a)}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var r=this.dragSegments_[e][0],n=r.geometry;if(n.getType()===bt.CIRCLE){var i=n.getCenter(),o=r.featureSegments[0],a=r.featureSegments[1];o.segment[0]=i,o.segment[1]=i,a.segment[0]=i,a.segment[1]=i,this.rBush_.update(ae(i),o);var s=n,l=tn();if(l){var u=t.map.getView().getProjection();s=yi(s=s.clone().transform(l,u)).transform(u,l)}this.rBush_.update(s.getExtent(),a)}else this.rBush_.update(Kt(r.segment),r)}return this.featuresBeingModified_&&(this.dispatchEvent(new Jv($v,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)},e.prototype.handlePointerAtPixel_=function(t,e,r){var n,i,a=this,s=r||e.getCoordinateFromPixel(t),l=e.getView().getProjection();if(this.hitDetection_){var u="object"==typeof this.hitDetection_?function(t){return t===a.hitDetection_}:void 0;e.forEachFeatureAtPixel(t,(function(t,e,r){if((r=r||t.getGeometry()).getType()===bt.POINT){i=r;var o=r.getCoordinates();n=[{feature:t,geometry:r,segment:[o,o]}]}return!0}),{layerFilter:u})}if(!n){var c=nn(Ht(on(ae(s,Zv),l),e.getView().getResolution()*this.pixelTolerance_,Zv),l);n=this.rBush_.getInExtent(c)}if(n&&n.length>0){var h=n.sort((function(t,e){return t_(s,t,l)-t_(s,e,l)}))[0],p=h.segment,f=e_(s,h,l),d=e.getPixelFromCoordinate(f),g=Ir(t,d);if(i||g<=this.pixelTolerance_){var y={};if(y[o(p)]=!0,this.delta_[0]=f[0]-s[0],this.delta_[1]=f[1]-s[1],h.geometry.getType()===bt.CIRCLE&&1===h.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);else{var m=e.getPixelFromCoordinate(p[0]),v=e.getPixelFromCoordinate(p[1]),_=Rr(d,m),b=Rr(d,v);g=Math.sqrt(Math.min(_,b)),this.snappedToVertex_=g<=this.pixelTolerance_,this.snappedToVertex_&&(f=_>b?p[1]:p[0]),this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);var x={};x[o(h.geometry)]=!0;for(var w=1,S=n.length;w=0;--i)h=o((c=(r=p[i])[0]).feature),c.depth&&(h+="-"+c.depth.join("-")),h in f||(f[h]={}),0===r[1]?(f[h].right=c,f[h].index=c.index):1==r[1]&&(f[h].left=c,f[h].index=c.index+1);for(h in f){switch(u=f[h].right,s=f[h].left,(l=(a=f[h].index)-1)<0&&(l=0),t=e=(n=(c=void 0!==s?s:u).geometry).getCoordinates(),d=!1,n.getType()){case bt.MULTI_LINE_STRING:e[c.depth[0]].length>2&&(e[c.depth[0]].splice(a,1),d=!0);break;case bt.LINE_STRING:e.length>2&&(e.splice(a,1),d=!0);break;case bt.MULTI_POLYGON:t=t[c.depth[1]];case bt.POLYGON:(t=t[c.depth[0]]).length>4&&(a==t.length-1&&(a=0),t.splice(a,1),d=!0,0===a&&(t.pop(),t.push(t[0]),l=t.length-1))}if(d){this.setGeometryCoordinates_(n,e);var g=[];if(void 0!==s&&(this.rBush_.remove(s),g.push(s.segment[0])),void 0!==u&&(this.rBush_.remove(u),g.push(u.segment[1])),void 0!==s&&void 0!==u){var y={depth:c.depth,feature:c.feature,geometry:c.geometry,index:l,segment:g};this.rBush_.insert(Kt(y.segment),y)}this.updateSegmentIndices_(n,a,c.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),p.length=0}}return d},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,r,n){this.rBush_.forEachInExtent(t.getExtent(),(function(i){i.geometry===t&&(void 0===r||void 0===i.depth||b(i.depth,r))&&i.index>e&&(i.index+=n)}))},e}($s),n_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i_="select",o_=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.selected=r,o.deselected=n,o.mapBrowserEvent=i,o}return n_(e,t),e}(c),a_={};var s_=function(t){function e(e){var r,n,i=t.call(this)||this,o=e||{};if(i.boundAddFeature_=i.addFeature_.bind(i),i.boundRemoveFeature_=i.removeFeature_.bind(i),i.condition_=o.condition?o.condition:al,i.addCondition_=o.addCondition?o.addCondition:ol,i.removeCondition_=o.removeCondition?o.removeCondition:ol,i.toggleCondition_=o.toggleCondition?o.toggleCondition:ll,i.multi_=!!o.multi&&o.multi,i.filter_=o.filter?o.filter:S,i.hitTolerance_=o.hitTolerance?o.hitTolerance:0,i.style_=void 0!==o.style?o.style:(v((r=bp())[bt.POLYGON],r[bt.LINE_STRING]),v(r[bt.GEOMETRY_COLLECTION],r[bt.LINE_STRING]),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.features_=o.features||new ht,o.layers)if("function"==typeof o.layers)n=o.layers;else{var a=o.layers;n=function(t){return g(a,t)}}else n=S;return i.layerFilter_=n,i.featureLayerAssociation_={},i}return n_(e,t),e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[o(t)]=e},e.prototype.getFeatures=function(){return this.features_},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[o(t)]},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),t.prototype.setMap.call(this,e),e?(this.features_.addEventListener(at,this.boundAddFeature_),this.features_.addEventListener(st,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(at,this.boundAddFeature_),this.features_.removeEventListener(st,this.boundRemoveFeature_))},e.prototype.addFeature_=function(t){var e=t.element;this.style_&&this.applySelectedStyle_(e)},e.prototype.removeFeature_=function(t){var e=t.element;this.style_&&this.restorePreviousStyle_(e)},e.prototype.getStyle=function(){return this.style_},e.prototype.applySelectedStyle_=function(t){var e=o(t);e in a_||(a_[e]=t.getStyle()),t.setStyle(this.style_)},e.prototype.restorePreviousStyle_=function(t){for(var r=this.getMap().getInteractions().getArray(),n=r.length-1;n>=0;--n){var i=r[n];if(i!==this&&i instanceof e&&i.getStyle()&&-1!==i.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(i.getStyle())}var a=o(t);t.setStyle(a_[a]),delete a_[a]},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[o(t)]},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),r=this.removeCondition_(t),n=this.toggleCondition_(t),i=!e&&!r&&!n,o=t.map,a=this.getFeatures(),s=[],l=[];if(i){P(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return l.push(t),this.addFeatureLayerAssociation_(t,e),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var u=a.getLength()-1;u>=0;--u){var c=a.item(u),h=l.indexOf(c);h>-1?l.splice(h,1):(a.remove(c),s.push(c))}0!==l.length&&a.extend(l)}else{o.forEachFeatureAtPixel(t.pixel,function(t,i){if(this.filter_(t,i))return!e&&!n||g(a.getArray(),t)?(r||n)&&g(a.getArray(),t)&&(s.push(t),this.removeFeatureLayerAssociation_(t)):(l.push(t),this.addFeatureLayerAssociation_(t,i)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var p=s.length-1;p>=0;--p)a.remove(s[p]);a.extend(l)}return(l.length>0||s.length>0)&&this.dispatchEvent(new o_(i_,l,s,t)),!0},e}(qs),l_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function u_(t){return t.feature?t.feature:t.element?t.element:void 0}var c_=[],h_=function(t){function e(e){var r=this,n=e||{},i=n;return i.handleDownEvent||(i.handleDownEvent=S),i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).source_=n.source?n.source:null,r.vertex_=void 0===n.vertex||n.vertex,r.edge_=void 0===n.edge||n.edge,r.features_=n.features?n.features:null,r.featuresListenerKeys_=[],r.featureChangeListenerKeys_={},r.indexedFeaturesExtents_={},r.pendingFeatures_={},r.pixelTolerance_=void 0!==n.pixelTolerance?n.pixelTolerance:10,r.rBush_=new Rp,r.SEGMENT_WRITERS_={Point:r.writePointGeometry_.bind(r),LineString:r.writeLineStringGeometry_.bind(r),LinearRing:r.writeLineStringGeometry_.bind(r),Polygon:r.writePolygonGeometry_.bind(r),MultiPoint:r.writeMultiPointGeometry_.bind(r),MultiLineString:r.writeMultiLineStringGeometry_.bind(r),MultiPolygon:r.writeMultiPolygonGeometry_.bind(r),GeometryCollection:r.writeGeometryCollectionGeometry_.bind(r),Circle:r.writeCircleGeometry_.bind(r)},r}return l_(e,t),e.prototype.addFeature=function(t,e){var r=void 0===e||e,n=o(t),i=t.getGeometry();if(i){var a=this.SEGMENT_WRITERS_[i.getType()];a&&(this.indexedFeaturesExtents_[n]=i.getExtent([1/0,1/0,-1/0,-1/0]),a(t,i))}r&&(this.featureChangeListenerKeys_[n]=Z(t,F,this.handleFeatureChange_,this))},e.prototype.forEachFeatureAdd_=function(t){this.addFeature(t)},e.prototype.forEachFeatureRemove_=function(t){this.removeFeature(t)},e.prototype.getFeatures_=function(){var t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t},e.prototype.handleEvent=function(e){var r=this.snapTo(e.pixel,e.coordinate,e.map);return r.snapped&&(e.coordinate=r.vertex.slice(0,2),e.pixel=r.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=u_(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=u_(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var r=o(e);r in this.pendingFeatures_||(this.pendingFeatures_[r]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=R(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var r=void 0===e||e,n=o(t),i=this.indexedFeaturesExtents_[n];if(i){var a=this.rBush_,s=[];a.forEachInExtent(i,(function(e){t===e.feature&&s.push(e)}));for(var l=s.length-1;l>=0;--l)a.remove(s[l])}r&&(H(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])},e.prototype.setMap=function(e){var r=this.getMap(),n=this.featuresListenerKeys_,i=this.getFeatures_();r&&(n.forEach(H),n.length=0,i.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?n.push(Z(this.features_,at,this.handleFeatureAdd_,this),Z(this.features_,st,this.handleFeatureRemove_,this)):this.source_&&n.push(Z(this.source_,ef,this.handleFeatureAdd_,this),Z(this.source_,of,this.handleFeatureRemove_,this)),i.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,r){var n=Kt([r.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),r.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_])]),i=this.rBush_.getInExtent(n);this.vertex_&&!this.edge_&&(i=i.filter((function(t){return t.feature.getGeometry().getType()!==bt.CIRCLE})));var o=!1,a=null,s=null;if(0===i.length)return{snapped:o,vertex:a,vertexPixel:s};for(var l,u=r.getView().getProjection(),c=rn(e,u),h=1/0,p=0;p_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}else if(this.edge_){var b=l.feature.getGeometry().getType()===bt.CIRCLE;if(b){var x=l.feature.getGeometry(),w=tn();w&&(x=x.clone().transform(w,u)),a=en(wr(c,x),u)}else c_[0]=rn(g[0],u),c_[1]=rn(g[1],u),a=en(Sr(c,c_),u);if(Ir(t,s=r.getPixelFromCoordinate(a))<=this.pixelTolerance_&&(o=!0,this.vertex_&&!b)){y=r.getPixelFromCoordinate(g[0]),m=r.getPixelFromCoordinate(g[1]),v=Rr(s,y),_=Rr(s,m);Math.sqrt(Math.min(v,_))<=this.pixelTolerance_&&(a=v>_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}}return o&&(s=[Math.round(s[0]),Math.round(s[1])]),{snapped:o,vertex:a,vertexPixel:s}},e.prototype.updateFeature_=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},e.prototype.writeCircleGeometry_=function(t,e){var r=this.getMap().getView().getProjection(),n=e,i=tn();i&&(n=n.clone().transform(i,r));var o=yi(n);i&&o.transform(r,i);for(var a=o.getCoordinates()[0],s=0,l=a.length-1;s=0;r--){var u=o[r][0];if(te(new Yn(u).getExtent(),new Yn(s).getExtent())){o[r].push(s),l=!0;break}}l||o.push([s.reverse()])}return o}(o.rings,a);1===s.length?(i=bt.POLYGON,t=O({},t,((r={}).rings=s[0],r))):(i=bt.MULTI_POLYGON,t=O({},t,((n={}).rings=s,n)))}return Wy((0,b_[i])(t),!1,e)}function S_(t){var e=yt;return!0===t.hasZ&&!0===t.hasM?e=_t:!0===t.hasZ?e=mt:!0===t.hasM&&(e=vt),e}function E_(t){var e=t.getLayout();return{hasZ:e===mt||e===_t,hasM:e===vt||e===_t}}function T_(t,e){return(0,x_[t.getType()])(Wy(t,!0,e),e)}x_[bt.POINT]=function(t,e){var r,n=t.getCoordinates(),i=t.getLayout();i===mt?r={x:n[0],y:n[1],z:n[2]}:i===vt?r={x:n[0],y:n[1],m:n[2]}:i===_t?r={x:n[0],y:n[1],z:n[2],m:n[3]}:i===yt?r={x:n[0],y:n[1]}:pt(!1,34);return r},x_[bt.LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:[t.getCoordinates()]}},x_[bt.POLYGON]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,rings:t.getCoordinates(!1)}},x_[bt.MULTI_POINT]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,points:t.getCoordinates()}},x_[bt.MULTI_LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:t.getCoordinates()}},x_[bt.MULTI_POLYGON]=function(t,e){for(var r=E_(t),n=t.getCoordinates(!1),i=[],o=0;o=0;a--)i.push(n[o][a]);return{hasZ:r.hasZ,hasM:r.hasM,rings:i}};var C_=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).geometryName_=n.geometryName,r}return __(e,t),e.prototype.readFeatureFromObject=function(t,e,r){var n=t,i=w_(n.geometry,e),o=new gt;if(this.geometryName_&&o.setGeometryName(this.geometryName_),o.setGeometry(i),n.attributes){o.setProperties(n.attributes,!0);var a=n.attributes[r];void 0!==a&&o.setId(a)}return o},e.prototype.readFeaturesFromObject=function(t,e){var r=e||{};if(t.features){for(var n=[],i=t.features,o=0,a=i.length;o0?r[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readFeaturesFromDocument(r,e)}return Cc(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var r=[],n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&v(r,this.readFeaturesFromNode(n,e));return r},e.prototype.readFeaturesFromNode=function(t,e){return n()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readGeometryFromDocument(r,e)}return Cc(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}return null},e.prototype.readGeometryFromDocument=function(t,e){return null},e.prototype.readGeometryFromNode=function(t,e){return null},e.prototype.readProjection=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readProjectionFromDocument(e)}return Cc(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},e.prototype.readProjectionFromDocument=function(t){return this.dataProjection},e.prototype.readProjectionFromNode=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){var r=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var r=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var r=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeGeometryNode=function(t,e){return null},e}(Yy),R_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),I_="http://www.opengis.net/gml",L_=/^[\s\xa0]*$/,M_=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureType=n.featureType,r.featureNS=n.featureNS,r.srsName=n.srsName,r.schemaLocation="",r.FEATURE_COLLECTION_PARSERS={},r.FEATURE_COLLECTION_PARSERS[r.namespace]={featureMember:Ic(r.readFeaturesInternal),featureMembers:Lc(r.readFeaturesInternal)},r}return R_(e,t),e.prototype.readFeaturesInternal=function(t,e){var r=t.localName,n=null;if("FeatureCollection"==r)n=Uc([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==r||"featureMember"==r||"member"==r){var i=e[0],o=i.featureType,a=i.featureNS;if(!o&&t.childNodes){o=[],a={};for(var s=0,l=t.childNodes.length;s0){i[s]={_content_:i[s]};for(var u=0;u0:h===bt.POINT||h===bt.MULTI_POINT}}s&&(l=o.get("name"),(s=s&&!!l)&&l.search(/&[^&]+;/)>-1&&(Tx||(Tx=document.createElement("textarea")),Tx.innerHTML=l,l=Tx.value));var p=r;if(t?p=t:e&&(p=function t(e,r,n){return Array.isArray(e)?e:"string"==typeof e?t(n[e],r,n):r}(e,r,n)),s){var f=function(t,e){var r=[0,0],n="start",i=t.getImage();if(i){var o=i.getImageSize();if(null===o&&(o=Kb),2==o.length){var a=i.getScaleArray();r[0]=a[0]*o[0]/2,r[1]=-a[1]*o[1]/2,n="left"}}var s=t.getText();s?((s=s.clone()).setFont(s.getFont()||Sx.getFont()),s.setScale(s.getScale()||Sx.getScale()),s.setFill(s.getFill()||Sx.getFill()),s.setStroke(s.getStroke()||xx)):s=Sx.clone();return s.setText(e),s.setOffsetX(r[0]),s.setOffsetY(r[1]),s.setTextAlign(n),new wp({image:i,text:s})}(p[0],l);return u.length>0?(f.setGeometry(new Vm(u)),[f,new wp({geometry:p[0].getGeometry(),image:null,fill:p[0].getFill(),stroke:p[0].getStroke(),text:null})].concat(p.slice(1))):f}return p}}(r.Style,r.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(s)}return delete r.Style,n.setProperties(r,!0),n}},e.prototype.readSharedStyle_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=nw.call(this,t,e);if(n){var i=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readSharedStyleMap_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=kx.call(this,t,e);if(n){var i,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readFeatureFromNode=function(t,e){if(!g(cx,t.namespaceURI))return null;var r=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return r||null},e.prototype.readFeaturesFromNode=function(t,e){if(!g(cx,t.namespaceURI))return[];var r,n=t.localName;if("Document"==n||"Folder"==n)return(r=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]))||[];if("Placemark"==n){var i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){r=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var a=this.readFeaturesFromNode(o,e);a&&v(r,a)}return r}return[]},e.prototype.readName=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readNameFromDocument(e)}return Cc(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},e.prototype.readNameFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){var r=this.readNameFromNode(e);if(r)return r}},e.prototype.readNameFromNode=function(t){for(var e=t.firstElementChild;e;e=e.nextElementSibling)if(g(cx,e.namespaceURI)&&"name"==e.localName)return U_(e);for(e=t.firstElementChild;e;e=e.nextElementSibling){var r=e.localName;if(g(cx,e.namespaceURI)&&("Document"==r||"Folder"==r||"Placemark"==r||"kml"==r)){var n=this.readNameFromNode(e);if(n)return n}}},e.prototype.readNetworkLinks=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readNetworkLinksFromDocument(r))}else Cc(t)?v(e,this.readNetworkLinksFromDocument(t)):v(e,this.readNetworkLinksFromNode(t));return e},e.prototype.readNetworkLinksFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readNetworkLinksFromNode(r));return e},e.prototype.readNetworkLinksFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"NetworkLink"==r.localName){var n=Uc({},fx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readNetworkLinksFromNode(r))}return e},e.prototype.readRegion=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readRegionFromDocument(r))}else Cc(t)?v(e,this.readRegionFromDocument(t)):v(e,this.readRegionFromNode(t));return e},e.prototype.readRegionFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readRegionFromNode(r));return e},e.prototype.readRegionFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"Region"==r.localName){var n=Uc({},gx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readRegionFromNode(r))}return e},e.prototype.writeFeaturesNode=function(t,e){e=this.adaptOptions(e);var r=Sc(cx[4],"kml"),n="http://www.w3.org/2000/xmlns/";r.setAttributeNS(n,"xmlns:gx",ux[0]),r.setAttributeNS(n,"xmlns:xsi",wc),r.setAttributeNS(wc,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var i={node:r},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var a=yx[r.namespaceURI],s=Dc(o,a);return Vc(i,mx,Nc,s,[e],a,this),r},e}(P_);function Rx(t){var e=Ec(t,!1),r=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(r){var n=r[1];return[parseInt(n.substr(6,2),16),parseInt(n.substr(4,2),16),parseInt(n.substr(2,2),16),parseInt(n.substr(0,2),16)/255]}}function Ix(t){var e=Ec(t,!1),r=[];e=e.replace(/\s*,\s*/g,",");for(var n,i=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;n=i.exec(e);){var o=parseFloat(n[1]),a=parseFloat(n[2]),s=n[3]?parseFloat(n[3]):0;r.push(o,a,s),e=e.substr(n[0].length)}if(""===e)return r}function Lx(t){var e=Ec(t,!1).trim(),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Mx(t){var e=Ec(t,!1).trim().replace(/^(?!.*#)/,"#"),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Fx(t){return N_(t)}var Ax=Gc(cx,{Pair:function(t,e){var r=Uc({},uw,t,e,this);if(!r)return;var n=r.key;if(n&&"normal"==n){var i=r.styleUrl;i&&(e[e.length-1]=i);var o=r.Style;o&&(e[e.length-1]=o)}}});function kx(t,e){return Uc(void 0,Ax,t,e,this)}var jx=Gc(cx,{Icon:Fc((function(t,e){var r=Uc({},Wx,t,e);return r||null})),color:Fc(Rx),heading:Fc(N_),hotSpot:Fc((function(t){var e,r=t.getAttribute("xunits"),n=t.getAttribute("yunits");return e="insetPixels"!==r?"insetPixels"!==n?ip:ap:"insetPixels"!==n?op:sp,{x:parseFloat(t.getAttribute("x")),xunits:hx[r],y:parseFloat(t.getAttribute("y")),yunits:hx[n],origin:e}})),scale:Fc(Fx)});var Nx=Gc(cx,{color:Fc(Rx),scale:Fc(Fx)});var Dx=Gc(cx,{color:Fc(Rx),width:Fc(N_)});var Gx=Gc(cx,{color:Fc(Rx),fill:Fc(A_),outline:Fc(A_)});var zx=Gc(cx,{coordinates:Lc(Ix)});function Ux(t,e){return Uc(null,zx,t,e)}var Bx=Gc(ux,{Track:Ic(Yx)});var Vx=Gc(cx,{when:function(t,e){var r=e[e.length-1].whens,n=Ec(t,!1),i=Date.parse(n);r.push(isNaN(i)?0:i)}},Gc(ux,{coord:function(t,e){var r=e[e.length-1].flatCoordinates,n=Ec(t,!1),i=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(i){var o=parseFloat(i[1]),a=parseFloat(i[2]),s=parseFloat(i[3]);r.push(o,a,s,0)}else r.push(0,0,0,0)}}));function Yx(t,e){var r=Uc({flatCoordinates:[],whens:[]},Vx,t,e);if(r){for(var n=r.flatCoordinates,i=r.whens,o=0,a=Math.min(n.length,i.length);o0,c=l.href;c?n=c:u&&(n=Hb);var h,p=ip,f=r.hotSpot;f?(i=[f.x,f.y],o=f.xunits,a=f.yunits,p=f.origin):n===Hb?(i=qb,o=Xb,a=Zb):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n)&&(i=[.5,0],o=rp,a=rp);var d,g=l.x,y=l.y;void 0!==g&&void 0!==y&&(h=[g,y]);var m,v=l.w,_=l.h;void 0!==v&&void 0!==_&&(d=[v,_]);var b=r.heading;void 0!==b&&(m=Ye(b));var x=r.scale,w=r.color;if(u){n==Hb&&(d=Kb,void 0===x&&(x=$b));var S=new dp({anchor:i,anchorOrigin:p,anchorXUnits:o,anchorYUnits:a,crossOrigin:this.crossOrigin_,offset:h,offsetOrigin:ip,rotation:m,scale:x,size:d,src:this.iconUrlFunction_(n),color:w});s.imageStyle=S}else s.imageStyle=_x}},LabelStyle:function(t,e){var r=Uc({},Nx,t,e);if(r){var n=e[e.length-1],i=new Tp({fill:new ep({color:"color"in r?r.color:Wb}),scale:r.scale});n.textStyle=i}},LineStyle:function(t,e){var r=Uc({},Dx,t,e);if(r){var n=e[e.length-1],i=new gp({color:"color"in r?r.color:Wb,width:"width"in r?r.width:1});n.strokeStyle=i}},PolyStyle:function(t,e){var r=Uc({},Gx,t,e);if(r){var n=e[e.length-1],i=new ep({color:"color"in r?r.color:Wb});n.fillStyle=i;var o=r.fill;void 0!==o&&(n.fill=o);var a=r.outline;void 0!==a&&(n.outline=a)}}});function nw(t,e){var r=Uc({},rw,t,e,this);if(!r)return null;var n,i="fillStyle"in r?r.fillStyle:vx,o=r.fill;void 0===o||o||(i=null),"imageStyle"in r?r.imageStyle!=_x&&(n=r.imageStyle):n=bx;var a="textStyle"in r?r.textStyle:Sx,s="strokeStyle"in r?r.strokeStyle:wx,l=r.outline;return void 0===l||l?[new wp({fill:i,image:n,stroke:s,text:a,zIndex:void 0})]:[new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e!==bt.POLYGON&&e!==bt.MULTI_POLYGON}))):r!==bt.POLYGON&&r!==bt.MULTI_POLYGON?e:void 0},fill:i,image:n,stroke:s,text:a,zIndex:void 0}),new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e===bt.POLYGON||e===bt.MULTI_POLYGON}))):r===bt.POLYGON||r===bt.MULTI_POLYGON?e:void 0},fill:i,stroke:null,zIndex:void 0})]}function iw(t,e){var r,n,i,o=e.length,a=new Array(e.length),s=new Array(e.length),l=new Array(e.length);r=!1,n=!1,i=!1;for(var u=0;u0){var m=Dc(i,a);Vc(n,Gw,Uw,[{names:a,values:m}],r)}var v=r[0],_=e.getGeometry();_&&(_=Wy(_,!0,v)),Vc(n,Gw,Iw,[_],r)}var Vw=Gc(cx,["extrude","tessellate","altitudeMode","coordinates"]),Yw=Gc(cx,{extrude:Ac(B_),tessellate:Ac(B_),altitudeMode:Ac(X_),coordinates:Ac((function(t,e,r){var n,i=r[r.length-1],o=i.layout,a=i.stride;o==yt||o==vt?n=2:o==mt||o==_t?n=3:pt(!1,34);var s=e.length,l="";if(s>0){l+=e[0];for(var u=1;u>1):i>>1}return e}function NS(t){for(var e="",r=0,n=t.length;r=32;)e=63+(32|31&t),r+=String.fromCharCode(e),t>>=5;return e=t+63,r+=String.fromCharCode(e)}var zS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.dataProjection=Gr("EPSG:4326"),r.factor_=n.factor?n.factor:1e5,r.geometryLayout_=n.geometryLayout?n.geometryLayout:yt,r}return IS(e,t),e.prototype.readFeatureFromText=function(t,e){var r=this.readGeometryFromText(t,e);return new gt(r)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var r=yn(this.geometryLayout_),n=MS(t,r,this.factor_);v_(n,0,n.length,r,n);var i=Nn(n,0,n.length,r);return Wy(new Py(i,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var r=t.getGeometry();return r?this.writeGeometryText(r,e):(pt(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var r=(t=Wy(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return v_(r,0,r.length,n,r),LS(r,n,this.factor_)},e}(Jb),US=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.layerName_=n.layerName,r.layers_=n.layers?n.layers:null,r.dataProjection=Gr(n.dataProjection?n.dataProjection:"EPSG:4326"),r}return US(e,t),e.prototype.readFeaturesFromObject=function(t,e){if("Topology"==t.type){var r=t,n=void 0,i=null,o=null;r.transform&&(i=(n=r.transform).scale,o=n.translate);var a=r.arcs;n&&function(t,e,r){for(var n=0,i=t.length;n0&&i.pop(),n=r>=0?e[r]:e[~r].slice().reverse(),i.push.apply(i,n);for(var s=0,l=i.length;s=2,57),n}return $S(e,t),e}(HS),QS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tE=function(t){function e(e){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return QS(e,t),e}(JS),eE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rE=function(t){function e(e,r,n){var i=t.call(this,"BBOX")||this;if(i.geometryName=e,i.extent=r,4!==r.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return i.srsName=n,i}return eE(e,t),e}(HS),nE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iE=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.geometryName=r||"the_geom",o.geometry=n,o.srsName=i,o}return nE(e,t),e}(HS),oE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),aE=function(t){function e(e,r,n){return t.call(this,"Contains",e,r,n)||this}return oE(e,t),e}(iE),sE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),lE=function(t){function e(e,r,n,i,o){var a=t.call(this,"DWithin",e,r,o)||this;return a.distance=n,a.unit=i,a}return sE(e,t),e}(iE),uE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cE=function(t){function e(e,r,n){return t.call(this,"Disjoint",e,r,n)||this}return uE(e,t),e}(iE),hE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pE=function(t){function e(e,r){var n=t.call(this,e)||this;return n.propertyName=r,n}return hE(e,t),e}(HS),fE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dE=function(t){function e(e,r,n){var i=t.call(this,"During",e)||this;return i.begin=r,i.end=n,i}return fE(e,t),e}(pE),gE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yE=function(t){function e(e,r,n,i){var o=t.call(this,e,r)||this;return o.expression=n,o.matchCase=i,o}return gE(e,t),e}(pE),mE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vE=function(t){function e(e,r,n){return t.call(this,"PropertyIsEqualTo",e,r,n)||this}return mE(e,t),e}(yE),_E=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThan",e,r)||this}return _E(e,t),e}(yE),xE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),wE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThanOrEqualTo",e,r)||this}return xE(e,t),e}(yE),SE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),EE=function(t){function e(e,r,n){return t.call(this,"Intersects",e,r,n)||this}return SE(e,t),e}(iE),TE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),CE=function(t){function e(e,r,n){var i=t.call(this,"PropertyIsBetween",e)||this;return i.lowerBoundary=r,i.upperBoundary=n,i}return TE(e,t),e}(pE),OE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),PE=function(t){function e(e,r,n,i,o,a){var s=t.call(this,"PropertyIsLike",e)||this;return s.pattern=r,s.wildCard=void 0!==n?n:"*",s.singleChar=void 0!==i?i:".",s.escapeChar=void 0!==o?o:"!",s.matchCase=a,s}return OE(e,t),e}(pE),RE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),IE=function(t){function e(e){return t.call(this,"PropertyIsNull",e)||this}return RE(e,t),e}(pE),LE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ME=function(t){function e(e,r){return t.call(this,"PropertyIsLessThan",e,r)||this}return LE(e,t),e}(yE),FE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),AE=function(t){function e(e,r){return t.call(this,"PropertyIsLessThanOrEqualTo",e,r)||this}return FE(e,t),e}(yE),kE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jE=function(t){function e(e){var r=t.call(this,"Not")||this;return r.condition=e,r}return kE(e,t),e}(HS),NE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),DE=function(t){function e(e,r,n){return t.call(this,"PropertyIsNotEqualTo",e,r,n)||this}return NE(e,t),e}(yE),GE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zE=function(t){function e(e){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return GE(e,t),e}(JS),UE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BE=function(t){function e(e){var r=t.call(this,"ResourceId")||this;return r.rid=e,r}return UE(e,t),e}(HS),VE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),YE=function(t){function e(e,r,n){return t.call(this,"Within",e,r,n)||this}return VE(e,t),e}(iE);function WE(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(tE,e))}function qE(t,e,r){return new rE(t,e,r)}var XE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ZE={"http://www.opengis.net/gml":{boundedBy:Fc(F_.prototype.readGeometryElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Ic(F_.prototype.readFeaturesInternal)}},KE={"http://www.opengis.net/wfs":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)},"http://www.opengis.net/wfs/2.0":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)}},HE={"http://www.opengis.net/wfs":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")}},$E={"http://www.opengis.net/wfs":{PropertyName:Ac(X_)},"http://www.opengis.net/wfs/2.0":{PropertyName:Ac(X_)}},JE={"http://www.opengis.net/wfs":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)},"http://www.opengis.net/wfs/2.0":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)}},QE="http://www.w3.org/2000/xmlns/",tT={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},eT={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},rT={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},nT={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},iT={"2.0.0":ab,"1.1.0":eb,"1.0.0":$_},oT=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.version_=n.version?n.version:"1.1.0",r.featureType_=n.featureType,r.featureNS_=n.featureNS,r.gmlFormat_=n.gmlFormat?n.gmlFormat:new iT[r.version_],r.schemaLocation_=n.schemaLocation?n.schemaLocation:nT[r.version_],r}return XE(e,t),e.prototype.getFeatureType=function(){return this.featureType_},e.prototype.setFeatureType=function(t){this.featureType_=t},e.prototype.readFeaturesFromNode=function(t,e){var r={node:t};O(r,{featureType:this.featureType_,featureNS:this.featureNS_}),O(r,this.getReadOptions(t,e||{}));var n=[r],i=Uc([],"2.0.0"===this.version_?ZE:this.gmlFormat_.FEATURE_COLLECTION_PARSERS,t,n,this.gmlFormat_);return i||(i=[]),i},e.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readTransactionResponseFromDocument(e)}return Cc(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},e.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readFeatureCollectionMetadataFromDocument(e)}return Cc(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},e.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(e)},e.prototype.readFeatureCollectionMetadataFromNode=function(t){var e={},r=z_(t.getAttribute("numberOfFeatures"));return e.numberOfFeatures=r,Uc(e,ZE,t,[],this.gmlFormat_)},e.prototype.readTransactionResponseFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(e)},e.prototype.readTransactionResponseFromNode=function(t){return Uc({},HE,t,[])},e.prototype.writeGetFeature=function(t){var e=this,r=Sc(eT[this.version_],"GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",this.version_),t.handle&&r.setAttribute("handle",t.handle),t.outputFormat&&r.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&r.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&r.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&r.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&r.setAttribute("count",String(t.count)),void 0!==t.viewParams&&r.setAttribute("viewParams",t.viewParams),r.setAttributeNS(wc,"xsi:schemaLocation",this.schemaLocation_);var n={node:r};if(O(n,{version:this.version_,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.featureNS_,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),pt(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var i=t.filter;t.bbox&&(pt(t.geometryName,12),i=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,i)),O(n,{geometryName:t.geometryName,filter:i}),jT(r,t.featureTypes,[n])}else t.featureTypes.forEach((function(i){var o=e.combineBboxAndFilter(i.geometryName,i.bbox,t.srsName,t.filter);O(n,{geometryName:i.geometryName,filter:o}),jT(r,[i.name],[n])}));return r},e.prototype.combineBboxAndFilter=function(t,e,r,n){var i=qE(t,e,r);return n?WE(n,i):i},e.prototype.writeTransaction=function(t,e,r,n){var i,o=[],a=n.version?n.version:this.version_,s=Sc(eT[a],"Transaction");s.setAttribute("service","WFS"),s.setAttribute("version",a),n&&(i=n.gmlOptions?n.gmlOptions:{},n.handle&&s.setAttribute("handle",n.handle)),s.setAttributeNS(wc,"xsi:schemaLocation",nT[a]);var l=function(t,e,r,n){var i,o=n.featurePrefix?n.featurePrefix:"feature";"1.0.0"===r?i=2:"1.1.0"===r?i=3:"2.0.0"===r&&(i=3.2);return O({node:t},{version:r,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:o,gmlVersion:i,hasZ:n.hasZ,srsName:n.srsName},e)}(s,i,a,n);return t&&aT("Insert",t,o,l),e&&aT("Update",e,o,l),r&&aT("Delete",r,o,l),n.nativeElements&&aT("Native",n.nativeElements,o,l),s},e.prototype.readProjectionFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null},e.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){var r=[{}];return this.gmlFormat_.readGeometryElement(e,r),Gr(r.pop().srsName)}return null},e}(P_);function aT(t,e,r,n){Vc(n,JE,jc(t),e,r)}function sT(t,e){return Uc({},KE,t,e)}var lT={"http://www.opengis.net/ogc":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))}};function uT(t,e){zc(lT,t,e)}var cT={"http://www.opengis.net/wfs":{Feature:uT},"http://www.opengis.net/wfs/2.0":{Feature:uT}};function hT(t,e){return Uc([],cT,t,e)}function pT(t,e,r){var n=r[r.length-1],i=n.featureType,o=n.featureNS,a=n.gmlVersion,s=Sc(o,i);t.appendChild(s),2===a?$_.prototype.writeFeatureElement(s,e,r):3===a?eb.prototype.writeFeatureElement(s,e,r):ab.prototype.writeFeatureElement(s,e,r)}function fT(t,e,r){var n=r[r.length-1].version,i=tT[n],o=Sc(i,"Filter"),a=Sc(i,"FeatureId");o.appendChild(a),a.setAttribute("fid",e),t.appendChild(o)}function dT(t,e){var r=(t=t||"feature")+":";return 0===e.indexOf(r)?e:r+e}function gT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),26);var i=n.featureType,o=n.featurePrefix,a=n.featureNS,s=dT(o,i);t.setAttribute("typeName",s),t.setAttributeNS(QE,"xmlns:"+o,a);var l=e.getId();void 0!==l&&fT(t,l,r)}function yT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),27);var i=n.version,o=n.featureType,a=n.featurePrefix,s=n.featureNS,l=dT(a,o),u=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(QE,"xmlns:"+a,s);var c=e.getId();if(void 0!==c){for(var h=e.getKeys(),p=[],f=0,d=h.length;f="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},t.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},t.prototype.nextToken=function(){var t,e=this.nextChar_(),r=this.index_,n=e;if("("==e)t=BT;else if(","==e)t=WT;else if(")"==e)t=VT;else if(this.isNumeric_(e)||"-"==e)t=YT,n=this.readNumber_();else if(this.isAlpha_(e))t=UT,n=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=qT}return{position:r,value:n,type:t}},t.prototype.readNumber_=function(){var t,e=this.index_,r=!1,n=!1;do{"."==t?r=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,r)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},t.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()},t}(),HT=function(){function t(t){this.lexer_=t,this.token_,this.layout_=yt}return t.prototype.consume_=function(){this.token_=this.lexer_.nextToken()},t.prototype.isTokenType=function(t){return this.token_.type==t},t.prototype.match=function(t){var e=this.isTokenType(t);return e&&this.consume_(),e},t.prototype.parse=function(){return this.consume_(),this.parseGeometry_()},t.prototype.parseGeometryLayout_=function(){var t=yt,e=this.token_;if(this.isTokenType(UT)){var r=e.value;"Z"===r?t=mt:"M"===r?t=vt:"ZM"===r&&(t=_t),t!==yt&&this.consume_()}return t},t.prototype.parseGeometryCollectionText_=function(){if(this.match(BT)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(WT));if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePointText_=function(){if(this.match(BT)){var t=this.parsePoint_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())},t.prototype.parseLineStringText_=function(){if(this.match(BT)){var t=this.parsePointList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePolygonText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPointText_=function(){if(this.match(BT)){var t=void 0;if(t=this.token_.type==BT?this.parsePointTextList_():this.parsePointList_(),this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiLineStringText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPolygonText_=function(){if(this.match(BT)){var t=this.parsePolygonTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePoint_=function(){for(var t=[],e=this.layout_.length,r=0;r0&&(e+=" "+n)}return 0===r.length?e+" EMPTY":e+"("+r+")"}var nC=$T,iC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),oC=[null,"http://www.opengis.net/wms"],aC=Gc(oC,{Service:Fc((function(t,e){return Uc({},uC,t,e)})),Capability:Fc((function(t,e){return Uc({},sC,t,e)}))}),sC=Gc(oC,{Request:Fc((function(t,e){return Uc({},mC,t,e)})),Exception:Fc((function(t,e){return Uc([],fC,t,e)})),Layer:Fc((function(t,e){var r=Uc({},dC,t,e);if(void 0===r.Layer)return Object.assign(r,EC(t,e));return r}))}),lC=function(t){function e(){var e=t.call(this)||this;return e.version=void 0,e}return iC(e,t),e.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var e=Uc({version:this.version},aC,t,[]);return e||null},e}(cS),uC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),OnlineResource:Fc(hS),ContactInformation:Fc((function(t,e){return Uc({},cC,t,e)})),Fees:Fc(U_),AccessConstraints:Fc(U_),LayerLimit:Fc(G_),MaxWidth:Fc(G_),MaxHeight:Fc(G_)}),cC=Gc(oC,{ContactPersonPrimary:Fc((function(t,e){return Uc({},hC,t,e)})),ContactPosition:Fc(U_),ContactAddress:Fc((function(t,e){return Uc({},pC,t,e)})),ContactVoiceTelephone:Fc(U_),ContactFacsimileTelephone:Fc(U_),ContactElectronicMailAddress:Fc(U_)}),hC=Gc(oC,{ContactPerson:Fc(U_),ContactOrganization:Fc(U_)}),pC=Gc(oC,{AddressType:Fc(U_),Address:Fc(U_),City:Fc(U_),StateOrProvince:Fc(U_),PostCode:Fc(U_),Country:Fc(U_)}),fC=Gc(oC,{Format:Ic(U_)}),dC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),CRS:Mc(U_),EX_GeographicBoundingBox:Fc((function(t,e){var r=Uc({},yC,t,e);if(!r)return;var n=r.westBoundLongitude,i=r.southBoundLatitude,o=r.eastBoundLongitude,a=r.northBoundLatitude;if(void 0===n||void 0===i||void 0===o||void 0===a)return;return[n,i,o,a]})),BoundingBox:Mc((function(t,e){var r=[D_(t.getAttribute("minx")),D_(t.getAttribute("miny")),D_(t.getAttribute("maxx")),D_(t.getAttribute("maxy"))],n=[D_(t.getAttribute("resx")),D_(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:r,res:n}})),Dimension:Mc((function(t,e){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:k_(t.getAttribute("multipleValues")),nearestValue:k_(t.getAttribute("nearestValue")),current:k_(t.getAttribute("current")),values:U_(t)}})),Attribution:Fc((function(t,e){return Uc({},gC,t,e)})),AuthorityURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.name=t.getAttribute("name"),r;return})),Identifier:Mc(U_),MetadataURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.type=t.getAttribute("type"),r;return})),DataURL:Mc(TC),FeatureListURL:Mc(TC),Style:Mc((function(t,e){return Uc({},xC,t,e)})),MinScaleDenominator:Fc(N_),MaxScaleDenominator:Fc(N_),Layer:Mc(EC)}),gC=Gc(oC,{Title:Fc(U_),OnlineResource:Fc(hS),LogoURL:Fc(OC)}),yC=Gc(oC,{westBoundLongitude:Fc(N_),eastBoundLongitude:Fc(N_),southBoundLatitude:Fc(N_),northBoundLatitude:Fc(N_)}),mC=Gc(oC,{GetCapabilities:Fc(CC),GetMap:Fc(CC),GetFeatureInfo:Fc(CC)}),vC=Gc(oC,{Format:Mc(U_),DCPType:Mc((function(t,e){return Uc({},_C,t,e)}))}),_C=Gc(oC,{HTTP:Fc((function(t,e){return Uc({},bC,t,e)}))}),bC=Gc(oC,{Get:Fc(TC),Post:Fc(TC)}),xC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),LegendURL:Mc(OC),StyleSheetURL:Fc(TC),StyleURL:Fc(TC)}),wC=Gc(oC,{Format:Fc(U_),OnlineResource:Fc(hS)}),SC=Gc(oC,{Keyword:Ic(U_)});function EC(t,e){var r=e[e.length-1],n=Uc({},dC,t,e);if(n){var i=k_(t.getAttribute("queryable"));void 0===i&&(i=r.queryable),n.queryable=void 0!==i&&i;var o=z_(t.getAttribute("cascaded"));void 0===o&&(o=r.cascaded),n.cascaded=o;var a=k_(t.getAttribute("opaque"));void 0===a&&(a=r.opaque),n.opaque=void 0!==a&&a;var s=k_(t.getAttribute("noSubsets"));void 0===s&&(s=r.noSubsets),n.noSubsets=void 0!==s&&s;var l=D_(t.getAttribute("fixedWidth"));l||(l=r.fixedWidth),n.fixedWidth=l;var u=D_(t.getAttribute("fixedHeight"));u||(u=r.fixedHeight),n.fixedHeight=u;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in r){var e=n[t]||[];n[t]=e.concat(r[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in n)){var e=r[t];n[t]=e}})),n}}function TC(t,e){return Uc({},wC,t,e)}function CC(t,e){return Uc({},vC,t,e)}function OC(t,e){var r=TC(t,e);if(r){var n=[z_(t.getAttribute("width")),z_(t.getAttribute("height"))];return r.size=n,r}}function PC(t,e){return Uc([],SC,t,e)}var RC=lC,IC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),LC=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureNS_="http://mapserver.gis.umn.edu/mapserver",r.gmlFormat_=new $_,r.layers_=n.layers?n.layers:null,r}return IC(e,t),e.prototype.getLayers=function(){return this.layers_},e.prototype.setLayers=function(t){this.layers_=t},e.prototype.readFeatures_=function(t,e){t.setAttribute("namespaceURI",this.featureNS_);var r=t.localName,n=[];if(0===t.childNodes.length)return n;if("msGMLOutput"==r)for(var i=0,o=t.childNodes.length;i.75*c||u>.75*h?this.resetExtent_():te(o,n)||this.recenter_()}}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getSize(),n=t.getView().calculateExtentInternal(r),i=e.getView(),o=Math.log(7.5)/Math.LN2;Me(n,1/(.1*Math.pow(2,o/2))),i.fitInternal(gi(n))},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getView();e.getView().setCenterInternal(r.getCenterInternal())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView(),i=e.getView(),o=this.rotateWithView_?0:-n.getRotation(),a=this.boxOverlay_,s=this.boxOverlay_.getElement(),l=n.getCenterInternal(),u=n.getResolution(),c=i.getResolution(),h=r[0]*u/c,p=r[1]*u/c;if(a.setPosition(l),s){s.style.width=h+"px",s.style.height=p+"px";var f="rotate("+o+"rad)";s.style.transform=f}}},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle("ol-collapsed"),this.collapsed_?po(this.collapseLabel_,this.label_):po(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),K(t,qa,(function(t){this.updateBox_()}),this)}},e.prototype.getCollapsible=function(){return this.collapsible_},e.prototype.setCollapsible=function(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())},e.prototype.setCollapsed=function(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()},e.prototype.getCollapsed=function(){return this.collapsed_},e.prototype.getRotateWithView=function(){return this.rotateWithView_},e.prototype.setRotateWithView=function(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))},e.prototype.getOverviewMap=function(){return this.ovmap_},e.prototype.render=function(t){this.validateExtent_(),this.updateBox_()},e}(As),lO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),uO="degrees",cO="imperial",hO="nautical",pO="metric",fO="us",dO=[1,2,5],gO=function(t){function e(e){var r=this,n=e||{},i=void 0!==n.className?n.className:n.bar?"ol-scale-bar":"ol-scale-line";return(r=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).innerElement_=document.createElement("div"),r.innerElement_.className=i+"-inner",r.element.className=i+" ol-unselectable",r.element.appendChild(r.innerElement_),r.viewState_=null,r.minWidth_=void 0!==n.minWidth?n.minWidth:64,r.renderedVisible_=!1,r.renderedWidth_=void 0,r.renderedHTML_="",r.addEventListener(it("units"),r.handleUnitsChanged_),r.setUnits(n.units||pO),r.scaleBar_=n.bar||!1,r.scaleBarSteps_=n.steps||4,r.scaleBarText_=n.text||!1,r.dpi_=n.dpi||void 0,r}return lO(e,t),e.prototype.getUnits=function(){return this.get("units")},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set("units",t)},e.prototype.setDpi=function(t){this.dpi_=t},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,r=t.projection,n=this.getUnits(),i=n==uO?St.DEGREES:St.METERS,o=zr(r,t.resolution,e,i),a=this.minWidth_*(this.dpi_||25.4/.28)/(25.4/.28),s=a*o,l="";if(n==uO){var u=wt[St.DEGREES];(s*=u)=a)break;++d}f=this.scaleBar_?this.createScaleBar(h,c,l):c.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=h&&(this.innerElement_.style.width=h+"px",this.renderedWidth_=h),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,r){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),i=[],o=t/this.scaleBarSteps_,a="#ffffff",s=0;s
'+this.createMarker("relative",s)+(s%2==0||2===this.scaleBarSteps_?this.createStepText(s,t,!1,e,r):"")+""),s===this.scaleBarSteps_-1&&i.push(this.createStepText(s+1,t,!0,e,r)),a="#ffffff"===a?"#000000":"#ffffff";return'
'+(this.scaleBarText_?'
'+n+"
":"")+i.join("")+"
"},e.prototype.createMarker=function(t,e){return'
'},e.prototype.createStepText=function(t,e,r,n,i){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+i);return'
'+o+"
"},e.prototype.getScaleForResolution=function(){var t=zr(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center),e=this.dpi_||25.4/.28,r=this.viewState_.projection.getMetersPerUnit();return parseFloat(t.toString())*r*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(As),yO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),mO=0,vO=1,_O=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render})||this).dragListenerKeys_=[],r.currentResolution_=void 0,r.direction_=mO,r.dragging_,r.heightLimit_=0,r.widthLimit_=0,r.startX_,r.startY_,r.thumbSize_=null,r.sliderInitialized_=!1,r.duration_=void 0!==n.duration?n.duration:200;var i=void 0!==n.className?n.className:"ol-zoomslider",o=document.createElement("button");o.setAttribute("type","button"),o.className=i+"-thumb ol-unselectable";var a=r.element;return a.className=i+" ol-unselectable ol-control",a.appendChild(o),a.addEventListener(Ua,r.handleDraggerStart_.bind(r),!1),a.addEventListener(za,r.handleDraggerDrag_.bind(r),!1),a.addEventListener(Ba,r.handleDraggerEnd_.bind(r),!1),a.addEventListener(N,r.handleContainerClick_.bind(r),!1),o.addEventListener(N,u,!1),r}return yO(e,t),e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),e&&e.render()},e.prototype.initSlider_=function(){var t=this.element,e=t.offsetWidth,r=t.offsetHeight;if(0===e&&0===r)return this.sliderInitialized_=!1;var n=t.firstElementChild,i=getComputedStyle(n),o=n.offsetWidth+parseFloat(i.marginRight)+parseFloat(i.marginLeft),a=n.offsetHeight+parseFloat(i.marginTop)+parseFloat(i.marginBottom);return this.thumbSize_=[o,a],e>r?(this.direction_=vO,this.widthLimit_=e-o):(this.direction_=mO,this.heightLimit_=r-a),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),r=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(r),i=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:i,duration:this.duration_,easing:io})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){var r=this.handleDraggerDrag_,n=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(Z(i,za,r,this),Z(i,Ba,n,this))}}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,r=t.clientY-this.startY_,n=this.getRelativePosition_(e,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}},e.prototype.handleDraggerEnd_=function(t){this.dragging_&&(this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0)},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),r=this.element.firstElementChild;this.direction_==vO?r.style.left=this.widthLimit_*e+"px":r.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){return Ne(this.direction_===vO?t/this.widthLimit_:e/this.heightLimit_,0,1)},e.prototype.getResolutionForPosition_=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},e.prototype.getPositionForResolution_=function(t){return Ne(1-this.getMap().getView().getValueForResolutionFunction()(t),0,1)},e.prototype.render=function(t){if(t.frameState&&(this.sliderInitialized_||this.initSlider_())){var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},e}(As),bO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xO=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),target:n.target})||this).extent=n.extent?n.extent:null;var i=void 0!==n.className?n.className:"ol-zoom-extent",o=void 0!==n.label?n.label:"E",a=void 0!==n.tipLabel?n.tipLabel:"Fit to extent",s=document.createElement("button");s.setAttribute("type","button"),s.title=a,s.appendChild("string"==typeof o?document.createTextNode(o):o),s.addEventListener(N,r.handleClick_.bind(r),!1);var l=i+" ol-unselectable ol-control",u=r.element;return u.className=l,u.appendChild(s),r}return bO(e,t),e.prototype.handleClick_=function(t){t.preventDefault(),this.handleZoomToExtent()},e.prototype.handleZoomToExtent=function(){var t=this.getMap().getView(),e=this.extent?this.extent:t.getProjection().getExtent();t.fitInternal(gi(e))},e}(As),wO={};wO.AssertionError=l||{},wO.Collection=ht||{},wO.Collection.CollectionEvent=ct||{},wO.Disposable=p||{},wO.Feature=gt||{},wO.Feature.createStyleFunction=dt||{},wO.Geolocation=Ii||{},wO.Image=Ki||{},wO.Image.listenImage=Zi||{},wO.ImageBase=Mi||{},wO.ImageCanvas=$i||{},wO.ImageTile=vo||{},wO.Kinetic=_o||{},wO.Map=Wl||{},wO.MapBrowserEvent=Da||{},wO.MapBrowserEventHandler=Wa||{},wO.MapEvent=ja||{},wO.Object=ot||{},wO.Object.ObjectEvent=et||{},wO.Object.getChangeEventType=it||{},wO.Observable=Q||{},wO.Observable.unByKey=J||{},wO.Overlay=su||{},wO.PluggableMap=Ms||{},wO.Tile=lo||{},wO.TileCache=yu||{},wO.TileQueue=es||{},wO.TileQueue.getTilePriority=rs||{},wO.TileRange=_u||{},wO.TileRange.createOrUpdate=vu||{},wO.VectorRenderTile=wu||{},wO.VectorTile=Eu||{},wO.View=Cs||{},wO.View.createCenterConstraint=xs||{},wO.View.createResolutionConstraint=ws||{},wO.View.createRotationConstraint=Ss||{},wO.View.isNoopAnimation=Es||{},wO.array={},wO.array.binarySearch=f||{},wO.array.equals=b||{},wO.array.extend=v||{},wO.array.find=_||{},wO.array.findIndex=x||{},wO.array.includes=g||{},wO.array.isSorted=w||{},wO.array.linearFindNearest=y||{},wO.array.numberSafeCompareFunction=d||{},wO.array.remove=function(t,e){var r=t.indexOf(e),n=r>-1;return n&&t.splice(r,1),n}||{},wO.array.reverseSubArray=m||{},wO.array.stableSort=function(t,e){var r,n=t.length,i=Array(t.length);for(r=0;r3&&!!zn(t,e,r,n)}||{},wO.geom.flat.transform={},wO.geom.flat.transform.rotate=un||{},wO.geom.flat.transform.scale=cn||{},wO.geom.flat.transform.transform2D=ln||{},wO.geom.flat.transform.translate=hn||{},wO.has={},wO.has.DEVICE_PIXEL_RATIO=Vi||{},wO.has.FIREFOX=Gi||{},wO.has.IMAGE_DECODE=Wi||{},wO.has.MAC=Bi||{},wO.has.PASSIVE_EVENT_LISTENERS=qi||{},wO.has.SAFARI=zi||{},wO.has.WEBKIT=Ui||{},wO.has.WORKER_OFFSCREEN_CANVAS=Yi||{},wO.interaction={},wO.interaction.DoubleClickZoom=Zs||{},wO.interaction.DragAndDrop=Ev||{},wO.interaction.DragAndDrop.DragAndDropEvent=Sv||{},wO.interaction.DragBox=El||{},wO.interaction.DragBox.DragBoxEvent=Sl||{},wO.interaction.DragPan=fl||{},wO.interaction.DragRotate=gl||{},wO.interaction.DragRotateAndZoom=Cv||{},wO.interaction.DragZoom=Cl||{},wO.interaction.Draw=Gv||{},wO.interaction.Draw.DrawEvent=Dv||{},wO.interaction.Draw.createBox=function(){return function(t,e,r){var n=Kt([t[0],t[t.length-1]].map((function(t){return rn(t,r)}))),i=[[_e(n),be(n),Oe(n),Ce(n),_e(n)]],o=e;o?o.setCoordinates(i):o=new fi(i);var a=tn();return a&&o.transform(r,a),o}}||{},wO.interaction.Draw.createRegularPolygon=function(t,e){return function(r,n,i){var o=rn(r[0],i),a=rn(r[r.length-1],i),s=Math.sqrt(Rr(o,a)),l=n||yi(new Rv(o),t),u=e;if(!e&&0!==e){var c=a[0]-o[0],h=a[1]-o[1];u=Math.atan2(h,c)}mi(l,o,s,u);var p=tn();return p&&l.transform(i,p),l}}||{},wO.interaction.Extent=qv||{},wO.interaction.Extent.ExtentEvent=Bv||{},wO.interaction.Interaction=qs||{},wO.interaction.Interaction.pan=Ys||{},wO.interaction.Interaction.zoomByDelta=Ws||{},wO.interaction.KeyboardPan=Ml||{},wO.interaction.KeyboardZoom=Al||{},wO.interaction.Modify=r_||{},wO.interaction.Modify.ModifyEvent=Jv||{},wO.interaction.MouseWheelZoom=Dl||{},wO.interaction.PinchRotate=zl||{},wO.interaction.PinchZoom=Bl||{},wO.interaction.Pointer=$s||{},wO.interaction.Pointer.centroid=Hs||{},wO.interaction.Select=s_||{},wO.interaction.Select.SelectEvent=o_||{},wO.interaction.Snap=h_||{},wO.interaction.Translate=m_||{},wO.interaction.Translate.TranslateEvent=y_||{},wO.interaction.defaults=Vl||{},wO.layer={},wO.layer.Base=Wo||{},wO.layer.BaseImage=ad||{},wO.layer.BaseTile=vd||{},wO.layer.BaseVector=wg||{},wO.layer.Graticule=Ny||{},wO.layer.Group=Aa||{},wO.layer.Heatmap=Vy||{},wO.layer.Image=dd||{},wO.layer.Layer=na||{},wO.layer.Layer.inView=ra||{},wO.layer.MapboxVector=yv||{},wO.layer.MapboxVector.getMapboxPath=uv||{},wO.layer.MapboxVector.normalizeGlyphsUrl=hv||{},wO.layer.MapboxVector.normalizeSourceUrl=fv||{},wO.layer.MapboxVector.normalizeSpriteUrl=cv||{},wO.layer.MapboxVector.normalizeStyleUrl=pv||{},wO.layer.Tile=Sd||{},wO.layer.Vector=Iy||{},wO.layer.VectorImage=vv||{},wO.layer.VectorTile=lm||{},wO.layer.WebGLPoints=bv||{},wO.loadingstrategy={},wO.loadingstrategy.all=Fu||{},wO.loadingstrategy.bbox=function(t,e){return[t]}||{},wO.loadingstrategy.tile=function(t){return function(e,r){var n=t.getZForResolution(r),i=t.getTileRangeForExtentAndZ(e,n),o=[],a=[n,0,0];for(a[1]=i.minX;a[1]<=i.maxX;++a[1])for(a[2]=i.minY;a[2]<=i.maxY;++a[2])o.push(t.getTileCoordExtent(a));return o}}||{},wO.math={},wO.math.clamp=Ne||{},wO.math.cosh=De||{},wO.math.lerp=qe||{},wO.math.log2=Ge||{},wO.math.modulo=We||{},wO.math.solveLinearSystem=Be||{},wO.math.squaredDistance=Ue||{},wO.math.squaredSegmentDistance=ze||{},wO.math.toDegrees=Ve||{},wO.math.toRadians=Ye||{},wO.net={},wO.net.jsonp=Au||{},wO.obj={},wO.obj.assign=O||{},wO.obj.clear=P||{},wO.obj.getValues=R||{},wO.obj.isEmpty=I||{},wO.proj={},wO.proj.Projection=je||{},wO.proj.Units=St||{},wO.proj.Units.METERS_PER_UNIT=wt||{},wO.proj.addCommon=sn||{},wO.proj.addCoordinateTransforms=Wr||{},wO.proj.addEquivalentProjections=Ur||{},wO.proj.addEquivalentTransforms=Br||{},wO.proj.addProjection=Nr||{},wO.proj.addProjections=Dr||{},wO.proj.clearAllProjections=function(){lr(),pr()}||{},wO.proj.clearUserProjection=function(){Jr=null}||{},wO.proj.cloneTransform=kr||{},wO.proj.createProjection=Vr||{},wO.proj.createSafeCoordinateTransform=an||{},wO.proj.createTransformFromCoordinateTransform=Yr||{},wO.proj.epsg3857={},wO.proj.epsg3857.EXTENT=Ke||{},wO.proj.epsg3857.HALF_SIZE=Ze||{},wO.proj.epsg3857.MAX_SAFE_Y=$e||{},wO.proj.epsg3857.PROJECTIONS=Qe||{},wO.proj.epsg3857.RADIUS=6378137,wO.proj.epsg3857.WORLD_EXTENT=He||{},wO.proj.epsg3857.fromEPSG4326=tr||{},wO.proj.epsg3857.toEPSG4326=er||{},wO.proj.epsg4326={},wO.proj.epsg4326.EXTENT=nr||{},wO.proj.epsg4326.METERS_PER_UNIT=ir||{},wO.proj.epsg4326.PROJECTIONS=ar||{},wO.proj.epsg4326.RADIUS=6378137,wO.proj.equivalent=Xr||{},wO.proj.fromLonLat=qr||{},wO.proj.fromUserCoordinate=rn||{},wO.proj.fromUserExtent=on||{},wO.proj.get=Gr||{},wO.proj.getPointResolution=zr||{},wO.proj.getTransform=Kr||{},wO.proj.getTransformFromProjections=Zr||{},wO.proj.getUserProjection=tn||{},wO.proj.identityTransform=jr||{},wO.proj.proj4={},wO.proj.proj4.register=function(t){var e,r,n=Object.keys(t.defs),i=n.length;for(e=0;e180)&&(r[0]=We(n+180,360)-180),r}||{},wO.proj.toUserCoordinate=en||{},wO.proj.toUserExtent=nn||{},wO.proj.transform=Hr||{},wO.proj.transformExtent=$r||{},wO.proj.transformWithProjections=function(t,e,r){return Zr(e,r)(t)}||{},wO.proj.transforms={},wO.proj.transforms.add=fr||{},wO.proj.transforms.clear=pr||{},wO.proj.transforms.get=dr||{},wO.proj.transforms.remove=function(t,e){var r=t.getCode(),n=e.getCode(),i=hr[r][n];return delete hr[r][n],I(hr[r])&&delete hr[r],i}||{},wO.proj.useGeographic=function(){Qr("EPSG:4326")}||{},wO.render={},wO.render.Box=ml||{},wO.render.Event=la||{},wO.render.Feature=Cy||{},wO.render.VectorContext=ku||{},wO.render.canvas={},wO.render.canvas.Builder=Mg||{},wO.render.canvas.BuilderGroup=Yg||{},wO.render.canvas.Executor=ey||{},wO.render.canvas.ExecutorGroup=ay||{},wO.render.canvas.ExecutorGroup.getPixelIndexArray=oy||{},wO.render.canvas.ImageBuilder=Ag||{},wO.render.canvas.Immediate=Nu||{},wO.render.canvas.Instruction=Ig||{},wO.render.canvas.Instruction.beginPathInstruction=Pg||{},wO.render.canvas.Instruction.closePathInstruction=Rg||{},wO.render.canvas.Instruction.fillInstruction=Cg||{},wO.render.canvas.Instruction.strokeInstruction=Og||{},wO.render.canvas.LineStringBuilder=jg||{},wO.render.canvas.PolygonBuilder=Dg||{},wO.render.canvas.TextBuilder=Bg||{},wO.render.canvas.checkedFonts=da||{},wO.render.canvas.createTransformString=Ra||{},wO.render.canvas.defaultFillStyle="#000",wO.render.canvas.defaultFont="10px sans-serif",wO.render.canvas.defaultLineCap="round",wO.render.canvas.defaultLineDash=pa||{},wO.render.canvas.defaultLineDashOffset={},wO.render.canvas.defaultLineJoin="round",wO.render.canvas.defaultLineWidth=1,wO.render.canvas.defaultMiterLimit=10,wO.render.canvas.defaultPadding=fa||{},wO.render.canvas.defaultStrokeStyle="#000",wO.render.canvas.defaultTextAlign="center",wO.render.canvas.defaultTextBaseline="middle",wO.render.canvas.drawImageOrLabel=Oa||{},wO.render.canvas.hitdetect={},wO.render.canvas.hitdetect.createHitDetectionImageData=sy||{},wO.render.canvas.hitdetect.hitDetect=ly||{},wO.render.canvas.labelCache=ga||{},wO.render.canvas.measureAndCacheTextWidth=Ea||{},wO.render.canvas.measureTextHeight=xa||{},wO.render.canvas.measureTextWidth=Sa||{},wO.render.canvas.measureTextWidths=Ta||{},wO.render.canvas.registerFont=ba||{},wO.render.canvas.rotateAtOffset=Ca||{},wO.render.canvas.textHeights=_a||{},wO.render.getRenderPixel=function(t,e){var r=e.slice(0);return It(t.inversePixelTransform.slice(),r),r}||{},wO.render.getVectorContext=Ku||{},wO.render.toContext=function(t,e){var r=t.canvas,n=e||{},i=n.pixelRatio||Vi,o=n.size;o&&(r.width=o[0]*i,r.height=o[1]*i,r.style.width=o[0]+"px",r.style.height=o[1]+"px");var a=[0,0,r.width,r.height],s=Mt([1,0,0,1,0,0],i,i);return new Nu(t,i,a,s,0)}||{},wO.renderer={},wO.renderer.Composite=La||{},wO.renderer.Layer=ld||{},wO.renderer.Map=aa||{},wO.renderer.canvas={},wO.renderer.canvas.ImageLayer=pd||{},wO.renderer.canvas.Layer=cd||{},wO.renderer.canvas.TileLayer=xd||{},wO.renderer.canvas.VectorImageLayer=py||{},wO.renderer.canvas.VectorLayer=cy||{},wO.renderer.canvas.VectorTileLayer=_y||{},wO.renderer.vector={},wO.renderer.vector.defaultOrder=Wu||{},wO.renderer.vector.getSquaredTolerance=qu||{},wO.renderer.vector.getTolerance=Xu||{},wO.renderer.vector.renderFeature=Zu||{},wO.renderer.webgl={},wO.renderer.webgl.Layer=_g||{},wO.renderer.webgl.Layer.colorDecodeId=vg||{},wO.renderer.webgl.Layer.colorEncodeId=mg||{},wO.renderer.webgl.Layer.getBlankImageData=function(){var t=document.createElement("canvas").getContext("2d").createImageData(1,1);return t.data[0]=255,t.data[1]=255,t.data[2]=255,t.data[3]=255,t}||{},wO.renderer.webgl.Layer.writePointFeatureToBuffers=function(t,e,r,n,i,o){var a=3+i,s=t[e+0],l=t[e+1],u=dg;u.length=i;for(var c=0;c1?x(r.TileMatrixSetLink,"projection"in e?function(t,r,n){var o=_(i,(function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,a=Gr(o),s=Gr(e.projection);return a&&s?Xr(a,s):o==e.projection}:function(t,r,n){return t.TileMatrixSet==e.matrixSet}):0)<0&&(n=0);var o=r.TileMatrixSetLink[n].TileMatrixSet,a=r.TileMatrixSetLink[n].TileMatrixSetLimits,s=r.Format[0];"format"in e&&(s=e.format),(n=x(r.Style,(function(t,r,n){return"style"in e?t.Title==e.style:t.isDefault})))<0&&(n=0);var l=r.Style[n].Identifier,u={};"Dimension"in r&&r.Dimension.forEach((function(t,e,r){var n=t.Identifier,i=t.Default;void 0===i&&(i=t.Value[0]),u[n]=i}));var c,h=_(t.Contents.TileMatrixSet,(function(t,e,r){return t.Identifier==o})),p=h.SupportedCRS;if(p&&(c=Gr(p)),"projection"in e){var f=Gr(e.projection);f&&(c&&!Xr(f,c)||(c=f))}var d="ne"==c.getAxisOrientation().substr(0,2),y=h.TileMatrix[0],m={MinTileCol:0,MinTileRow:0,MaxTileCol:y.MatrixWidth-1,MaxTileRow:y.MatrixHeight-1};if(a){m=a[a.length-1];var v=_(h.TileMatrix,(function(t){return t.Identifier===m.TileMatrix||h.Identifier+":"+t.Identifier===m.TileMatrix}));v&&(y=v)}var b=28e-5*y.ScaleDenominator/c.getMetersPerUnit(),w=d?[y.TopLeftCorner[1],y.TopLeftCorner[0]]:y.TopLeftCorner,S=y.TileWidth*b,E=y.TileHeight*b,T=[w[0]+S*m.MinTileCol,w[1]-E*(1+m.MaxTileRow),w[0]+S*(1+m.MaxTileCol),w[1]-E*m.MinTileRow];null===c.getExtent()&&c.setExtent(T);var C=Kh(h,T,a),O=[],P=e.requestEncoding;if(P=void 0!==P?P:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var R=t.OperationsMetadata.GetTile.DCP.HTTP.Get,I=0,L=R.length;I Date: Mon, 14 Jun 2021 09:57:46 +0200 Subject: [PATCH 24/46] disable zoom control on Map div --- src/css/main.css | 12 +- src/js/viewer/ViewerImageAPI.js | 4 +- src/js/viewer/ViewerMapAPI.js | 276 +++----------------------------- 3 files changed, 28 insertions(+), 264 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 5205bdf..13c41ec 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -25,11 +25,7 @@ body { #map{ position: fixed; bottom: 1%; -<<<<<<< Updated upstream - right: 2%; -======= right: 3%; ->>>>>>> Stashed changes width: 20%; height:20%; color: #fff; @@ -41,13 +37,9 @@ body { .control-OL{ position: fixed; - bottom:2%; - right: 2%; + bottom:21%; + right: 3%; color: #fff; -<<<<<<< Updated upstream -} -======= } ->>>>>>> Stashed changes diff --git a/src/js/viewer/ViewerImageAPI.js b/src/js/viewer/ViewerImageAPI.js index b04913c..130ef9b 100644 --- a/src/js/viewer/ViewerImageAPI.js +++ b/src/js/viewer/ViewerImageAPI.js @@ -22,9 +22,9 @@ export class ViewerImageAPI { // Get all panorama images. // Parameters: Function called with all images ([ViewerImage]): Array of panorama images callback(this.images); -} + } - changed() { + changed() { // Signal changed image data (e.g. hidden flag) to the viewer. } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index bb661b5..976b2b9 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -23,7 +23,10 @@ export class ViewerMapAPI { 1, // frustum near plane 10); // frustum far plane this.camera.position.z = 2; // need to be in [near + 1, far + 1] to be displayed + + this.spriteGroup = new THREE.Group(); //create an sprite group this.mapScalingFactor = 0.2; + this.baseURL = viewerAPI.baseURL; // create Map and Layers @@ -36,8 +39,6 @@ export class ViewerMapAPI { this.lastVectorLayer; this.lastFloorID = 0; this.viewerAPI = viewerAPI; -<<<<<<< Updated upstream -======= // direction this.lastvectorLayerdes = []; @@ -48,7 +49,6 @@ export class ViewerMapAPI { ->>>>>>> Stashed changes } // Method: Add an event layer to the map (2D) view. @@ -62,120 +62,11 @@ export class ViewerMapAPI { this.map.removeLayer(layer); } -<<<<<<< Updated upstream - // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. - redraw() { - - var features = []; - // for avoid duplicating - if (this.viewerFloorAPI.currentFloorId != this.lastFloorID){ - - // // remove prvious vector layers - this.map.removeLayer(this.lastVectorLayerRed); - this.map.removeLayer(this.lastVectorLayer); - - - // show layer map - - // remove comment to draw all points on map - let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - let floorIndex = this.viewerFloorAPI.currentFloorId; - - - allImages.forEach(image => { - // add all black points to feature layer - // transform xy to lon lan - //TODO: adjust the position better. This is a temporary scaling and offset - - console.log("Position in WGS84: ", image.pos) - var lon = (image.mapOffset[0]+this.viewerFloorAPI.floors[floorIndex].mapData.x); - var lan = (image.mapOffset[1]- this.viewerFloorAPI.floors[floorIndex].mapData.y); // this.viewerAPI.floor.origin[1] - image.mapOffset[1]; - //console.log(" Coordinates", [ this.viewerFloorAPI.floors[floorIndex].mapData.x, lon ]); - features.push(new ol.Feature({ - geometry: new ol.geom.Point([lon, lan]), - }) - ) - - }); - - // create the layer for features -> black points - var vectorSource = new ol.source.Vector({ - features: features - }); - - var vectorLayer = new ol.layer.Vector({ - source: vectorSource, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({color: 'black'}) - }) - }) - }); - - this.map.addLayer(vectorLayer); - - //adding red points - - // var redlon = this.viewerAPI.floor.origin[0] - (-this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[0])*3; - // var redlan = this.viewerAPI.floor.origin[1] - (this.mapScalingFactor * this.viewerImageAPI.currentImage.mapOffset[1])*2; - - var redlon = this.viewerImageAPI.currentImage.mapOffset[0]; - var redlan = this.viewerImageAPI.currentImage.mapOffset[1]; - - var redFeature = new ol.Feature({ - geometry: new ol.geom.Point([redlon, redlan]), - }); - - var vectorSourceRed = new ol.source.Vector({ - features: [redFeature] - }); - - var vectorLayerRed = new ol.layer.Vector({ - source: vectorSourceRed, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({color: 'red'}) - }) - }) - }); - - this.map.addLayer(vectorLayerRed); - let rotationLonov = 0; // TODO: Change to get LONOV in radians - var orientationRedStyle = new ol.style.Style({ - image: new ol.style.RegularShape({ - fill: new ol.style.Fill({color: 'red'}), //new Fill({ color: 'rgba(255, 0, 0, 0.2)' }), - stroke: new ol.style.Stroke({color: 'black', width: 2}), - points: 3, - radius: 10, - rotation: rotationLonov, - angle: 0 - }) - }), - - - //vectorLayerRed.setStyle(style); - // Example to - //orientationRedStyle.setRotation(Math.PI / 180 * heading); - - // save last vector layers for deleting - this.lastFloorID = this.viewerFloorAPI.currentFloorId; - this.lastVectorLayer = vectorLayer; - this.lastVectorLayerRed = vectorLayerRed; - } - } - -======= ->>>>>>> Stashed changes // Method scale() { //Get the scale used by the three.js scene overlayed over the map (2D) view. return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } -<<<<<<< Updated upstream - -======= initDisplayMap() { @@ -208,120 +99,12 @@ export class ViewerMapAPI { // className: 'custom-mouse-position-testmap', // target: document.getElementById('mouse-position-testmap') // }) - ]) + ]), + interactions: ol.interaction.defaults({mouseWheelZoom:false}), }); + //Disable Zoom Control - /* - // testing map origin and center in lon, lan - // -> can not push to list - for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ ->>>>>>> Stashed changes - - // calculate map origin in lon,lan - var current_MapData = this.viewerFloorAPI.floors[i].mapData; - console.log("cuttent_MapData:"+current_MapData); - var mapdata_X_in_meter = (current_MapData.x / current_MapData.density); - console.log("current_MapData.X:"+current_MapData.x); - console.log("current_MapData.density:"+current_MapData.density); - console.log("mapdata_X_in_meter:"+mapdata_X_in_meter); - var mapdata_X_in_lon = mapdata_X_in_meter/87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m - console.log("mapdata_X_in_lon:"+mapdata_X_in_lon); - var mapdata_origin_lon = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon; - console.log("this.viewerFloorAPI.origin[0]:"+this.viewerFloorAPI.origin[0]); - console.log("mapdata_X_in_lon:"+mapdata_X_in_lon); - console.log("mapdata_origin_lon:"+mapdata_origin_lon); - - var mapdata_Y_in_meter = (current_MapData.y / current_MapData.density); - console.log("current_MapData.Y:"+current_MapData.y); - console.log("current_MapData.density:"+current_MapData.density); - console.log("mapdata_Y_in_meter:"+mapdata_Y_in_meter); - var mapdata_Y_in_lan = mapdata_Y_in_meter/111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m - console.log(" mapdata_Y_in_lan:"+ mapdata_Y_in_lan); - var mapdata_origin_lan = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan; - console.log("this.viewerFloorAPI.origin[1]:"+this.viewerFloorAPI.origin[1]); - console.log("mapdata_Y_in_lan:"+ mapdata_Y_in_lan); - console.log("mapdata_origin_lan:"+mapdata_origin_lan); - - // calculate map center in lon,lan - var mapdata_center_lon = mapdata_origin_lon + (1/2)*(current_MapData.width/current_MapData.density); - var mapdata_center_lan = mapdata_origin_lan + (1/2)*(current_MapData.height/current_MapData.density); - console.log("mapdata_origin_lon:"+mapdata_origin_lon); - console.log("current_MapData.width:"+current_MapData.width); - console.log("current_MapData.density:"+current_MapData.density); - console.log("mapdata_origin_lan:"+mapdata_origin_lan); - console.log("current_MapData.height:"+current_MapData.height); - console.log("current_MapData.density:"+current_MapData.density); - console.log("mapdata_center_lon:" + mapdata_center_lon); - console.log("mapdata_center_lan"+mapdata_center_lan); - - console.log("type of mapdata_origin_lon:"+(typeof mapdata_origin_lon)); - console.log("type of mapdata_origin_lan:"+(typeof mapdata_origin_lan)); - console.log("type of mapdata_center_lon:"+ typeof(mapdata_center_lon)); - console.log("type of mapdata_center_lan:"+ typeof(mapdata_center_lan)); - - this.mapdataOriginLon.push(mapdata_origin_lon.toFixed(14)); - this.mapdataOriginLan.push(mapdata_origin_lan.toFixed(14)); - this.mapdataCenterLon.push(mapdata_center_lon.toFixed(14)); - this.mapdataCenterLan.push(mapdata_center_lan.toFixed(14)); - } - */ - -<<<<<<< Updated upstream - let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; - var extent = [0, 0, currentMapData.width, currentMapData.height]; - - // Projection map image coordinates directly to map coordinates in pixels. - var projection = new ol.proj.Projection({ - code: 'image', - units: 'pixels', - extent: extent, - }); - - // [X, Y] coordinate corresponding to "lon0" in floor map image (in pixels) - let centerMap = [currentMapData.x, currentMapData.y]; - // create map - this.map = new ol.Map({ //new ol.control.OverviewMap({ - target: 'map', - view: new ol.View({ - projection: projection, - center: new ol.extent.getCenter(extent), - zoom: 1, - maxZoom: 4, - }), - // controls: controls, - controls: ol.control.defaults({ - rotate: false // hide rotation button - }).extend([ - new ol.control.FullScreen() // create fullScreen button - ]) - }); - - // create image layers for each floors - for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ - let mapData = this.viewerFloorAPI.floors[i].mapData; - let e = [0, 0, mapData.width, mapData.height]; - let projImage = new ol.proj.Projection({ - code: 'image', - units: 'pixels', - extent: e, - }); - this.map.addLayer(new ol.layer.Image({ - source: new ol.source.ImageStatic({ - //attributions: '© OpenLayers', - url: this.baseURL + mapData.name + ".png", - projection: projImage, - /* - projection: new ol.proj.Projection({ - code: 'image', - units: 'pixels', - extent: e, - }), - */ - imageExtent:e, - }) - - })) -======= + // COMPUTE MAPMEATADATA // converting map pixel to lon, lan // calculate map origin in lon,lan var current_MapData0 = this.viewerFloorAPI.floors[0].mapData; @@ -378,7 +161,6 @@ export class ViewerMapAPI { currentMapdata.y = currentMapdata.y - 70; currentMapdata.density = currentMapdata.density; } - var features = []; allImages.forEach(image => { @@ -414,7 +196,6 @@ export class ViewerMapAPI { }) }) })); ->>>>>>> Stashed changes } } @@ -431,11 +212,7 @@ export class ViewerMapAPI { else { layer.setVisible(false); } -<<<<<<< Updated upstream - }); -======= }); ->>>>>>> Stashed changes } // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. @@ -444,7 +221,7 @@ export class ViewerMapAPI { if (this.init != true) { // // remove prvious vector layers - this.map.removeLayer(this.lastVectorLayerRed); + //this.map.removeLayer(this.lastVectorLayerRed); this.map.removeLayer(this.lastVectorLayer); } @@ -453,12 +230,6 @@ export class ViewerMapAPI { var floorIndex = this.viewerFloorAPI.currentFloorId; var currentMapdata = this.viewerFloorAPI.currentFloor.mapData; - console.log("--------For Red point-------------"); - console.log("floorIndex: " + floorIndex); - console.log("currentMapdata.x: " + currentMapdata.x); - console.log("currentMapdata.y " + currentMapdata.y); - console.log("currentMapdata.density: " + currentMapdata.density); - console.log("-----------------------------------"); // show current floor black points var currentVectorLayer = this.vectorLayer[floorIndex] @@ -490,7 +261,7 @@ export class ViewerMapAPI { source: vectorSourceRed, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 5, + radius: 3, fill: new ol.style.Fill({ color: 'red' }) }) }) @@ -511,12 +282,12 @@ export class ViewerMapAPI { show_direction() { - // get direction in degree - var direction_lon = this.viewerViewState.lonov; + // get direction ( degree= + var lonov = this.viewerViewState.lonov; // temporary using 170 degree for correcting the starting zero degree of 2D map var correct_direction = 170; // degree - var direction = -direction_lon - correct_direction; + var direction = - lonov - correct_direction; if (this.init != true) { //this.map.removeLayer(this.lastvectorLayerdes); @@ -532,28 +303,29 @@ export class ViewerMapAPI { var desFeature = new ol.Feature({ geometry: new ol.geom.Point([redlondes, redlandes]), }); - - /* + + + /* MIDDLE point Direction var vectorSourcedes = new ol.source.Vector({ features: [desFeature] }); - + var vectorLayerdes = new ol.layer.Vector({ source: vectorSourcedes, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 3, - fill: new ol.style.Fill({ color: 'blue' }) + radius: 1, + fill: new ol.style.Fill({ color: 'orange' }) }) }) }); - - this.map.addLayer(vectorLayerdes); - */ - // draw triangle - var FOV = this.viewerViewState.fov/2; + this.map.addLayer(vectorLayerdes);*/ + // draw triangle var FOV = this.viewerViewState.fov/2; + var FOV = this.viewerViewState.fov/2; + var pointsFOV = []; + //pointsFOV.push() var left_redlondes = this.redlon + Math.cos((direction + FOV) * (Math.PI / 180)) var left_redlandes = this.redlan + Math.sin((direction + FOV) * (Math.PI / 180)) var right_redlondes = this.redlon + Math.cos((direction - FOV) * (Math.PI / 180)) @@ -587,7 +359,7 @@ export class ViewerMapAPI { source: vectorSourceLeftRight, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 1, + radius: 2, fill: new ol.style.Fill({ color: 'orange' }) }) }) From ca9024a940f9272d222b80b28ce8f335e693a3bd Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 14:30:08 +0200 Subject: [PATCH 25/46] update triangle vvisualization as poligon --- src/css/main.css | 2 +- src/js/viewer/ViewerMapAPI.js | 215 +++++++++++++++------------------- 2 files changed, 96 insertions(+), 121 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 13c41ec..efb16f4 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:21%; + bottom:2%; right: 3%; color: #fff; } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 976b2b9..9ffc70c 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -1,5 +1,6 @@ "use strict"; +import { MAX_FOV, MIN_FOV } from "./ViewerConfig.js"; // Map (2D) Viewer API // Specific API for the Map View @@ -42,7 +43,7 @@ export class ViewerMapAPI { // direction this.lastvectorLayerdes = []; - this.lastvectorLayerLeftRight = []; + this.lastLayerDirection = []; this.redraw(); this.init = false; @@ -68,47 +69,40 @@ export class ViewerMapAPI { return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } - initDisplayMap() { let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; var extent = [0, 0, currentMapData.width / currentMapData.density, currentMapData.height / currentMapData.density]; // create map - this.map = new ol.Map({ //new ol.control.OverviewMap({ + this.map = new ol.Map({ target: 'map', view: new ol.View({ projection: new ol.proj.Projection({ extent: extent }), - center: new ol.extent.getCenter(extent), + center: new ol.extent.getCenter(extent), // TODO: update center to current position zoom: 1, maxZoom: 4, }), - // controls: controls, controls: ol.control.defaults({ - rotate: false // hide rotation button + // Hide Map rotation button + rotate: false }).extend([ - new ol.control.FullScreen(), // create fullScreen button - new ol.control.ZoomSlider(), - // new ol.control.MousePosition({ - // coordinateFormat: ol.coordinate.createStringXY(4), - // projection: new ol.proj.Projection({ - // extent: extent - // }), - // className: 'custom-mouse-position-testmap', - // target: document.getElementById('mouse-position-testmap') - // }) + // create fullScreen button + new ol.control.FullScreen(), + //new ol.control.ZoomSlider(), ]), - interactions: ol.interaction.defaults({mouseWheelZoom:false}), + //Disable Zoom Control on MAP + interactions: ol.interaction.defaults({mouseWheelZoom:false}), }); - //Disable Zoom Control - // COMPUTE MAPMEATADATA - // converting map pixel to lon, lan + + // TODO CLEAN MAP MEATADATA + // calculate map origin in lon,lan var current_MapData0 = this.viewerFloorAPI.floors[0].mapData; - + // converting map pixel to lon, lan var mapdata_X_in_meter0 = (current_MapData0.x / current_MapData0.density); var mapdata_X_in_lon0 = mapdata_X_in_meter0 / 87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m var mapdata_origin_lon0 = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon0; @@ -135,6 +129,7 @@ export class ViewerMapAPI { this.mapdata_center_lon1 = mapdata_origin_lon1 + (1 / 2) * (current_MapData1.width / current_MapData1.density); this.mapdata_center_lan1 = mapdata_origin_lan1 + (1 / 2) * (current_MapData1.height / current_MapData1.density); + // create image layers for each floors for (var i = 0; i < this.viewerFloorAPI.floors.length; i++) { let mapData = this.viewerFloorAPI.floors[i].mapData @@ -142,7 +137,7 @@ export class ViewerMapAPI { source: new ol.source.ImageStatic({ //attributions: '© OpenLayers', url: this.baseURL + mapData.name + ".png", - imageExtent: extent, + imageExtent: [0, 0, mapData.width / mapData.density, mapData.height / mapData.density], }) })) } @@ -152,29 +147,14 @@ export class ViewerMapAPI { // create vector layers for each floors for (var i = 0; i < this.viewerFloorAPI.floors.length; i++) { let allImages = this.viewerFloorAPI.floors[i].viewerImages; - //console.log("allImages: " + allImages); var currentMapdata = this.viewerFloorAPI.floors[i].mapData; - //Modification of the Map data for the 4th floor - if (i === 1) { - currentMapdata.x = currentMapdata.x - 200; - currentMapdata.y = currentMapdata.y - 70; - currentMapdata.density = currentMapdata.density; - } var features = []; - + // TODO retrieve information from stored data allImages.forEach(image => { - //if its in the 4th floor,add some offset: - if (i === 1) { - var lon = 67000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - var lan = 107000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); - } - else { - // add all black points to feature layer - var lon = 87000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - var lan = 111000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); - - } + // Get Longitude and latitude from each point + var lon = 87000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + var lan = 111000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); var current_feature = new ol.Feature({ geometry: new ol.geom.Point([lon, lan]), @@ -191,7 +171,7 @@ export class ViewerMapAPI { source: vectorSource, style: new ol.style.Style({ image: new ol.style.Circle({ - radius: 2, + radius: 1, fill: new ol.style.Fill({ color: 'black' }) }) }) @@ -217,14 +197,15 @@ export class ViewerMapAPI { // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - console.log("call redraw") + if (this.init != true) { - // // remove prvious vector layers - //this.map.removeLayer(this.lastVectorLayerRed); + // remove prvious vector layers + this.map.removeLayer(this.lastVectorLayerRed); this.map.removeLayer(this.lastVectorLayer); } + // show layer map this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); @@ -234,20 +215,10 @@ export class ViewerMapAPI { // show current floor black points var currentVectorLayer = this.vectorLayer[floorIndex] this.map.addLayer(currentVectorLayer); - - if (floorIndex === 1) { - - //add some offset if it is on 4th floor: - this.redlon = 67000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - this.redlan = 107000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); - - } - else { + //adding red points, using this. for show_direction - this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); - - } + this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); var redFeature = new ol.Feature({ geometry: new ol.geom.Point([this.redlon, this.redlan]), @@ -282,93 +253,97 @@ export class ViewerMapAPI { show_direction() { - // get direction ( degree= + // get viewing longitude direction (in degrees) var lonov = this.viewerViewState.lonov; // temporary using 170 degree for correcting the starting zero degree of 2D map - var correct_direction = 170; // degree - var direction = - lonov - correct_direction; - + var direction = (- lonov - 170)* (Math.PI / 180); if (this.init != true) { - //this.map.removeLayer(this.lastvectorLayerdes); - this.map.removeLayer(this.lastvectorLayerLeftRight); + // // remove prvious vector layers + this.map.removeLayer(this.lastVectorLayerRed); + this.map.removeLayer(this.lastLayerDirection); } - // x coordinate of destination point : add cos(to radians) - var redlondes = this.redlon + Math.cos(direction * (Math.PI / 180)) - // y coordinate of destination point : add sin(to radians) - var redlandes = this.redlan + Math.sin(direction * (Math.PI / 180)) + + // remove previoous direction layers + this.map.removeLayer(this.lastLayerDirection); - // draw a point of current direction destination - var desFeature = new ol.Feature({ - geometry: new ol.geom.Point([redlondes, redlandes]), - }); + // get direction triangle vertex + var FOV = this.viewerViewState.fov/2 * (Math.PI / 180) + //var angle = direction + FOV; + var RADIUS = this.viewerViewState.fov / MAX_FOV *5; + console.log(RADIUS); - /* MIDDLE point Direction - var vectorSourcedes = new ol.source.Vector({ - features: [desFeature] - }); + var pointsFOV = [ [this.redlon, this.redlan], + [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point + [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point + ]; + + var triangleFeats = []; - var vectorLayerdes = new ol.layer.Vector({ - source: vectorSourcedes, - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 1, - fill: new ol.style.Fill({ color: 'orange' }) - }) + for(var i = 0; i < pointsFOV.length; i++){ + let point = new ol.geom.Point(pointsFOV[i]); + pointsFOV[i] = point; + triangleFeats.push(new ol.Feature({ geometry: point})); + } + //close the triangle + pointsFOV.push(pointsFOV[0]); + console.log("TRIANGLE POINS: ",triangleFeats); + //let linearTriangle = new ol.geom.LinearRing({coordinates : pointsFOV, layout: 'XY'} ); + //Declare a new array + + var coordinatesPolygon = new Array(); + console.log(triangleFeats[0].getGeometry().getCoordinates()); + //coordinatesPolygon.push(triangleFeats.getGeometry().getCoordinates()); + + //Cycle traversal transfers longitude and latitude to the projection coordinate system of "EPSG:4326" + for (var i = 0; i < triangleFeats.length; i++) { + var pointTransform = ol.proj.fromLonLat(triangleFeats[i].getGeometry().getCoordinates()); + //var pointTransform = pointsFOV[i].getCoordinates(); + coordinatesPolygon.push(triangleFeats[0].getGeometry().getCoordinates()); + } + + + console.log("TRIANGLE COORDS: ", coordinatesPolygon); + let styleTriangle = new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: 'red', + width: 3 + }), + fill: new ol.style.Fill({ + color: 'rgba(255, 0, 0, 0.5)' }) - }); - - this.map.addLayer(vectorLayerdes);*/ - - // draw triangle var FOV = this.viewerViewState.fov/2; - var FOV = this.viewerViewState.fov/2; - var pointsFOV = []; - //pointsFOV.push() - var left_redlondes = this.redlon + Math.cos((direction + FOV) * (Math.PI / 180)) - var left_redlandes = this.redlan + Math.sin((direction + FOV) * (Math.PI / 180)) - var right_redlondes = this.redlon + Math.cos((direction - FOV) * (Math.PI / 180)) - var right_redlandes = this.redlan + Math.sin((direction - FOV) * (Math.PI / 180)) + }); - - var triangleFeatures = new ol.Feature({ - geometry: new ol.geom.LineString([ new ol.geom.Point([this.redlon, this.redlan]), new ol.geom.Point([left_redlondes, left_redlandes]) ]), - style : new ol.style.Style({ stroke : new ol.style.Stroke({color : "red", width: 3 }) }), - }); + var triangleFeatures = new ol.Feature({ + geometry: new ol.geom.Polygon([coordinatesPolygon]), + style : styleTriangle, + }); var vectorTriangleDirection = new ol.layer.Vector({ - features: [triangleFeatures], + features: triangleFeatures, + //style: styleTriangle, }); this.map.addLayer(vectorTriangleDirection); - - var leftFeature = new ol.Feature({ - geometry: new ol.geom.Point([left_redlondes, left_redlandes]), - }); - - var rightFeature = new ol.Feature({ - geometry: new ol.geom.Point([right_redlondes, right_redlandes]), - }); + - var vectorSourceLeftRight = new ol.source.Vector({ - features: [leftFeature, rightFeature] - }); - - var vectorLayerLeftRight = new ol.layer.Vector({ - source: vectorSourceLeftRight, + // Draw Triangle Vertex + var vectorLayerTriangleVertex = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: triangleFeats}), style: new ol.style.Style({ image: new ol.style.Circle({ radius: 2, - fill: new ol.style.Fill({ color: 'orange' }) + fill: new ol.style.Fill({ color: 'red' }) }) }) }); - this.map.addLayer(vectorLayerLeftRight); - - //this.lastvectorLayerdes = vectorLayerdes; - this.lastvectorLayerLeftRight = vectorLayerLeftRight; + this.lastLayerDirection = vectorLayerTriangleVertex; + this.map.addLayer( this.lastLayerDirection); } } + From a83fdf25b5b58a167b1bb041f359fda8051be6b8 Mon Sep 17 00:00:00 2001 From: leonopulos Date: Mon, 14 Jun 2021 14:40:19 +0200 Subject: [PATCH 26/46] Update ViewerPanoAPI.js --- src/js/viewer/ViewerPanoAPI.js | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 83c9e65..7a2ce00 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -169,8 +169,8 @@ export class ViewerPanoAPI { //get the current pointer position: const xy = new EventPosition(event); - //get the viewing direction: - const location = this.camera.getWorldDirection(); + //get the position of pointer in scene: + const location = this.getCursorLocation(event); //Set up the context menu: $.contextMenu({ @@ -180,7 +180,7 @@ export class ViewerPanoAPI { } } - // returns: the depth information (in meter) of the panorama at the current curser position (event.x, event.y) + // returns: the depth information (in meter) of the panorama at the current curser position (event.clientX, event.clientY) depthAtPointer(event) { const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); @@ -188,8 +188,7 @@ export class ViewerPanoAPI { const localPos = lonLatToLocal(adjustedLonov, adjustedLatov); const adjustedQuaternion = localPos.applyQuaternion(this.viewerImageAPI.currentImage.orientation); const [realLonov, realLatov] = localToLonLat(adjustedQuaternion); - console.log("lonov",adjustedLonov, realLonov); - console.log("latov",adjustedLatov, realLatov); + // pixel offsets in depth map at current curser position const pixelX = Math.trunc((realLonov / 360) * this.depthCanvas.width); const pixelY = Math.trunc((realLatov + 90) / 180 * this.depthCanvas.height); @@ -233,8 +232,8 @@ export class ViewerPanoAPI { // horizontal (lonov) : image left -> 0, image right -> 360 // vertical (latov) : image top -> 85, image bottom -> -85 - const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen - const verticalOffset = (halfHeight - event.y) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen + const horizontalOffset = (event.clientX - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen + const verticalOffset = (halfHeight - event.clientY) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov / 2)) + 360) % 360; const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov + (verticalOffset * this.viewerViewState.fov / 2))); From 04498bbd18bee3a993f39eb2dad240a9b585f4c2 Mon Sep 17 00:00:00 2001 From: leonopulos Date: Mon, 14 Jun 2021 14:46:34 +0200 Subject: [PATCH 27/46] Update ViewerPanoAPI.js --- src/js/viewer/ViewerPanoAPI.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 7a2ce00..378280b 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -196,8 +196,14 @@ export class ViewerPanoAPI { const offsetX = (pixelX >= 2) ? pixelX - 2 : 0; const offsetY = (pixelY >= 2) ? pixelY - 2 : 0; - // convert pixel value to depth information (use 5x5 pixels around cursor) - const imgData = this.depthCanvas.getContext("2d").getImageData(offsetX, offsetY, 5, 5); + // convert pixel value to depth information + const use5pixelAvg = false; + let imgData; + if (use5pixelAvg) { + imgData = this.depthCanvas.getContext("2d").getImageData(offsetX, offsetY, 5, 5); + } else { + imgData = this.depthCanvas.getContext("2d").getImageData(pixelX, pixelY, 1, 1); + } const [red, green, blue, alpha] = averagePixelValues(imgData.data); // LSB red -> green -> blue MSB (ignore alpha) @@ -260,7 +266,7 @@ export class ViewerPanoAPI { } // takes in a location (in lot/lat), a direction (as a *angle*[rad, in birds eye view), and a distance (in meters) to move in the direction -function newLocationFromPointAngle(lon1, lat1, angle, distance) { +const newLocationFromPointAngle = (lon1, lat1, angle, distance) => { // angle: +-0 -> west, +pi/2 -> south, +-pi -> east, -pi/2 -> north let lon2, lat2; @@ -273,7 +279,7 @@ function newLocationFromPointAngle(lon1, lat1, angle, distance) { return [lon2, lat2]; } -function averagePixelValues(data) { +const averagePixelValues = (data) => { const pixels = data.length / 4; let [red, green, blue, alpha] = [0, 0, 0, 0]; // sum of all pixel values @@ -294,7 +300,7 @@ function averagePixelValues(data) { } // returns a normalized Vector3 pointing in the direction specified by lonov latov -function lonLatToLocal(lonov, latov) { +const lonLatToLocal = (lonov, latov) => { const phi = THREE.MathUtils.degToRad(90 - latov); const theta = THREE.MathUtils.degToRad(lonov); @@ -306,7 +312,7 @@ function lonLatToLocal(lonov, latov) { } // inverse operation to above -function localToLonLat(vec) { +const localToLonLat = (vec) => { const phi = Math.acos(vec.y); const theta = Math.atan2(vec.z, vec.x); From 7bf720e57489d33c66d4a72aab673818e3ad4299 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 17:08:01 +0200 Subject: [PATCH 28/46] Display Position triangle --- src/css/main.css | 2 +- src/js/viewer/ViewerMapAPI.js | 81 ++++++++++++++++++++--------------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index efb16f4..89bf7b8 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:2%; + bottom:20%; right: 3%; color: #fff; } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 9ffc70c..e026552 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -260,8 +260,9 @@ export class ViewerMapAPI { var direction = (- lonov - 170)* (Math.PI / 180); if (this.init != true) { // // remove prvious vector layers - this.map.removeLayer(this.lastVectorLayerRed); - this.map.removeLayer(this.lastLayerDirection); + this.removeLayer(this.lastVectorLayerRed); + this.removeLayer(this.lastLayerDirection); + this.removeLayer(this.viewingDirevyionLayer); } @@ -273,7 +274,7 @@ export class ViewerMapAPI { //var angle = direction + FOV; var RADIUS = this.viewerViewState.fov / MAX_FOV *5; - console.log(RADIUS); + var pointsFOV = [ [this.redlon, this.redlan], [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point @@ -284,49 +285,60 @@ export class ViewerMapAPI { for(var i = 0; i < pointsFOV.length; i++){ let point = new ol.geom.Point(pointsFOV[i]); - pointsFOV[i] = point; triangleFeats.push(new ol.Feature({ geometry: point})); } + //close the triangle - pointsFOV.push(pointsFOV[0]); - console.log("TRIANGLE POINS: ",triangleFeats); - //let linearTriangle = new ol.geom.LinearRing({coordinates : pointsFOV, layout: 'XY'} ); - //Declare a new array - - var coordinatesPolygon = new Array(); - console.log(triangleFeats[0].getGeometry().getCoordinates()); - //coordinatesPolygon.push(triangleFeats.getGeometry().getCoordinates()); - - //Cycle traversal transfers longitude and latitude to the projection coordinate system of "EPSG:4326" - for (var i = 0; i < triangleFeats.length; i++) { - var pointTransform = ol.proj.fromLonLat(triangleFeats[i].getGeometry().getCoordinates()); - //var pointTransform = pointsFOV[i].getCoordinates(); - coordinatesPolygon.push(triangleFeats[0].getGeometry().getCoordinates()); - } - - - console.log("TRIANGLE COORDS: ", coordinatesPolygon); + //pointsFOV.push(pointsFOV[0]); + + let coordinates = [[this.redlon, this.redlan], + [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point + [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point + ]; + let styleTriangle = new ol.style.Style({ stroke: new ol.style.Stroke({ - color: 'red', - width: 3 + color: 'rgba(255, 0, 0, 0.4)', + width: 2 }), fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 0.5)' + color: 'rgba(255, 0, 0, 0.2)' }) }); - var triangleFeatures = new ol.Feature({ - geometry: new ol.geom.Polygon([coordinatesPolygon]), - style : styleTriangle, - }); - - var vectorTriangleDirection = new ol.layer.Vector({ - features: triangleFeatures, - //style: styleTriangle, + var polygonDirectionFeature = new ol.Feature({ + geometry: new ol.geom.Polygon([pointsFOV])//.transform('EPSG:4326','EPSG:4326'), + } ); + + + + // Draw Triangle Vertex + var vectorLayerTriangleVertex = new ol.layer.Vector({ + source: new ol.source.Vector({ features: [polygonDirectionFeature], + projection: this.map.getView().projection}), + style: styleTriangle, + }); + this.viewingDirevyionLayer = vectorLayerTriangleVertex; + this.map.addLayer(vectorLayerTriangleVertex); + /* Draw Triangle Vertex + vectorTriangleDirection = new ol.layer.Vector({ + source: new ol.source.Vector({ features: + new ol.Feature({ geometry: new ol.geom.Point(pointsFOV[0])}) }), + style: new ol.style.Style({ + image: new ol.style.RegularShape({ + fill: fill, + stroke: stroke, + points: 3, + radius: 10, + rotation:direction, + angle: FOV, + }) + }) + }); + */ + - this.map.addLayer(vectorTriangleDirection); // Draw Triangle Vertex @@ -341,6 +353,7 @@ export class ViewerMapAPI { }) }); + this.lastLayerDirection = vectorLayerTriangleVertex; this.map.addLayer( this.lastLayerDirection); } From f14cfbaad095e2f67d93cdde135b2eecdfb10799 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 17:15:13 +0200 Subject: [PATCH 29/46] Display Position triangle --- src/js/viewer/ViewerMapAPI.js | 37 +++++------------------------------ 1 file changed, 5 insertions(+), 32 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index e026552..0e191a8 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -275,7 +275,6 @@ export class ViewerMapAPI { var RADIUS = this.viewerViewState.fov / MAX_FOV *5; - var pointsFOV = [ [this.redlon, this.redlan], [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point @@ -291,11 +290,6 @@ export class ViewerMapAPI { //close the triangle //pointsFOV.push(pointsFOV[0]); - let coordinates = [[this.redlon, this.redlan], - [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point - [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point - ]; - let styleTriangle = new ol.style.Style({ stroke: new ol.style.Stroke({ color: 'rgba(255, 0, 0, 0.4)', @@ -311,36 +305,16 @@ export class ViewerMapAPI { } ); - - // Draw Triangle Vertex - var vectorLayerTriangleVertex = new ol.layer.Vector({ + // Draw Triangle Polygon + var vectorLayerTrianglePolygon = new ol.layer.Vector({ source: new ol.source.Vector({ features: [polygonDirectionFeature], projection: this.map.getView().projection}), style: styleTriangle, }); - this.viewingDirevyionLayer = vectorLayerTriangleVertex; - this.map.addLayer(vectorLayerTriangleVertex); - /* Draw Triangle Vertex - vectorTriangleDirection = new ol.layer.Vector({ - source: new ol.source.Vector({ features: - new ol.Feature({ geometry: new ol.geom.Point(pointsFOV[0])}) }), - style: new ol.style.Style({ - image: new ol.style.RegularShape({ - fill: fill, - stroke: stroke, - points: 3, - radius: 10, - rotation:direction, - angle: FOV, - }) - }) - - }); - */ - + this.viewingDirectionLayer = vectorLayerTrianglePolygon; + this.addLayer(this.viewingDirectionLayer); - // Draw Triangle Vertex var vectorLayerTriangleVertex = new ol.layer.Vector({ source: new ol.source.Vector({ @@ -353,9 +327,8 @@ export class ViewerMapAPI { }) }); - this.lastLayerDirection = vectorLayerTriangleVertex; - this.map.addLayer( this.lastLayerDirection); + this.addLayer( this.lastLayerDirection); } } From c8ac10df7b2a034a8e219a7219db8353d07e02bd Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 17:20:44 +0200 Subject: [PATCH 30/46] Display Position triangle --- src/js/viewer/ViewerMapAPI.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 0e191a8..97b6a94 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -259,10 +259,10 @@ export class ViewerMapAPI { // temporary using 170 degree for correcting the starting zero degree of 2D map var direction = (- lonov - 170)* (Math.PI / 180); if (this.init != true) { - // // remove prvious vector layers + // remove prvious vector layers this.removeLayer(this.lastVectorLayerRed); this.removeLayer(this.lastLayerDirection); - this.removeLayer(this.viewingDirevyionLayer); + this.map.removeLayer(this.viewingDirectionLayer); } From a5d7fd51208bd0746d1a6c83c41839a507c5ae2a Mon Sep 17 00:00:00 2001 From: clairebb1005 Date: Mon, 14 Jun 2021 17:43:21 +0200 Subject: [PATCH 31/46] smooth triangle size when zoom with the mousewheel --- src/js/viewer/ViewerPanoAPI.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 75da6c9..87d69ef 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -136,6 +136,7 @@ export class ViewerPanoAPI { this.camera.updateProjectionMatrix(); this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); + this.initMap(this.viewerAPI.map).show_direction(); } onDoubleClick(event) { From 88c73d6df6560ca412ef600b907b72532ad611ac Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 18:43:18 +0200 Subject: [PATCH 32/46] correct lonov value according to map --- src/js/viewer/ViewerMapAPI.js | 62 +++++++++++++++-------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 97b6a94..76cf854 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -215,8 +215,9 @@ export class ViewerMapAPI { // show current floor black points var currentVectorLayer = this.vectorLayer[floorIndex] this.map.addLayer(currentVectorLayer); - - //adding red points, using this. for show_direction + console.log("VIEWER STRUCURE", this.viewerImageAPI.currentImage); + //adding red points, using this. for show_direction + this.viewerAPI.pos this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); @@ -257,39 +258,46 @@ export class ViewerMapAPI { var lonov = this.viewerViewState.lonov; // temporary using 170 degree for correcting the starting zero degree of 2D map - var direction = (- lonov - 170)* (Math.PI / 180); - if (this.init != true) { - // remove prvious vector layers - this.removeLayer(this.lastVectorLayerRed); - this.removeLayer(this.lastLayerDirection); - this.map.removeLayer(this.viewingDirectionLayer); - } + var direction = -(lonov +180 )* (Math.PI / 180); - - // remove previoous direction layers - this.map.removeLayer(this.lastLayerDirection); + // remove prvious vector layers + this.removeLayer(this.lastVectorLayerRed); + this.removeLayer(this.lastLayerDirection); + this.map.removeLayer(this.viewingDirectionLayer); // get direction triangle vertex - var FOV = this.viewerViewState.fov/2 * (Math.PI / 180) - //var angle = direction + FOV; - + var FOV = this.viewerViewState.fov/2 * (Math.PI / 180); var RADIUS = this.viewerViewState.fov / MAX_FOV *5; + //var angle = direction + FOV; var pointsFOV = [ [this.redlon, this.redlan], [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point ]; var triangleFeats = []; - for(var i = 0; i < pointsFOV.length; i++){ let point = new ol.geom.Point(pointsFOV[i]); triangleFeats.push(new ol.Feature({ geometry: point})); } - //close the triangle - //pointsFOV.push(pointsFOV[0]); + // Draw Triangle Vertex + var vectorLayerTriangleVertex = new ol.layer.Vector({ + source: new ol.source.Vector({ + features: triangleFeats}), + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 1, + fill: new ol.style.Fill({ color: 'red' }) + }) + }) + }); + + this.lastLayerDirection = vectorLayerTriangleVertex; + this.addLayer( this.lastLayerDirection); + + // Draw Triangle Polygon let styleTriangle = new ol.style.Style({ stroke: new ol.style.Stroke({ color: 'rgba(255, 0, 0, 0.4)', @@ -301,11 +309,9 @@ export class ViewerMapAPI { }); var polygonDirectionFeature = new ol.Feature({ - geometry: new ol.geom.Polygon([pointsFOV])//.transform('EPSG:4326','EPSG:4326'), + geometry: new ol.geom.Polygon([pointsFOV]) } ); - - // Draw Triangle Polygon var vectorLayerTrianglePolygon = new ol.layer.Vector({ source: new ol.source.Vector({ features: [polygonDirectionFeature], projection: this.map.getView().projection}), @@ -315,20 +321,6 @@ export class ViewerMapAPI { this.viewingDirectionLayer = vectorLayerTrianglePolygon; this.addLayer(this.viewingDirectionLayer); - // Draw Triangle Vertex - var vectorLayerTriangleVertex = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: triangleFeats}), - style: new ol.style.Style({ - image: new ol.style.Circle({ - radius: 2, - fill: new ol.style.Fill({ color: 'red' }) - }) - }) - }); - - this.lastLayerDirection = vectorLayerTriangleVertex; - this.addLayer( this.lastLayerDirection); } } From 19bf5f80725ef9988ddf7032e3b3b4ca5acc0863 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Mon, 14 Jun 2021 18:51:47 +0200 Subject: [PATCH 33/46] correct lonov value from 0 to 360 --- src/js/viewer/ViewerMapAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 76cf854..66215d3 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -258,7 +258,7 @@ export class ViewerMapAPI { var lonov = this.viewerViewState.lonov; // temporary using 170 degree for correcting the starting zero degree of 2D map - var direction = -(lonov +180 )* (Math.PI / 180); + var direction = -(lonov +180 )* (Math.PI / 180) %360; // remove prvious vector layers this.removeLayer(this.lastVectorLayerRed); From fd010d63f5e84002c2c53fbb03ac6010c4f56f61 Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Tue, 15 Jun 2021 16:23:32 +0200 Subject: [PATCH 34/46] Delete some unusable code in ViewerMapAPI --- src/js/viewer/ViewerMapAPI.js | 105 +++++++++++----------------------- 1 file changed, 33 insertions(+), 72 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 66215d3..a2e9975 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -1,6 +1,6 @@ "use strict"; -import { MAX_FOV, MIN_FOV } from "./ViewerConfig.js"; +import { MAX_FOV, MIN_FOV } from "./ViewerConfig.js"; // Map (2D) Viewer API // Specific API for the Map View @@ -38,18 +38,11 @@ export class ViewerMapAPI { // avoid duplicating this.lastVectorLayer; - this.lastFloorID = 0; - this.viewerAPI = viewerAPI; // direction - this.lastvectorLayerdes = []; this.lastLayerDirection = []; this.redraw(); - this.init = false; - - - } // Method: Add an event layer to the map (2D) view. @@ -75,7 +68,7 @@ export class ViewerMapAPI { var extent = [0, 0, currentMapData.width / currentMapData.density, currentMapData.height / currentMapData.density]; // create map - this.map = new ol.Map({ + this.map = new ol.Map({ target: 'map', view: new ol.View({ projection: new ol.proj.Projection({ @@ -87,49 +80,16 @@ export class ViewerMapAPI { }), controls: ol.control.defaults({ // Hide Map rotation button - rotate: false + rotate: false }).extend([ // create fullScreen button - new ol.control.FullScreen(), + new ol.control.FullScreen(), //new ol.control.ZoomSlider(), ]), //Disable Zoom Control on MAP - interactions: ol.interaction.defaults({mouseWheelZoom:false}), + interactions: ol.interaction.defaults({ mouseWheelZoom: false }), }); - - // TODO CLEAN MAP MEATADATA - - // calculate map origin in lon,lan - var current_MapData0 = this.viewerFloorAPI.floors[0].mapData; - // converting map pixel to lon, lan - var mapdata_X_in_meter0 = (current_MapData0.x / current_MapData0.density); - var mapdata_X_in_lon0 = mapdata_X_in_meter0 / 87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m - var mapdata_origin_lon0 = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon0; - - var mapdata_Y_in_meter0 = (current_MapData0.y / current_MapData0.density); - var mapdata_Y_in_lan0 = mapdata_Y_in_meter0 / 111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m - var mapdata_origin_lan0 = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan0; - - // calculate map center in lon,lan - this.mapdata_center_lon0 = mapdata_origin_lon0 + (1 / 2) * (current_MapData0.width / current_MapData0.density); - this.mapdata_center_lan0 = mapdata_origin_lan0 + (1 / 2) * (current_MapData0.height / current_MapData0.density); - - var current_MapData1 = this.viewerFloorAPI.floors[1].mapData; - - var mapdata_X_in_meter1 = (current_MapData1.x / current_MapData1.density); - var mapdata_X_in_lon1 = mapdata_X_in_meter1 / 87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m - var mapdata_origin_lon1 = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon1; - - var mapdata_Y_in_meter1 = (current_MapData1.y / current_MapData1.density); - var mapdata_Y_in_lan1 = mapdata_Y_in_meter1 / 111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m - var mapdata_origin_lan1 = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan1; - - // calculate map center in lon,lan - this.mapdata_center_lon1 = mapdata_origin_lon1 + (1 / 2) * (current_MapData1.width / current_MapData1.density); - this.mapdata_center_lan1 = mapdata_origin_lan1 + (1 / 2) * (current_MapData1.height / current_MapData1.density); - - // create image layers for each floors for (var i = 0; i < this.viewerFloorAPI.floors.length; i++) { let mapData = this.viewerFloorAPI.floors[i].mapData @@ -217,7 +177,6 @@ export class ViewerMapAPI { this.map.addLayer(currentVectorLayer); console.log("VIEWER STRUCURE", this.viewerImageAPI.currentImage); //adding red points, using this. for show_direction - this.viewerAPI.pos this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); @@ -243,7 +202,6 @@ export class ViewerMapAPI { // save last vector layers for deleting next time - this.lastFloorID = this.viewerFloorAPI.currentFloorId; this.lastVectorLayer = currentVectorLayer; this.lastVectorLayerRed = vectorLayerRed; @@ -258,34 +216,35 @@ export class ViewerMapAPI { var lonov = this.viewerViewState.lonov; // temporary using 170 degree for correcting the starting zero degree of 2D map - var direction = -(lonov +180 )* (Math.PI / 180) %360; + var direction = -(lonov + 180) * (Math.PI / 180) % 360; // remove prvious vector layers this.removeLayer(this.lastVectorLayerRed); this.removeLayer(this.lastLayerDirection); - this.map.removeLayer(this.viewingDirectionLayer); + this.map.removeLayer(this.viewingDirectionLayer); // get direction triangle vertex - var FOV = this.viewerViewState.fov/2 * (Math.PI / 180); - var RADIUS = this.viewerViewState.fov / MAX_FOV *5; + var FOV = this.viewerViewState.fov / 2 * (Math.PI / 180); + var RADIUS = this.viewerViewState.fov / MAX_FOV * 5; //var angle = direction + FOV; - var pointsFOV = [ [this.redlon, this.redlan], - [this.redlon + RADIUS*Math.cos((direction + FOV) ), this.redlan + RADIUS*Math.sin((direction + FOV))], //left vertex point - [this.redlon + RADIUS*Math.cos((direction - FOV) ), this.redlan + RADIUS*Math.sin((direction - FOV))], //right vertex point - ]; - + var pointsFOV = [[this.redlon, this.redlan], + [this.redlon + RADIUS * Math.cos((direction + FOV)), this.redlan + RADIUS * Math.sin((direction + FOV))], //left vertex point + [this.redlon + RADIUS * Math.cos((direction - FOV)), this.redlan + RADIUS * Math.sin((direction - FOV))], //right vertex point + ]; + var triangleFeats = []; - for(var i = 0; i < pointsFOV.length; i++){ + for (var i = 0; i < pointsFOV.length; i++) { let point = new ol.geom.Point(pointsFOV[i]); - triangleFeats.push(new ol.Feature({ geometry: point})); + triangleFeats.push(new ol.Feature({ geometry: point })); } // Draw Triangle Vertex var vectorLayerTriangleVertex = new ol.layer.Vector({ source: new ol.source.Vector({ - features: triangleFeats}), + features: triangleFeats + }), style: new ol.style.Style({ image: new ol.style.Circle({ radius: 1, @@ -295,32 +254,34 @@ export class ViewerMapAPI { }); this.lastLayerDirection = vectorLayerTriangleVertex; - this.addLayer( this.lastLayerDirection); + this.addLayer(this.lastLayerDirection); - // Draw Triangle Polygon - let styleTriangle = new ol.style.Style({ + // Draw Triangle Polygon + let styleTriangle = new ol.style.Style({ stroke: new ol.style.Stroke({ - color: 'rgba(255, 0, 0, 0.4)', - width: 2 + color: 'rgba(255, 0, 0, 0.4)', + width: 2 }), fill: new ol.style.Fill({ - color: 'rgba(255, 0, 0, 0.2)' + color: 'rgba(255, 0, 0, 0.2)' }) - }); + }); var polygonDirectionFeature = new ol.Feature({ geometry: new ol.geom.Polygon([pointsFOV]) - } ); + }); var vectorLayerTrianglePolygon = new ol.layer.Vector({ - source: new ol.source.Vector({ features: [polygonDirectionFeature], - projection: this.map.getView().projection}), - style: styleTriangle, + source: new ol.source.Vector({ + features: [polygonDirectionFeature], + projection: this.map.getView().projection + }), + style: styleTriangle, }); - this.viewingDirectionLayer = vectorLayerTrianglePolygon; + this.viewingDirectionLayer = vectorLayerTrianglePolygon; this.addLayer(this.viewingDirectionLayer); - + } } From 40b3245b11a8c60c1328912e5495bfe41be934ef Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Tue, 15 Jun 2021 16:54:47 +0200 Subject: [PATCH 35/46] Delete unusable variables in contructor --- src/js/viewer/ViewerMapAPI.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index a2e9975..89627a0 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -14,7 +14,6 @@ export class ViewerMapAPI { viewerAPI.floor.viewerMapAPI = this; // set reference to mapAPI in floorAPI - this.layers; this.scene = new THREE.Scene(); // scene THREE.Scene scene overlayed over the map (2D) view this.camera = new THREE.OrthographicCamera( - window.innerWidth / 2, // frustum left plane @@ -23,10 +22,6 @@ export class ViewerMapAPI { - window.innerHeight / 2, // frustum bottom plane 1, // frustum near plane 10); // frustum far plane - this.camera.position.z = 2; // need to be in [near + 1, far + 1] to be displayed - - this.spriteGroup = new THREE.Group(); //create an sprite group - this.mapScalingFactor = 0.2; this.baseURL = viewerAPI.baseURL; @@ -175,7 +170,6 @@ export class ViewerMapAPI { // show current floor black points var currentVectorLayer = this.vectorLayer[floorIndex] this.map.addLayer(currentVectorLayer); - console.log("VIEWER STRUCURE", this.viewerImageAPI.currentImage); //adding red points, using this. for show_direction this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); @@ -226,8 +220,6 @@ export class ViewerMapAPI { // get direction triangle vertex var FOV = this.viewerViewState.fov / 2 * (Math.PI / 180); var RADIUS = this.viewerViewState.fov / MAX_FOV * 5; - - //var angle = direction + FOV; var pointsFOV = [[this.redlon, this.redlan], [this.redlon + RADIUS * Math.cos((direction + FOV)), this.redlan + RADIUS * Math.sin((direction + FOV))], //left vertex point [this.redlon + RADIUS * Math.cos((direction - FOV)), this.redlan + RADIUS * Math.sin((direction - FOV))], //right vertex point From 20579049549903f818636c8dc19df669c55e5dfb Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Tue, 15 Jun 2021 17:15:47 +0200 Subject: [PATCH 36/46] Did some small change --- src/js/viewer/ViewerMapAPI.js | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 89627a0..9374cbb 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -51,14 +51,12 @@ export class ViewerMapAPI { this.map.removeLayer(layer); } - // Method + // Method: Get the scale used by the three.js scene overlayed over the map (2D) view. scale() { - //Get the scale used by the three.js scene overlayed over the map (2D) view. return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } initDisplayMap() { - let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; var extent = [0, 0, currentMapData.width / currentMapData.density, currentMapData.height / currentMapData.density]; @@ -69,7 +67,7 @@ export class ViewerMapAPI { projection: new ol.proj.Projection({ extent: extent }), - center: new ol.extent.getCenter(extent), // TODO: update center to current position + center: new ol.extent.getCenter(extent), // Update center to current position zoom: 1, maxZoom: 4, }), @@ -105,7 +103,7 @@ export class ViewerMapAPI { var currentMapdata = this.viewerFloorAPI.floors[i].mapData; var features = []; - // TODO retrieve information from stored data + //Retrieve information from stored data allImages.forEach(image => { // Get Longitude and latitude from each point var lon = 87000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); @@ -135,7 +133,6 @@ export class ViewerMapAPI { } updateDisplayMap(floorIndex) { - var group = this.map.getLayerGroup(); var layers = group.getLayers(); @@ -152,15 +149,12 @@ export class ViewerMapAPI { // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { - - if (this.init != true) { // remove prvious vector layers this.map.removeLayer(this.lastVectorLayerRed); this.map.removeLayer(this.lastVectorLayer); } - // show layer map this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); @@ -194,7 +188,6 @@ export class ViewerMapAPI { this.map.addLayer(vectorLayerRed); - // save last vector layers for deleting next time this.lastVectorLayer = currentVectorLayer; this.lastVectorLayerRed = vectorLayerRed; @@ -205,7 +198,6 @@ export class ViewerMapAPI { } show_direction() { - // get viewing longitude direction (in degrees) var lonov = this.viewerViewState.lonov; @@ -231,7 +223,6 @@ export class ViewerMapAPI { triangleFeats.push(new ol.Feature({ geometry: point })); } - // Draw Triangle Vertex var vectorLayerTriangleVertex = new ol.layer.Vector({ source: new ol.source.Vector({ @@ -273,8 +264,6 @@ export class ViewerMapAPI { this.viewingDirectionLayer = vectorLayerTrianglePolygon; this.addLayer(this.viewingDirectionLayer); - } - } From 477433829231104d5ae16b6fdb702ca258e4be59 Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Tue, 15 Jun 2021 17:19:54 +0200 Subject: [PATCH 37/46] Delete MIN_FOV --- src/js/viewer/ViewerMapAPI.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 9374cbb..bae4c1d 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -1,6 +1,6 @@ "use strict"; -import { MAX_FOV, MIN_FOV } from "./ViewerConfig.js"; +import { MAX_FOV } from "./ViewerConfig.js"; // Map (2D) Viewer API // Specific API for the Map View From 47f24314e9b777571e9de6249902f70cedb785d3 Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Tue, 15 Jun 2021 17:26:21 +0200 Subject: [PATCH 38/46] Delete unusable comments --- src/js/viewer/ViewerMapAPI.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index bae4c1d..cfeab18 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -77,7 +77,6 @@ export class ViewerMapAPI { }).extend([ // create fullScreen button new ol.control.FullScreen(), - //new ol.control.ZoomSlider(), ]), //Disable Zoom Control on MAP interactions: ol.interaction.defaults({ mouseWheelZoom: false }), From 5a9d066a2b0c02031a1def6021b79fe1af5bca4b Mon Sep 17 00:00:00 2001 From: Tong Yao <51960333+ChillYao@users.noreply.github.com> Date: Wed, 16 Jun 2021 00:07:08 +0200 Subject: [PATCH 39/46] =?UTF-8?q?Deleted=20unused=20file=20=E2=80=9CViewer?= =?UTF-8?q?MapAPI-Point.js=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/viewer/ViewerMapAPI-Point.js | 177 ---------------------------- 1 file changed, 177 deletions(-) delete mode 100644 src/js/viewer/ViewerMapAPI-Point.js diff --git a/src/js/viewer/ViewerMapAPI-Point.js b/src/js/viewer/ViewerMapAPI-Point.js deleted file mode 100644 index f5aee23..0000000 --- a/src/js/viewer/ViewerMapAPI-Point.js +++ /dev/null @@ -1,177 +0,0 @@ -"use strict"; - -import { ViewerAPI } from "./ViewerAPI.js"; - -// Map (2D) Viewer API - -// Specific API for the Map View -export class ViewerMapAPI { - - constructor(viewerAPI) { - this.viewerImageAPI = viewerAPI.viewerImageAPI; - this.viewerFloorAPI = viewerAPI.viewerFloorAPI; - viewerAPI.viewerFloorAPI.viewerMapAPI = this; // set reference to mapAPI in floorAPI - - this.layers; - this.scene = new THREE.Scene(); // scene THREE.Scene scene overlayed over the map (2D) view - this.camera = new THREE.OrthographicCamera( - - window.innerWidth / 2, // frustum left plane - window.innerWidth / 2, // frustum right plane - window.innerHeight / 2, // frustum top plane - - window.innerHeight / 2, // frustum bottom plane - 1, // frustum near plane - 10); // frustum far plane - this.camera.position.z = 2; // need to be in [near + 1, far + 1] to be displayed - - this.spriteGroup = new THREE.Group(); //create an sprite group - this.mapScalingFactor = 0.2; - - // const baseURL = "https://bora.bup-nbg.de/amos2floors/"; - const baseURL = viewerAPI.baseURL; - - const mapPicturePath = baseURL + this.viewerFloorAPI.currentFloor.mapData.name + ".png"; - - this.map = displayMap(mapPicturePath); - this.redraw(); - this.baseURL = baseURL; - //this.spriteGroup.position.set(window.innerWidth / 2, -window.innerHeight / 2, 0); // bottom right - //this.scene.add(this.spriteGroup); - - } - - // Method: Add an event layer to the map (2D) view. - addLayer(layer) { - this.scene.add(layer); - } - - // Method: remove an event layer to the map (2D) view. - removeLayer(layer) { - // Layer: EventLayer - this.scene.remove(layer); - } - - // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. - redraw() { - // this.spriteGroup.clear(); - - /* remove comment to draw all points on map - let allImages = this.viewerFloorAPI.currentFloor.viewerImages; - - allImages.forEach(image => { - this.addPoint("black", image.mapOffset); - }); - //*/ - //this.map = displayMap( this.baseURL + this.viewerFloorAPI.currentFloor.mapData.name + ".png"); - - this.addPoint("red", this.viewerImageAPI.currentImage.mapOffset ); - //this.addViewingDirection("yellow", this.viewerImageAPI.currentImage.mapOffset); - - } - - - // draws a point in *color* on the map at *offset*, also returns the THREE.Sprite after it is drawn - addPoint(color, offset) { - - var position =[-this.mapScalingFactor * offset[0], this.mapScalingFactor * offset[1]]; - var point_canvas = generateCircularSprite(color); - console.log(offset); - var point = new ol.Overlay({ - element: point_canvas, - positioning: 'center', - stopEvent: false, - offset: [position], - }); - - // point.setPosition(offset); - //this.map.addOverlay(point); - var circleFeature = new ol.Feature({ - geometry: new ol.geom.Circle([position], 20), - }); - - circleFeature.setStyle( - new ol.style.Style({ - renderer: point_canvas }) - ); - - var point_layer = new ol.layer.Vector({ - source: new ol.source.Source({ - features: [circleFeature], })}); - - - this.map.addLayer(point_layer); - - /* - var iconFeature = new ol.Feature(new ol.geom.Point([position])); - // Point layer - var point_layer = new ol.layer.Vector({ - source: new ol.source.Vector({ - features: [iconFeature] - })}); - this.map.addLayer(point_layer); - */ - } - - // Method - scale() { - //Get the scale used by the three.js scene overlayed over the map (2D) view. - return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) - } - - -} - -function generateCircularSprite(color) { - var canvas = document.createElement('canvas'); - var radius = 16; - canvas.height = radius*2+1; - canvas.width = radius*2+1; - var context = canvas.getContext('2d'); - var centerX = canvas.width / 2; - var centerY = canvas.height / 2; - - - context.beginPath(); - context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); - context.fillStyle = color; - context.fill(); - return canvas; - -} - - -function displayMap(mapURL){ - - var extent = [0, 0, 512, 512]; - // Projection map image coordinates directly to map coordinates in pixels. - var projection = new ol.proj.Projection({ - code: 'map-image', - units: 'pixels', - extent: extent, - }); - - - var map = new ol.Map({ - controls: ol.control.defaults({rotate: false}), - interactions: ol.interaction.defaults({altShiftDragRotate:false, pinchRotate:false}), - layers: [ - new ol.layer.Image({ - source: new ol.source.ImageStatic({ - //attributions: '© OpenLayers', - url: mapURL, - projection: projection, - imageExtent: extent, - }), - - }) ], - target: 'map', - view: new ol.View({ - projection: projection, - center: new ol.extent.getCenter(extent), - zoom: 0.8, - maxZoom: 4, - }), - }); - - return map; - -} From 609cc111f2014c3b3f5ac750bf0cfaa0e323dda6 Mon Sep 17 00:00:00 2001 From: Mm24 Date: Wed, 16 Jun 2021 09:39:12 +0200 Subject: [PATCH 40/46] refactor code: organize function, set constant in config file and imporve visualization od position --- src/css/main.css | 2 +- src/js/viewer/ViewerConfig.js | 11 +++++++++++ src/js/viewer/ViewerMapAPI.js | 36 +++++++++++++++++++++-------------- 3 files changed, 34 insertions(+), 15 deletions(-) diff --git a/src/css/main.css b/src/css/main.css index 89bf7b8..2e7d34e 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -37,7 +37,7 @@ body { .control-OL{ position: fixed; - bottom:20%; + bottom:20.5%; right: 3%; color: #fff; } diff --git a/src/js/viewer/ViewerConfig.js b/src/js/viewer/ViewerConfig.js index 1f27ef2..b75d97e 100644 --- a/src/js/viewer/ViewerConfig.js +++ b/src/js/viewer/ViewerConfig.js @@ -8,10 +8,21 @@ export const DEFAULT_FOV = 80; export const MAX_FOV = 100; export const MIN_FOV = 10; + // Describes how much mouse wheel scrolling is needed to zoom in the picture. // A higher value means zooming is faster (also more stuttered) export const ZOOM_SPEED = 0.05; + // Describes how much the mouse has to be moved for the picture to pan // A higher value means panning is quicker export const PAN_SPEED = 0.1; + + +//Configurable values to change some aspects of the ViewerMapAPI + +// Describes the Field of View of scaling of displayed on the map. +export const SCALING_MAP = 0.2; + +// Describes the maximum zoom of the map. +export const MAP_ZOOM = 4; diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index cfeab18..56a34c9 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -1,6 +1,6 @@ "use strict"; -import { MAX_FOV } from "./ViewerConfig.js"; +import { MAX_FOV, SCALING_MAP, MAP_ZOOM } from "./ViewerConfig.js"; // Map (2D) Viewer API // Specific API for the Map View @@ -69,7 +69,7 @@ export class ViewerMapAPI { }), center: new ol.extent.getCenter(extent), // Update center to current position zoom: 1, - maxZoom: 4, + maxZoom: MAP_ZOOM, }), controls: ol.control.defaults({ // Hide Map rotation button @@ -105,11 +105,10 @@ export class ViewerMapAPI { //Retrieve information from stored data allImages.forEach(image => { // Get Longitude and latitude from each point - var lon = 87000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - var lan = 111000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + var pos = this.getLonLanCoordinates(image.pos, currentMapdata); var current_feature = new ol.Feature({ - geometry: new ol.geom.Point([lon, lan]), + geometry: new ol.geom.Point(pos), }) features.push(current_feature) }); @@ -163,12 +162,14 @@ export class ViewerMapAPI { // show current floor black points var currentVectorLayer = this.vectorLayer[floorIndex] this.map.addLayer(currentVectorLayer); + //adding red points, using this. for show_direction - this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); - this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + let curren_position = this.getLonLanCoordinates(this.viewerImageAPI.currentImage.pos, currentMapdata); + this.posLon = curren_position[0]; + this.posLan = curren_position[1]; var redFeature = new ol.Feature({ - geometry: new ol.geom.Point([this.redlon, this.redlan]), + geometry: new ol.geom.Point([this.posLon, this.posLan]), }); var vectorSourceRed = new ol.source.Vector({ @@ -204,16 +205,16 @@ export class ViewerMapAPI { var direction = -(lonov + 180) * (Math.PI / 180) % 360; // remove prvious vector layers - this.removeLayer(this.lastVectorLayerRed); + this.removeLayer(this.lastLayerDirection); this.map.removeLayer(this.viewingDirectionLayer); // get direction triangle vertex var FOV = this.viewerViewState.fov / 2 * (Math.PI / 180); - var RADIUS = this.viewerViewState.fov / MAX_FOV * 5; - var pointsFOV = [[this.redlon, this.redlan], - [this.redlon + RADIUS * Math.cos((direction + FOV)), this.redlan + RADIUS * Math.sin((direction + FOV))], //left vertex point - [this.redlon + RADIUS * Math.cos((direction - FOV)), this.redlan + RADIUS * Math.sin((direction - FOV))], //right vertex point + var RADIUS = this.viewerViewState.fov / (MAX_FOV * SCALING_MAP); + var pointsFOV = [[this.posLon, this.posLan], + [this.posLon + RADIUS * Math.cos((direction + FOV)), this.posLan + RADIUS * Math.sin((direction + FOV))], //left vertex point + [this.posLon + RADIUS * Math.cos((direction - FOV)), this.posLan + RADIUS * Math.sin((direction - FOV))], //right vertex point ]; var triangleFeats = []; @@ -236,7 +237,7 @@ export class ViewerMapAPI { }); this.lastLayerDirection = vectorLayerTriangleVertex; - this.addLayer(this.lastLayerDirection); + // this.addLayer(this.lastLayerDirection); // Draw Triangle Polygon let styleTriangle = new ol.style.Style({ @@ -264,5 +265,12 @@ export class ViewerMapAPI { this.viewingDirectionLayer = vectorLayerTrianglePolygon; this.addLayer(this.viewingDirectionLayer); } + + getLonLanCoordinates(position, mapdata){ + // Compute the latitude and longitude in reference to the origin in WGS84 and aff offset of the map + let lon = 87000 * (position[0] - this.viewerFloorAPI.origin[0]) + (mapdata.x / mapdata.density); + let lan = 111000 * (position[1] - this.viewerFloorAPI.origin[1]) + (mapdata.y / mapdata.density); + return [lon, lan]; + } } From 7eca4a5dc1b4cc8af52905b0bde52f72a6a043fd Mon Sep 17 00:00:00 2001 From: Mm24 Date: Wed, 16 Jun 2021 10:00:01 +0200 Subject: [PATCH 41/46] merge user stories for server deployment --- src/js/viewer/ViewerPanoAPI.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 87d69ef..405ccfb 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -27,10 +27,10 @@ export class ViewerPanoAPI { // Two new event listeneres are called to handle *how far* the user drags this.oPM = (event) => this.onPointerMove(event); this.oPU = () => this.onPointerUp(); - - document.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); - document.addEventListener('pointerdown', (event) => this.onPointerDown(event)); - document.addEventListener('dblclick', (event) => this.onDoubleClick(event)); + this.panoViewer=document.getElementById('pano-viewer'); + this.panoViewer.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); + this.panoViewer.addEventListener('pointerdown', (event) => this.onPointerDown(event)); + this.panoViewer.addEventListener('dblclick', (event) => this.onDoubleClick(event)); $('#pano-viewer').mousedown((event) => this.onRightClick(event)); this.display(this.viewerImageAPI.currentImageId); From f2110e1ce1ac134657da2252070abce10b40ebff Mon Sep 17 00:00:00 2001 From: leonopulos Date: Wed, 16 Jun 2021 10:40:57 +0200 Subject: [PATCH 42/46] Fix spheres 'changing position' when moving in room --- src/js/viewer/ViewerAPI.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/js/viewer/ViewerAPI.js b/src/js/viewer/ViewerAPI.js index 0c29672..9cb6161 100644 --- a/src/js/viewer/ViewerAPI.js +++ b/src/js/viewer/ViewerAPI.js @@ -139,12 +139,12 @@ export class ViewerAPI { // Convert the local metric three.js coordinates used by the viewer to WGS 84 coordinates [longitude, latitude, z]. toGlobal(localCoords) { // localCoords : THREE.Vector3 // Local coordinates used by the viewer - const globalX = this.floor.origin[0] - (localCoords.x / 71.5); - const globalY = this.floor.origin[1] - (localCoords.y / 111.3); - const globalZ = localCoords.z - this.floor.currentFloor.z; + const globalX = this.floor.origin[0] - ((localCoords.x / 1000) / 71.5); + const globalY = this.floor.origin[1] - ((-localCoords.z / 1000) / 111.3); + const globalZ = localCoords.y - this.floor.currentFloor.z; // the three js scene sees the y axis as the up-down axis so we have to swap with z - return [globalX, globalZ, globalY]; + return [globalX, globalY, globalZ]; // Returns: [Number] : WGS 84 coordinates [longitude, latitude, z] (z value is floorZ + panoZ, where localCoords is just the panoZ) } @@ -154,12 +154,12 @@ export class ViewerAPI { // Distance calculation math taken from here https://www.mkompf.com/gps/distcalc.html // The more accurate calculation breaks the pixel offset on the pre-created maps const dx = 71.5 * (this.floor.origin[0] - globalCoords[0]); - const dy = 111.3 * (this.floor.origin[1] - globalCoords[1]); + const dz = 111.3 * (this.floor.origin[1] - globalCoords[1]); return new this.THREE.Vector3( dx * 1000, globalCoords[2] + this.floor.currentFloor.z, - dy * 1000); + -dz * 1000); } // TODO: swap() and big(wanted) From 98d7ea58eafa23381f1e06f7ce10584a2048c73e Mon Sep 17 00:00:00 2001 From: leonopulos Date: Wed, 16 Jun 2021 10:51:15 +0200 Subject: [PATCH 43/46] Fix merge conflicts --- src/js/viewer/ViewerPanoAPI.js | 59 +++++++++++----------------------- 1 file changed, 19 insertions(+), 40 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 80477a4..82ff03b 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -32,21 +32,17 @@ export class ViewerPanoAPI { this.oPM = (event) => this.onPointerMove(event); this.oPU = () => this.onPointerUp(); - document.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); - document.addEventListener('pointerdown', (event) => this.onPointerDown(event)); - document.addEventListener('dblclick', (event) => this.onDoubleClick(event)); - - this.panoViewer=document.getElementById('pano-viewer'); - this.panoViewer.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); - this.panoViewer.addEventListener('pointerdown', (event) => this.onPointerDown(event)); - this.panoViewer.addEventListener('dblclick', (event) => this.onDoubleClick(event)); + const panoViewer = document.getElementById('pano-viewer'); + panoViewer.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); + panoViewer.addEventListener('pointerdown', (event) => this.onPointerDown(event)); + panoViewer.addEventListener('dblclick', (event) => this.onDoubleClick(event)); $('#pano-viewer').mousedown((event) => this.onRightClick(event)); this.display(this.viewerImageAPI.currentImageId); - this.viewerMapAPI; + this.viewerMapAPI; // ? } // displays the panorama with idx *ImageNum* in the model @@ -110,7 +106,6 @@ export class ViewerPanoAPI { // Set the panorama view characteristics. view(lonov, latov, fov) { - const normalizedViewingDirection = lonLatToLocal(lonov, latov); // adjust looking direction for offset of current mesh in scene @@ -118,19 +113,6 @@ export class ViewerPanoAPI { this.camera.lookAt(localCoord.add(normalizedViewingDirection)); - let phi = THREE.MathUtils.degToRad(90 - latov); - let theta = THREE.MathUtils.degToRad(lonov); - - const x = this.sphereRadius * Math.sin(phi) * Math.cos(theta); - const y = this.sphereRadius * Math.cos(phi); - const z = this.sphereRadius * Math.sin(phi) * Math.sin(theta); - - // adjust looking direction for offset of current mesh in scene - const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); - - this.camera.lookAt(x + localCoord.x, y + localCoord.y, z + localCoord.z); - - this.camera.fov = THREE.MathUtils.clamp(fov, MIN_FOV, MAX_FOV); this.camera.updateProjectionMatrix(); @@ -143,18 +125,15 @@ export class ViewerPanoAPI { this.lastViewState = [this.viewerViewState.lonov, this.viewerViewState.latov]; - document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); this.visualTest(event); - - } // handles continues update of the distance mouse moved onPointerMove(event) { - let scalingFactor = this.camera.fov / MAX_FOV; + const scalingFactor = this.camera.fov / MAX_FOV; this.viewerViewState.setLonov((this.lastMousePos[0] - event.clientX) * PAN_SPEED * scalingFactor + this.lastViewState[0]); this.viewerViewState.setLatov((event.clientY - this.lastMousePos[1]) * PAN_SPEED * scalingFactor + this.lastViewState[1]); @@ -168,6 +147,16 @@ export class ViewerPanoAPI { document.removeEventListener('pointerup', this.oPU); this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); + + console.info(this.viewerViewState); + console.info(this.camera.getWorldDirection()); + console.info("current img original global ", this.viewerImageAPI.currentImage.pos) + const loc = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); + console.info("current img pos loc ", loc); + const b = this.viewerAPI.toGlobal(loc); + console.info("back to global ", b); + const bb = this.viewerAPI.toLocal(b); + console.info("and back to loc one more time ", bb); } onDocumentMouseWheel(event) { @@ -181,19 +170,7 @@ export class ViewerPanoAPI { } onDoubleClick(event) { - const [adjustedLonov, adjustedLatov] = this.getAdjustedViewstate(event); - - const halfWidth = window.innerWidth / 2; - const halfHeight = window.innerHeight / 2; - - const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen - const verticalOffset = (event.y - halfHeight) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen - - const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov)) + 360) % 360; - const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov - (verticalOffset * this.viewerViewState.fov / 2))); - - const MEDIAN_WALKING_DISTANCE = 5; // in meter // distance to be walked along adjustedHorizontalAngle from current location const distance = MEDIAN_WALKING_DISTANCE + ((adjustedLatov / 85) * MEDIAN_WALKING_DISTANCE); @@ -227,7 +204,7 @@ export class ViewerPanoAPI { }); } } -} + // returns: the depth information (in meter) of the panorama at the current curser position (event.clientX, event.clientY) depthAtPointer(event) { @@ -310,6 +287,8 @@ export class ViewerPanoAPI { this.scene.add(mesh); this.testMesh = mesh; + + console.info("current sphere pos ", direction); } From fc6910ab7d9c89d616dc905f74e8244960cf7a7d Mon Sep 17 00:00:00 2001 From: leonopulos Date: Wed, 16 Jun 2021 10:55:28 +0200 Subject: [PATCH 44/46] Removed some of the console.logs --- src/js/viewer/ViewerAPI.js | 11 +++-------- src/js/viewer/ViewerPanoAPI.js | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 19 deletions(-) diff --git a/src/js/viewer/ViewerAPI.js b/src/js/viewer/ViewerAPI.js index c73793f..e89bd7e 100644 --- a/src/js/viewer/ViewerAPI.js +++ b/src/js/viewer/ViewerAPI.js @@ -42,11 +42,10 @@ export class ViewerAPI { this.pano = new ViewerPanoAPI(this); this.map = new ViewerMapAPI(this); - + }).then(() => { // the only html element we work with (the pano-viewer div) - const container = document.getElementById('pano-viewer'); + const panoDiv = document.getElementById('pano-viewer'); - console.log("init") this.pano.initMap(this.map); // create the renderer, and embed the attributed dom element in the html page @@ -56,14 +55,11 @@ export class ViewerAPI { this.renderer.autoClear = false; // To allow render overlay on top of panorama scene this.renderer.sortObjects = false; - container.appendChild(this.renderer.domElement); + panoDiv.appendChild(this.renderer.domElement); // start animation loop this.animate(); }); - - console.log(this.getMap()); - } animate() { @@ -96,7 +92,6 @@ export class ViewerAPI { // avoid duplication if (bestImg != this.image.currentImage) { this.pano.display(bestImg.id); - console.log("move") this.map.redraw(); return bestImg; } diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 82ff03b..6913c16 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -128,7 +128,7 @@ export class ViewerPanoAPI { document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); - this.visualTest(event); + //this.visualTest(event); } // handles continues update of the distance mouse moved @@ -147,16 +147,6 @@ export class ViewerPanoAPI { document.removeEventListener('pointerup', this.oPU); this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); - - console.info(this.viewerViewState); - console.info(this.camera.getWorldDirection()); - console.info("current img original global ", this.viewerImageAPI.currentImage.pos) - const loc = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); - console.info("current img pos loc ", loc); - const b = this.viewerAPI.toGlobal(loc); - console.info("back to global ", b); - const bb = this.viewerAPI.toLocal(b); - console.info("and back to loc one more time ", bb); } onDocumentMouseWheel(event) { @@ -274,6 +264,16 @@ export class ViewerPanoAPI { } visualTest(event) { + console.info(this.viewerViewState); + console.info(this.camera.getWorldDirection()); + console.info("current img original global ", this.viewerImageAPI.currentImage.pos) + const loc = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); + console.info("current img pos loc ", loc); + const b = this.viewerAPI.toGlobal(loc); + console.info("back to global ", b); + const bb = this.viewerAPI.toLocal(b); + console.info("and back to loc one more time ", bb); + // visual test, spawn in white sphere at cursor position in scene const direction = this.getCursorLocation(event); const sphere = new THREE.SphereGeometry(1 / this.depthAtPointer(event), 10, 10); From 54891a19cd444ef6443832e44fa4069fe0572b73 Mon Sep 17 00:00:00 2001 From: leonopulos Date: Wed, 16 Jun 2021 11:13:26 +0200 Subject: [PATCH 45/46] More cleanup, formatting and some refactoring --- src/js/viewer/ViewerAPI.js | 8 -------- src/js/viewer/ViewerMapAPI.js | 9 --------- src/js/viewer/ViewerPanoAPI.js | 27 ++++++--------------------- 3 files changed, 6 insertions(+), 38 deletions(-) diff --git a/src/js/viewer/ViewerAPI.js b/src/js/viewer/ViewerAPI.js index e89bd7e..fef3186 100644 --- a/src/js/viewer/ViewerAPI.js +++ b/src/js/viewer/ViewerAPI.js @@ -46,8 +46,6 @@ export class ViewerAPI { // the only html element we work with (the pano-viewer div) const panoDiv = document.getElementById('pano-viewer'); - this.pano.initMap(this.map); - // create the renderer, and embed the attributed dom element in the html page this.renderer = new THREE.WebGLRenderer(); this.renderer.setPixelRatio(window.devicePixelRatio); @@ -67,8 +65,6 @@ export class ViewerAPI { this.pano.view(this.pano.viewerViewState.lonov, this.pano.viewerViewState.latov, this.pano.viewerViewState.fov); this.renderer.clear(); this.renderer.render(this.pano.scene, this.pano.camera); - this.renderer.clearDepth(); - this.renderer.render(this.map.scene, this.map.camera); } //Move the view to the nearest (euclidian distance) panorama to the given position. (ignore z value because only called on same floor) @@ -165,8 +161,4 @@ export class ViewerAPI { // TODO: swap() and big(wanted) - getMap(){ - return this.map - } - } diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 56a34c9..fd15762 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -14,15 +14,6 @@ export class ViewerMapAPI { viewerAPI.floor.viewerMapAPI = this; // set reference to mapAPI in floorAPI - this.scene = new THREE.Scene(); // scene THREE.Scene scene overlayed over the map (2D) view - this.camera = new THREE.OrthographicCamera( - - window.innerWidth / 2, // frustum left plane - window.innerWidth / 2, // frustum right plane - window.innerHeight / 2, // frustum top plane - - window.innerHeight / 2, // frustum bottom plane - 1, // frustum near plane - 10); // frustum far plane - this.baseURL = viewerAPI.baseURL; // create Map and Layers diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 6913c16..4dbbf5d 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -12,7 +12,7 @@ export class ViewerPanoAPI { this.camera = new THREE.PerspectiveCamera(DEFAULT_FOV, window.innerWidth / window.innerHeight, 1, 1100); this.viewerImageAPI = viewerAPI.image; this.viewerAPI = viewerAPI; - this.sphereRadius = 10; + this.sphereRadius = 5; this.viewerViewState = new ViewerViewState(DEFAULT_FOV, 0, 0); this.lastViewState; @@ -20,14 +20,11 @@ export class ViewerPanoAPI { //initialize the eventLayer this.eventLayer = new EventLayer(); - - - + // properties needed for display and depthAtPointer method this.loadedMesh = null; this.depthCanvas = document.createElement("canvas"); - // Two new event listeneres are called to handle *how far* the user drags this.oPM = (event) => this.onPointerMove(event); this.oPU = () => this.onPointerUp(); @@ -37,12 +34,9 @@ export class ViewerPanoAPI { panoViewer.addEventListener('pointerdown', (event) => this.onPointerDown(event)); panoViewer.addEventListener('dblclick', (event) => this.onDoubleClick(event)); - $('#pano-viewer').mousedown((event) => this.onRightClick(event)); this.display(this.viewerImageAPI.currentImageId); - - this.viewerMapAPI; // ? } // displays the panorama with idx *ImageNum* in the model @@ -63,10 +57,8 @@ export class ViewerPanoAPI { 'r3.jpg'); texturePano.mapping = THREE.EquirectangularReflectionMapping; // not sure if this line matters - - // also load depth-map for panorama + // --- load depth-map for panorama --- const image = new Image(); - //image.crossOrigin = "use-credentials"; image.src = this.viewerAPI.baseURL + Math.trunc(this.viewerImageAPI.currentImage.id / 100) + '/' + @@ -75,8 +67,7 @@ export class ViewerPanoAPI { image.addEventListener('load', () => { this.depthCanvas.getContext("2d").drawImage(image, 0, 0); }, false); - - + // ----- // put the texture on the spehere and add it to the scene const mesh = new THREE.Mesh(sphere, new THREE.MeshBasicMaterial({ map: texturePano })); @@ -138,7 +129,7 @@ export class ViewerPanoAPI { this.viewerViewState.setLonov((this.lastMousePos[0] - event.clientX) * PAN_SPEED * scalingFactor + this.lastViewState[0]); this.viewerViewState.setLatov((event.clientY - this.lastMousePos[1]) * PAN_SPEED * scalingFactor + this.lastViewState[1]); - this.initMap(this.viewerAPI.map).show_direction(); + this.viewerAPI.map.show_direction(); } // this event listener is called when the user *ends* moving the picture @@ -156,7 +147,7 @@ export class ViewerPanoAPI { this.camera.updateProjectionMatrix(); this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); - this.initMap(this.viewerAPI.map).show_direction(); + this.viewerAPI.map.show_direction(); } onDoubleClick(event) { @@ -290,12 +281,6 @@ export class ViewerPanoAPI { console.info("current sphere pos ", direction); } - - - initMap(map){ - var viewerMapAPI = map; - return viewerMapAPI; - } } From e8b5363661facba547f05d4d9e42bc454d4f03c5 Mon Sep 17 00:00:00 2001 From: leonopulos Date: Wed, 16 Jun 2021 12:54:31 +0200 Subject: [PATCH 46/46] Removed Visual Test --- src/js/viewer/ViewerPanoAPI.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index 4dbbf5d..8b304df 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -118,8 +118,6 @@ export class ViewerPanoAPI { document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); - - //this.visualTest(event); } // handles continues update of the distance mouse moved
-
+ if ('function' === typeof onLoadFunc) { + onLoadFunc(window, ViewerWindow.viewerAsync) + } + -
-
- - - -
+ -
-
-
+ +
-
-
-
- +
+
+
+ + +
- +
+ + \ No newline at end of file diff --git a/src/js/viewer/EventLayer.js b/src/js/viewer/EventLayer.js index fbfb0b4..086f529 100644 --- a/src/js/viewer/EventLayer.js +++ b/src/js/viewer/EventLayer.js @@ -1,29 +1,32 @@ "use strict"; - -// Event position in viewer - -export class EventPosition { - constructor() { - - this.x; // Number // y coordinate of this image on the floor - - this.y; // Number // y coordinate of this image on the floor - } - -} - +import { ViewerContextItem } from "./ViewerContextItem.js"; export class EventLayer { constructor() { - this.viewer_contex; + this.viewer_contex; } - - vwr_oncontext (xy, location){ + + vwr_oncontext(xy, location) { //Parameters: //xy EventPosition: Pointer position //location THREE.Vector3 : Local coordinates for pointer position+ - viewer_contex = new ViewerContextItem(); - return viewer_contex; + + //Showing pointer location and viewing direction in the terminal: + console.log("xy: ", xy); + console.log("Viewing Direction: ", location); + + //Creating callback function for context menu item: + let callback = function (key, options) { + var msg = 'clicked: ' + key; + (window.console && console.log(msg)) || alert(msg); + }; + + //Creating item objects + let itemEdit = new ViewerContextItem(callback, "edit", null, "Edit"); + let itemCut = new ViewerContextItem(callback, "cut", null, "Cut"); + + //Creating list of item objects. + return [itemEdit, itemCut]; } } \ No newline at end of file diff --git a/src/js/viewer/EventPosition.js b/src/js/viewer/EventPosition.js new file mode 100644 index 0000000..0059ea3 --- /dev/null +++ b/src/js/viewer/EventPosition.js @@ -0,0 +1,11 @@ +"use strict"; + +//Event position in viewer +export class EventPosition { + constructor(event) { + + this.x = event.clientX; + this.y = event.clientY; + + } +} \ No newline at end of file diff --git a/src/js/viewer/ViewerAPI.js b/src/js/viewer/ViewerAPI.js index 54a71ba..e4b33a5 100644 --- a/src/js/viewer/ViewerAPI.js +++ b/src/js/viewer/ViewerAPI.js @@ -46,6 +46,9 @@ export class ViewerAPI { // the only html element we work with (the pano-viewer div) const container = document.getElementById('pano-viewer'); + console.log("init") + this.pano.initMap(this.map); + // create the renderer, and embed the attributed dom element in the html page this.renderer = new THREE.WebGLRenderer(); this.renderer.setPixelRatio(window.devicePixelRatio); @@ -59,11 +62,13 @@ export class ViewerAPI { this.animate(); }); + console.log(this.getMap()); + } animate() { window.requestAnimationFrame(() => this.animate()); - this.pano.viewInternal(); + this.pano.view(this.pano.viewerViewState.lonov, this.pano.viewerViewState.latov, this.pano.viewerViewState.fov); this.renderer.clear(); this.renderer.render(this.pano.scene, this.pano.camera); this.renderer.clearDepth(); @@ -79,19 +84,19 @@ export class ViewerAPI { this.floor.currentFloor.viewerImages.forEach(element => { const currLocalPos = this.toLocal(element.pos); - const currDistances = [localPos.x - currLocalPos.x, localPos.y - currLocalPos.y]; - const currDistance = Math.sqrt(currDistances[0] * currDistances[0] + currDistances[1] * currDistances[1]); + const [dx, dz] = [localPos.x - currLocalPos.x, localPos.z - currLocalPos.z]; + const currDistance = Math.sqrt(dx * dx + dz * dz); if (currDistance < minDistance) { minDistance = currDistance; bestImg = element; } - }); // avoid duplication if (bestImg != this.image.currentImage) { this.pano.display(bestImg.id); + console.log("move") this.map.redraw(); return bestImg; } @@ -142,27 +147,31 @@ export class ViewerAPI { // localCoords : THREE.Vector3 // Local coordinates used by the viewer const globalX = this.floor.origin[0] - (localCoords.x / 71.5); const globalY = this.floor.origin[1] - (localCoords.y / 111.3); - const globalZ = this.floor.currentFloor.z + localCoords.z; + const globalZ = localCoords.z - this.floor.currentFloor.z; - return [globalX, globalY, globalZ]; + // the three js scene sees the y axis as the up-down axis so we have to swap with z + return [globalX, globalZ, globalY]; // Returns: [Number] : WGS 84 coordinates [longitude, latitude, z] (z value is floorZ + panoZ, where localCoords is just the panoZ) } // Convert WGS 84 coordinates (globalCoords : [longitude, latitude, z]) to the local metric three.js coordinates used by the viewer. - // z value should be the panoZ + floorZ or image + // z value should be the panoZ + floorZ of image toLocal(globalCoords) { // Distance calculation math taken from here https://www.mkompf.com/gps/distcalc.html + // The more accurate calculation breaks the pixel offset on the pre-created maps const dx = 71.5 * (this.floor.origin[0] - globalCoords[0]); const dy = 111.3 * (this.floor.origin[1] - globalCoords[1]); - - // The more accurate calculation breaks the pixel offset on the precreated maps - //const avgLat = (lat1 + lat2) / 2 * 0.01745; - //dx = 111.3 * Math.cos(THREE.MathUtils.degToRad(avgLat)) * (lon1 - lon2); - return new this.THREE.Vector3(dx * 1000, dy * 1000, globalCoords[2] - this.floor.currentFloor.z); - // Returns: THREE.Vector3 : Local coordinates + return new this.THREE.Vector3( + dx * 1000, + globalCoords[2] + this.floor.currentFloor.z, + dy * 1000); } // TODO: swap() and big(wanted) + getMap(){ + return this.map + } + } diff --git a/src/js/viewer/ViewerContextItem.js b/src/js/viewer/ViewerContextItem.js new file mode 100644 index 0000000..d658ed2 --- /dev/null +++ b/src/js/viewer/ViewerContextItem.js @@ -0,0 +1,16 @@ +"use strict"; + +export class ViewerContextItem { + + constructor(callback, icon, items, name) { + + //Callback to execute for this context menu item + this.callback = callback; + //Icon class for this context menu item + this.icon = icon; + //Sub items below this context menu item + this.items = items; + //Human readable name of this item in the displayed context menu + this.name = name; + } +} diff --git a/src/js/viewer/ViewerFloorAPI.js b/src/js/viewer/ViewerFloorAPI.js index 60857cc..4a261b0 100644 --- a/src/js/viewer/ViewerFloorAPI.js +++ b/src/js/viewer/ViewerFloorAPI.js @@ -72,8 +72,8 @@ export class ViewerFloorAPI { // display pano from new floor closest to current one const newImg = this.viewerAPI.move(oldPos[0], oldPos[1], oldPos[2]); // only checks images in correct floor because FloorId is set before - // show new map - this.viewerMapAPI.redraw(); + // // show new map + // this.viewerMapAPI.redraw(); // notify viewerAPI via event this.viewerAPI.propagateEvent("floor", this.currentFloor.name, true); // changed floor diff --git a/src/js/viewer/ViewerMapAPI.js b/src/js/viewer/ViewerMapAPI.js index 67c4230..bb661b5 100644 --- a/src/js/viewer/ViewerMapAPI.js +++ b/src/js/viewer/ViewerMapAPI.js @@ -8,11 +8,14 @@ export class ViewerMapAPI { constructor(viewerAPI) { this.viewerImageAPI = viewerAPI.image; this.viewerFloorAPI = viewerAPI.floor; + // draw direction + this.viewerViewState = viewerAPI.pano.viewerViewState; + viewerAPI.floor.viewerMapAPI = this; // set reference to mapAPI in floorAPI this.layers; this.scene = new THREE.Scene(); // scene THREE.Scene scene overlayed over the map (2D) view - this.camera = new THREE.OrthographicCamera( + this.camera = new THREE.OrthographicCamera( - window.innerWidth / 2, // frustum left plane window.innerWidth / 2, // frustum right plane window.innerHeight / 2, // frustum top plane @@ -25,13 +28,27 @@ export class ViewerMapAPI { // create Map and Layers this.map; - + this.vectorLayer = []; this.initDisplayMap(); - this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); - this.features = []; + this.init = true; + + // avoid duplicating this.lastVectorLayer; this.lastFloorID = 0; this.viewerAPI = viewerAPI; +<<<<<<< Updated upstream +======= + + // direction + this.lastvectorLayerdes = []; + this.lastvectorLayerLeftRight = []; + + this.redraw(); + this.init = false; + + + +>>>>>>> Stashed changes } // Method: Add an event layer to the map (2D) view. @@ -45,6 +62,7 @@ export class ViewerMapAPI { this.map.removeLayer(layer); } +<<<<<<< Updated upstream // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. redraw() { @@ -148,15 +166,107 @@ export class ViewerMapAPI { } } +======= +>>>>>>> Stashed changes // Method scale() { //Get the scale used by the three.js scene overlayed over the map (2D) view. return this.viewerFloorAPI.currentFloor.mapData.density; // (in meter / pixel) } +<<<<<<< Updated upstream +======= - initDisplayMap(){ + initDisplayMap() { + + let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; + var extent = [0, 0, currentMapData.width / currentMapData.density, currentMapData.height / currentMapData.density]; + + // create map + this.map = new ol.Map({ //new ol.control.OverviewMap({ + target: 'map', + view: new ol.View({ + projection: new ol.proj.Projection({ + extent: extent + }), + center: new ol.extent.getCenter(extent), + zoom: 1, + maxZoom: 4, + }), + // controls: controls, + controls: ol.control.defaults({ + rotate: false // hide rotation button + }).extend([ + new ol.control.FullScreen(), // create fullScreen button + new ol.control.ZoomSlider(), + // new ol.control.MousePosition({ + // coordinateFormat: ol.coordinate.createStringXY(4), + // projection: new ol.proj.Projection({ + // extent: extent + // }), + // className: 'custom-mouse-position-testmap', + // target: document.getElementById('mouse-position-testmap') + // }) + ]) + }); + + /* + // testing map origin and center in lon, lan + // -> can not push to list + for (var i =0; i < this.viewerFloorAPI.floors.length; i++){ +>>>>>>> Stashed changes + + // calculate map origin in lon,lan + var current_MapData = this.viewerFloorAPI.floors[i].mapData; + console.log("cuttent_MapData:"+current_MapData); + var mapdata_X_in_meter = (current_MapData.x / current_MapData.density); + console.log("current_MapData.X:"+current_MapData.x); + console.log("current_MapData.density:"+current_MapData.density); + console.log("mapdata_X_in_meter:"+mapdata_X_in_meter); + var mapdata_X_in_lon = mapdata_X_in_meter/87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m + console.log("mapdata_X_in_lon:"+mapdata_X_in_lon); + var mapdata_origin_lon = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon; + console.log("this.viewerFloorAPI.origin[0]:"+this.viewerFloorAPI.origin[0]); + console.log("mapdata_X_in_lon:"+mapdata_X_in_lon); + console.log("mapdata_origin_lon:"+mapdata_origin_lon); + + var mapdata_Y_in_meter = (current_MapData.y / current_MapData.density); + console.log("current_MapData.Y:"+current_MapData.y); + console.log("current_MapData.density:"+current_MapData.density); + console.log("mapdata_Y_in_meter:"+mapdata_Y_in_meter); + var mapdata_Y_in_lan = mapdata_Y_in_meter/111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m + console.log(" mapdata_Y_in_lan:"+ mapdata_Y_in_lan); + var mapdata_origin_lan = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan; + console.log("this.viewerFloorAPI.origin[1]:"+this.viewerFloorAPI.origin[1]); + console.log("mapdata_Y_in_lan:"+ mapdata_Y_in_lan); + console.log("mapdata_origin_lan:"+mapdata_origin_lan); + + // calculate map center in lon,lan + var mapdata_center_lon = mapdata_origin_lon + (1/2)*(current_MapData.width/current_MapData.density); + var mapdata_center_lan = mapdata_origin_lan + (1/2)*(current_MapData.height/current_MapData.density); + console.log("mapdata_origin_lon:"+mapdata_origin_lon); + console.log("current_MapData.width:"+current_MapData.width); + console.log("current_MapData.density:"+current_MapData.density); + console.log("mapdata_origin_lan:"+mapdata_origin_lan); + console.log("current_MapData.height:"+current_MapData.height); + console.log("current_MapData.density:"+current_MapData.density); + console.log("mapdata_center_lon:" + mapdata_center_lon); + console.log("mapdata_center_lan"+mapdata_center_lan); + + console.log("type of mapdata_origin_lon:"+(typeof mapdata_origin_lon)); + console.log("type of mapdata_origin_lan:"+(typeof mapdata_origin_lan)); + console.log("type of mapdata_center_lon:"+ typeof(mapdata_center_lon)); + console.log("type of mapdata_center_lan:"+ typeof(mapdata_center_lan)); + + this.mapdataOriginLon.push(mapdata_origin_lon.toFixed(14)); + this.mapdataOriginLan.push(mapdata_origin_lan.toFixed(14)); + this.mapdataCenterLon.push(mapdata_center_lon.toFixed(14)); + this.mapdataCenterLan.push(mapdata_center_lan.toFixed(14)); + } + */ + +<<<<<<< Updated upstream let currentMapData = this.viewerFloorAPI.floors[this.viewerFloorAPI.currentFloorId].mapData; var extent = [0, 0, currentMapData.width, currentMapData.height]; @@ -211,80 +321,282 @@ export class ViewerMapAPI { }) })) +======= + // converting map pixel to lon, lan + // calculate map origin in lon,lan + var current_MapData0 = this.viewerFloorAPI.floors[0].mapData; + + var mapdata_X_in_meter0 = (current_MapData0.x / current_MapData0.density); + var mapdata_X_in_lon0 = mapdata_X_in_meter0 / 87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m + var mapdata_origin_lon0 = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon0; + + var mapdata_Y_in_meter0 = (current_MapData0.y / current_MapData0.density); + var mapdata_Y_in_lan0 = mapdata_Y_in_meter0 / 111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m + var mapdata_origin_lan0 = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan0; + + // calculate map center in lon,lan + this.mapdata_center_lon0 = mapdata_origin_lon0 + (1 / 2) * (current_MapData0.width / current_MapData0.density); + this.mapdata_center_lan0 = mapdata_origin_lan0 + (1 / 2) * (current_MapData0.height / current_MapData0.density); + + var current_MapData1 = this.viewerFloorAPI.floors[1].mapData; + + var mapdata_X_in_meter1 = (current_MapData1.x / current_MapData1.density); + var mapdata_X_in_lon1 = mapdata_X_in_meter1 / 87000; // temporary a degree of longitude, one degree east or west at lan -37.80299558787142 degree => 87000m + var mapdata_origin_lon1 = this.viewerFloorAPI.origin[0] - mapdata_X_in_lon1; + + var mapdata_Y_in_meter1 = (current_MapData1.y / current_MapData1.density); + var mapdata_Y_in_lan1 = mapdata_Y_in_meter1 / 111000; // temporary a degree of latitude, one degree north or south, is about the same distance anywhere, about 111000m + var mapdata_origin_lan1 = this.viewerFloorAPI.origin[1] - mapdata_Y_in_lan1; + + // calculate map center in lon,lan + this.mapdata_center_lon1 = mapdata_origin_lon1 + (1 / 2) * (current_MapData1.width / current_MapData1.density); + this.mapdata_center_lan1 = mapdata_origin_lan1 + (1 / 2) * (current_MapData1.height / current_MapData1.density); + + // create image layers for each floors + for (var i = 0; i < this.viewerFloorAPI.floors.length; i++) { + let mapData = this.viewerFloorAPI.floors[i].mapData + this.map.addLayer(new ol.layer.Image({ + source: new ol.source.ImageStatic({ + //attributions: '©
OpenLayers', + url: this.baseURL + mapData.name + ".png", + imageExtent: extent, + }) + })) + } + + this.updateDisplayMap((this.viewerFloorAPI.currentFloorId)); + + // create vector layers for each floors + for (var i = 0; i < this.viewerFloorAPI.floors.length; i++) { + let allImages = this.viewerFloorAPI.floors[i].viewerImages; + //console.log("allImages: " + allImages); + var currentMapdata = this.viewerFloorAPI.floors[i].mapData; + + //Modification of the Map data for the 4th floor + if (i === 1) { + currentMapdata.x = currentMapdata.x - 200; + currentMapdata.y = currentMapdata.y - 70; + currentMapdata.density = currentMapdata.density; + } + + var features = []; + + allImages.forEach(image => { + //if its in the 4th floor,add some offset: + if (i === 1) { + var lon = 67000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + var lan = 107000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + } + else { + // add all black points to feature layer + var lon = 87000 * (image.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + var lan = 111000 * (image.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + + } + + var current_feature = new ol.Feature({ + geometry: new ol.geom.Point([lon, lan]), + }) + features.push(current_feature) + }); + + // create the vector layer for black points + var vectorSource = new ol.source.Vector({ + features: features + }); + + this.vectorLayer.push(new ol.layer.Vector({ + source: vectorSource, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 2, + fill: new ol.style.Fill({ color: 'black' }) + }) + }) + })); +>>>>>>> Stashed changes } } - updateDisplayMap(floorIndex){ + updateDisplayMap(floorIndex) { var group = this.map.getLayerGroup(); var layers = group.getLayers(); // set layer visibility layers.forEach(function (layer, i) { - if (i == floorIndex){ + if (i == floorIndex) { layer.setVisible(true); } - else{ + else { layer.setVisible(false); } +<<<<<<< Updated upstream }); +======= + }); +>>>>>>> Stashed changes } -} + // Method : Schedule a redraw of the three.js scene overlayed over the map (2D) view. + redraw() { + console.log("call redraw") -/* -function generateCircularSprite(color) { - var canvas = document.createElement('canvas'); - canvas.height = 16; - canvas.width = 16; - var context = canvas.getContext('2d'); - var centerX = canvas.width / 2; - var centerY = canvas.height / 2; - var radius = 8; - - context.beginPath(); - context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false); - context.fillStyle = color; - context.fill(); - return canvas; + if (this.init != true) { + // // remove prvious vector layers + this.map.removeLayer(this.lastVectorLayerRed); + this.map.removeLayer(this.lastVectorLayer); + } -} + // show layer map + this.updateDisplayMap(this.viewerFloorAPI.currentFloorId); -function generateTriangleCanvas(color){ - var canvasTri = document.createElement('canvas'); - var context = canvasTri.getContext('2d'); + var floorIndex = this.viewerFloorAPI.currentFloorId; + var currentMapdata = this.viewerFloorAPI.currentFloor.mapData; + console.log("--------For Red point-------------"); + console.log("floorIndex: " + floorIndex); + console.log("currentMapdata.x: " + currentMapdata.x); + console.log("currentMapdata.y " + currentMapdata.y); + console.log("currentMapdata.density: " + currentMapdata.density); + console.log("-----------------------------------"); - //Cretae triangle shape - context.beginPath(); - context.moveTo(200, 100); - context.lineTo(300, 300); - context.lineTo(100, 300); - context.closePath(); - - // outline - context.lineWidth = 10; - context.strokeStyle = '0xff0000'; //blue - context.stroke(); + // show current floor black points + var currentVectorLayer = this.vectorLayer[floorIndex] + this.map.addLayer(currentVectorLayer); + + if (floorIndex === 1) { + + //add some offset if it is on 4th floor: + this.redlon = 67000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + this.redlan = 107000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + + } + else { + //adding red points, using this. for show_direction + this.redlon = 87000 * (this.viewerImageAPI.currentImage.pos[0] - this.viewerFloorAPI.origin[0]) + (currentMapdata.x / currentMapdata.density); + this.redlan = 111000 * (this.viewerImageAPI.currentImage.pos[1] - this.viewerFloorAPI.origin[1]) + (currentMapdata.y / currentMapdata.density); + + } + + var redFeature = new ol.Feature({ + geometry: new ol.geom.Point([this.redlon, this.redlan]), + }); + + var vectorSourceRed = new ol.source.Vector({ + features: [redFeature] + }); + + var vectorLayerRed = new ol.layer.Vector({ + source: vectorSourceRed, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 5, + fill: new ol.style.Fill({ color: 'red' }) + }) + }) + }); + + this.map.addLayer(vectorLayerRed); + + + // save last vector layers for deleting next time + this.lastFloorID = this.viewerFloorAPI.currentFloorId; + this.lastVectorLayer = currentVectorLayer; + this.lastVectorLayerRed = vectorLayerRed; + + // disable init + this.show_direction(); + this.init = false; + } + + show_direction() { + + // get direction in degree + var direction_lon = this.viewerViewState.lonov; + + // temporary using 170 degree for correcting the starting zero degree of 2D map + var correct_direction = 170; // degree + var direction = -direction_lon - correct_direction; + + if (this.init != true) { + //this.map.removeLayer(this.lastvectorLayerdes); + this.map.removeLayer(this.lastvectorLayerLeftRight); + } + + // x coordinate of destination point : add cos(to radians) + var redlondes = this.redlon + Math.cos(direction * (Math.PI / 180)) + // y coordinate of destination point : add sin(to radians) + var redlandes = this.redlan + Math.sin(direction * (Math.PI / 180)) + + // draw a point of current direction destination + var desFeature = new ol.Feature({ + geometry: new ol.geom.Point([redlondes, redlandes]), + }); + + /* + var vectorSourcedes = new ol.source.Vector({ + features: [desFeature] + }); + + var vectorLayerdes = new ol.layer.Vector({ + source: vectorSourcedes, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 3, + fill: new ol.style.Fill({ color: 'blue' }) + }) + }) + }); - // the fill color - context.fillStyle = color; - context.fill(); - return context; + + this.map.addLayer(vectorLayerdes); + */ + // draw triangle + var FOV = this.viewerViewState.fov/2; + + var left_redlondes = this.redlon + Math.cos((direction + FOV) * (Math.PI / 180)) + var left_redlandes = this.redlan + Math.sin((direction + FOV) * (Math.PI / 180)) + var right_redlondes = this.redlon + Math.cos((direction - FOV) * (Math.PI / 180)) + var right_redlandes = this.redlan + Math.sin((direction - FOV) * (Math.PI / 180)) + + + var triangleFeatures = new ol.Feature({ + geometry: new ol.geom.LineString([ new ol.geom.Point([this.redlon, this.redlan]), new ol.geom.Point([left_redlondes, left_redlandes]) ]), + style : new ol.style.Style({ stroke : new ol.style.Stroke({color : "red", width: 3 }) }), + }); + + var vectorTriangleDirection = new ol.layer.Vector({ + features: [triangleFeatures], + }); + + this.map.addLayer(vectorTriangleDirection); + + var leftFeature = new ol.Feature({ + geometry: new ol.geom.Point([left_redlondes, left_redlandes]), + }); + + var rightFeature = new ol.Feature({ + geometry: new ol.geom.Point([right_redlondes, right_redlandes]), + }); + + var vectorSourceLeftRight = new ol.source.Vector({ + features: [leftFeature, rightFeature] + }); + + var vectorLayerLeftRight = new ol.layer.Vector({ + source: vectorSourceLeftRight, + style: new ol.style.Style({ + image: new ol.style.Circle({ + radius: 1, + fill: new ol.style.Fill({ color: 'orange' }) + }) + }) + }); + + this.map.addLayer(vectorLayerLeftRight); + + //this.lastvectorLayerdes = vectorLayerdes; + this.lastvectorLayerLeftRight = vectorLayerLeftRight; + } + } -/* -var overviewMapControl = new OverviewMap({ - // see in overviewmap-custom.html to see the custom CSS used - className: 'ol-overviewmap ol-custom-overviewmap', - layers: [ - new TileLayer({ - source: new OSM({ - 'url': - 'https://{a-c}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png' + - '?apikey=Your API key from http://www.thunderforest.com/docs/apikeys/ here', - }), - }) ], - collapseLabel: '\u00BB', - label: '\u00AB', - collapsed: false, -}); -*/ \ No newline at end of file diff --git a/src/js/viewer/ViewerPanoAPI.js b/src/js/viewer/ViewerPanoAPI.js index b26429b..75da6c9 100644 --- a/src/js/viewer/ViewerPanoAPI.js +++ b/src/js/viewer/ViewerPanoAPI.js @@ -2,6 +2,8 @@ import { ViewerViewState } from "./ViewerViewState.js"; import { DEFAULT_FOV, MAX_FOV, MIN_FOV, ZOOM_SPEED, PAN_SPEED } from "./ViewerConfig.js"; +import { EventLayer } from "./EventLayer.js"; +import { EventPosition } from "./EventPosition.js"; export class ViewerPanoAPI { @@ -10,12 +12,18 @@ export class ViewerPanoAPI { this.camera = new THREE.PerspectiveCamera(DEFAULT_FOV, window.innerWidth / window.innerHeight, 1, 1100); this.viewerImageAPI = viewerAPI.image; this.viewerAPI = viewerAPI; - this.sphereRadius = 500; + this.sphereRadius = 10; this.viewerViewState = new ViewerViewState(DEFAULT_FOV, 0, 0); this.lastViewState; this.lastMousePos; + //initialize the eventLayer + this.eventLayer = new EventLayer(); + + // property needed for display method + this.loadedMesh = null; + // Two new event listeneres are called to handle *how far* the user drags this.oPM = (event) => this.onPointerMove(event); this.oPU = () => this.onPointerUp(); @@ -23,15 +31,18 @@ export class ViewerPanoAPI { document.addEventListener('wheel', (event) => this.onDocumentMouseWheel(event)); document.addEventListener('pointerdown', (event) => this.onPointerDown(event)); document.addEventListener('dblclick', (event) => this.onDoubleClick(event)); + $('#pano-viewer').mousedown((event) => this.onRightClick(event)); this.display(this.viewerImageAPI.currentImageId); + + this.viewerMapAPI; } // displays the panorama with idx *ImageNum* in the model display(imageNum) { this.viewerImageAPI.currentImageId = imageNum; - // Create a Sphere for the image texture to be displayed on + // create sphere const sphere = new THREE.SphereGeometry(this.sphereRadius, 60, 40); // invert the geometry on the x-axis so that we look out from the middle of the sphere sphere.scale(-1, 1, 1); @@ -39,23 +50,32 @@ export class ViewerPanoAPI { // load the 360-panorama image data (highest resolution hardcoded for now) const texturePano = this.viewerAPI.textureLoader.load( this.viewerAPI.baseURL + - Math.trunc(this.viewerImageAPI.currentImageId / 100) + + Math.trunc(imageNum / 100) + '/' + - this.viewerImageAPI.currentImageId + + imageNum + 'r3.jpg'); texturePano.mapping = THREE.EquirectangularReflectionMapping; // not sure if this line matters - + // put the texture on the spehere and add it to the scene - const material = new THREE.MeshBasicMaterial({ map: texturePano }); - const mesh = new THREE.Mesh(sphere, material); - - const orientation = this.viewerImageAPI.currentImage.orientation; + const mesh = new THREE.Mesh(sphere, new THREE.MeshBasicMaterial({ map: texturePano })); - mesh.applyQuaternion(orientation); - - this.scene.clear(); + // adjust for orientation offset + mesh.applyQuaternion(this.viewerImageAPI.currentImage.orientation); + // put in the correct position in the scene + const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); + mesh.position.set(localCoord.x, localCoord.y, localCoord.z); + + // check if other panorama was previously already loaded + if (this.loadedMesh != null) { + this.scene.remove(this.loadedMesh); + } + this.scene.add(mesh); + this.loadedMesh = mesh; + + // put camera inside sphere mesh + this.camera.position.set(localCoord.x, localCoord.y, localCoord.z); } camera() { @@ -64,99 +84,107 @@ export class ViewerPanoAPI { // Set the panorama view characteristics. view(lonov, latov, fov) { - let phi = THREE.MathUtils.degToRad(90 - latov); let theta = THREE.MathUtils.degToRad(lonov); - + const x = this.sphereRadius * Math.sin(phi) * Math.cos(theta); const y = this.sphereRadius * Math.cos(phi); const z = this.sphereRadius * Math.sin(phi) * Math.sin(theta); - this.camera.lookAt(x, y, z); + // adjust looking direction for offset of current mesh in scene + const localCoord = this.viewerAPI.toLocal(this.viewerImageAPI.currentImage.pos); + + this.camera.lookAt(x + localCoord.x, y + localCoord.y, z + localCoord.z); this.camera.fov = THREE.MathUtils.clamp(fov, MIN_FOV, MAX_FOV); this.camera.updateProjectionMatrix(); - } - viewInternal() { - this.view(this.viewerViewState.lonov, this.viewerViewState.latov, this.viewerViewState.fov); - } - // ----- Event handling functions for panning, zooming and moving ----- onPointerDown(event) { this.lastMousePos = [event.clientX, event.clientY]; - + this.lastViewState = [this.viewerViewState.lonov, this.viewerViewState.latov]; - document.addEventListener('pointermove', this.oPM); document.addEventListener('pointerup', this.oPU); + } - + // handles continues update of the distance mouse moved onPointerMove(event) { let scalingFactor = this.camera.fov / MAX_FOV; - this.viewerViewState.lonov = (this.lastMousePos[0] - event.clientX) * PAN_SPEED * scalingFactor + this.lastViewState[0]; - this.viewerViewState.latov = (event.clientY - this.lastMousePos[1]) * PAN_SPEED * scalingFactor + this.lastViewState[1]; - - // keep viewerviewstate.latov within bounds because it loops back around at top and bottom - this.viewerViewState.latov = Math.max(-85, Math.min(85, this.viewerViewState.latov)); - - // keep lonov between 0 and 360 - this.viewerViewState.lonov = (this.viewerViewState.lonov + 360) % 360; + this.viewerViewState.setLonov((this.lastMousePos[0] - event.clientX) * PAN_SPEED * scalingFactor + this.lastViewState[0]); + this.viewerViewState.setLatov((event.clientY - this.lastMousePos[1]) * PAN_SPEED * scalingFactor + this.lastViewState[1]); + this.initMap(this.viewerAPI.map).show_direction(); } - + // this event listener is called when the user *ends* moving the picture onPointerUp() { document.removeEventListener('pointermove', this.oPM); document.removeEventListener('pointerup', this.oPU); - + this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); } - + onDocumentMouseWheel(event) { - // the 0.05 constant determines how quick scrolling in and out feels for the user this.viewerViewState.fov = this.camera.fov + event.deltaY * ZOOM_SPEED; - this.viewInternal(); - + this.view(this.viewerViewState.lonov, this.viewerViewState.latov, this.viewerViewState.fov); this.camera.updateProjectionMatrix(); - + this.viewerAPI.propagateEvent("viewed", this.viewerViewState, true); } onDoubleClick(event) { const halfWidth = window.innerWidth / 2; const halfHeight = window.innerHeight / 2; - - const horizontalAngle = (this.viewerViewState.lonov > 270) ? 450 - this.viewerViewState.lonov : -(this.viewerViewState.lonov - 90); - const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the click is - const adjustedHorizontalAngle = horizontalAngle - (horizontalOffset * this.viewerViewState.fov / 2); // line from current position towards where the mouse double clicked (2D birds eye view angle) - - const verticalAngle = -this.viewerViewState.latov + 90 // between [0,180]Deg depending on how far up/down the user looks - const verticalOffset = (event.y - halfHeight) / halfHeight; // between [-1,1] depending how up-down the mouse click is on the screen - const adjustedVerticalAngle = verticalAngle + (verticalOffset * this.viewerViewState.fov / 2); - const realVerticalOffset = (adjustedVerticalAngle - 90) / 90; // between [-1,1] depending how far up/down user looks and clicks + + const horizontalOffset = (event.x - halfWidth) / halfWidth; // scaled between [-1,1] depending how left-right the mouse click is on the screen + const verticalOffset = (event.y - halfHeight) / halfHeight; // scaled between [-1,1] depending how up-down the mouse click is on the screen + const adjustedLonov = ((this.viewerViewState.lonov + (horizontalOffset * this.viewerViewState.fov)) + 360) % 360; + const adjustedLatov = Math.max(-85, Math.min(85, this.viewerViewState.latov - (verticalOffset * this.viewerViewState.fov / 2))); + const MEDIAN_WALKING_DISTANCE = 5; // in meter // distance to be walked along adjustedHorizontalAngle from current location - const distance = MEDIAN_WALKING_DISTANCE - (realVerticalOffset * MEDIAN_WALKING_DISTANCE); + const distance = MEDIAN_WALKING_DISTANCE + ((adjustedLatov / 85) * MEDIAN_WALKING_DISTANCE); + + // convertedAngle converted to represent directions like specified in newLocationFromPointAngle + const convertedAngle = (adjustedLonov < 180) ? -adjustedLonov : 360 - adjustedLonov; - // adjustedHorizontalAngle converted to represent directions like specified in newLocationFromPointAngle - let convertedAngle = (adjustedHorizontalAngle > -90) ? adjustedHorizontalAngle - 90 : adjustedHorizontalAngle + 270; - convertedAngle = THREE.Math.degToRad(convertedAngle); const currentPos = this.viewerImageAPI.currentImage.pos; - const newPos = newLocationFromPointAngle(currentPos[0], currentPos[1], convertedAngle, distance); - + const newPos = newLocationFromPointAngle(currentPos[0], currentPos[1], THREE.Math.degToRad(convertedAngle), distance); this.viewerAPI.move(newPos[0], newPos[1], currentPos[2]); - + this.viewerAPI.propagateEvent("moved", this.viewerImageAPI.currentImage.id, true); } + onRightClick(event) { + //if right mouse is clicked: + if (event.which == 3) { + + //get the current pointer position: + const xy = new EventPosition(event); + + //get the viewing direction: + const location = this.camera.getWorldDirection(); + + //Set up the context menu: + $.contextMenu({ + selector: '#pano-viewer', + items: this.eventLayer.vwr_oncontext(xy, location), + }); + } + } + + initMap(map){ + var viewerMapAPI = map; + return viewerMapAPI + } } // takes in a location (in lot/lat), a direction (as a *angle*[rad, in birds eye view), and a distance (in meters) to move in the direction diff --git a/src/js/viewer/ViewerViewState.js b/src/js/viewer/ViewerViewState.js index 1fe8c8f..6adadcf 100644 --- a/src/js/viewer/ViewerViewState.js +++ b/src/js/viewer/ViewerViewState.js @@ -1,6 +1,6 @@ "use strict"; -export class ViewerViewState{ +export class ViewerViewState { constructor(fov, latov, lonov) { this.fov = fov; // : Number // Field of view (in degrees) @@ -9,5 +9,15 @@ export class ViewerViewState{ this.lonov = lonov; // : Number // View longitude (in degrees) } + + setLatov(newVal) { + // keep viewerviewstate.latov within bounds because it loops back around at top and bottom + this.latov = Math.max(-85, Math.min(85, newVal)); + } + setLonov(newVal) { + // keep lonov between 0 and 360 + this.lonov = (newVal + 360) % 360; + } + } \ No newline at end of file diff --git a/src/libs/contextMenu.min.js b/src/libs/contextMenu.min.js new file mode 100644 index 0000000..f113c0d --- /dev/null +++ b/src/libs/contextMenu.min.js @@ -0,0 +1 @@ +!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):"object"==typeof exports?e(require("jquery")):e(jQuery)}(function(m){"use strict";var a;m.support.htmlMenuitem="HTMLMenuItemElement"in window,m.support.htmlCommand="HTMLCommandElement"in window,m.support.eventSelectstart="onselectstart"in document.documentElement,m.ui&&m.widget||(m.cleanData=(a=m.cleanData,function(e){var t,n,o;for(o=0;null!=e[o];o++){n=e[o];try{(t=m._data(n,"events"))&&t.remove&&m(n).triggerHandler("remove")}catch(e){}}a(e)}));var c=null,d=!1,p=m(window),f=0,h={},x={},v={},g={selector:null,appendTo:null,trigger:"right",autoHide:!1,delay:200,reposition:!0,hideOnSecondTrigger:!1,selectableSubMenu:!1,classNames:{hover:"context-menu-hover",disabled:"context-menu-disabled",visible:"context-menu-visible",notSelectable:"context-menu-not-selectable",icon:"context-menu-icon",iconEdit:"context-menu-icon-edit",iconCut:"context-menu-icon-cut",iconCopy:"context-menu-icon-copy",iconPaste:"context-menu-icon-paste",iconDelete:"context-menu-icon-delete",iconAdd:"context-menu-icon-add",iconQuit:"context-menu-icon-quit",iconLoadingClass:"context-menu-icon-loading"},determinePosition:function(e){if(m.ui&&m.ui.position)e.css("display","block").position({my:"center top",at:"center bottom",of:this,offset:"0 5",collision:"fit"}).css("display","none");else{var t=this.offset();t.top+=this.outerHeight(),t.left+=this.outerWidth()/2-e.outerWidth()/2,e.css(t)}},position:function(e,t,n){var o;if(t||n){if("maintain"===t&&"maintain"===n)o=e.$menu.position();else{var a=e.$menu.offsetParent().offset();o={top:n-a.top,left:t-a.left}}var s=p.scrollTop()+p.height(),i=p.scrollLeft()+p.width(),c=e.$menu.outerHeight(),l=e.$menu.outerWidth();o.top+c>s&&(o.top-=c),o.top<0&&(o.top=0),o.left+l>i&&(o.left-=l),o.left<0&&(o.left=0),e.$menu.css(o)}else e.determinePosition.call(this,e.$menu)},positionSubmenu:function(e){if(void 0!==e)if(m.ui&&m.ui.position)e.css("display","block").position({my:"left top-5",at:"right top",of:this,collision:"flipfit fit"}).css("display","");else{var t={top:-9,left:this.outerWidth()-5};e.css(t)}},zIndex:1,animation:{duration:50,show:"slideDown",hide:"slideUp"},events:{show:m.noop,hide:m.noop,activated:m.noop},callback:null,items:{}},s={timer:null,pageX:null,pageY:null},b={abortevent:function(e){e.preventDefault(),e.stopImmediatePropagation()},contextmenu:function(e){var t=m(this);if("right"===e.data.trigger&&(e.preventDefault(),e.stopImmediatePropagation()),!("right"!==e.data.trigger&&"demand"!==e.data.trigger&&e.originalEvent||!(void 0===e.mouseButton||!e.data||"left"===e.data.trigger&&0===e.mouseButton||"right"===e.data.trigger&&2===e.mouseButton)||t.hasClass("context-menu-active")||t.hasClass("context-menu-disabled"))){if(c=t,e.data.build){var n=e.data.build(c,e);if(!1===n)return;if(e.data=m.extend(!0,{},g,e.data,n||{}),!e.data.items||m.isEmptyObject(e.data.items))throw window.console&&(console.error||console.log).call(console,"No items specified to show in contextMenu"),new Error("No Items specified");e.data.$trigger=c,$.create(e.data)}$.show.call(t,e.data,e.pageX,e.pageY)}},click:function(e){e.preventDefault(),e.stopImmediatePropagation(),m(this).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))},mousedown:function(e){var t=m(this);c&&c.length&&!c.is(t)&&c.data("contextMenu").$menu.trigger("contextmenu:hide"),2===e.button&&(c=t.data("contextMenuActive",!0))},mouseup:function(e){var t=m(this);t.data("contextMenuActive")&&c&&c.length&&c.is(t)&&!t.hasClass("context-menu-disabled")&&(e.preventDefault(),e.stopImmediatePropagation(),(c=t).trigger(m.Event("contextmenu",{data:e.data,pageX:e.pageX,pageY:e.pageY}))),t.removeData("contextMenuActive")},mouseenter:function(e){var t=m(this),n=m(e.relatedTarget),o=m(document);n.is(".context-menu-list")||n.closest(".context-menu-list").length||c&&c.length||(s.pageX=e.pageX,s.pageY=e.pageY,s.data=e.data,o.on("mousemove.contextMenuShow",b.mousemove),s.timer=setTimeout(function(){s.timer=null,o.off("mousemove.contextMenuShow"),(c=t).trigger(m.Event("contextmenu",{data:s.data,pageX:s.pageX,pageY:s.pageY}))},e.data.delay))},mousemove:function(e){s.pageX=e.pageX,s.pageY=e.pageY},mouseleave:function(e){var t=m(e.relatedTarget);if(!t.is(".context-menu-list")&&!t.closest(".context-menu-list").length){try{clearTimeout(s.timer)}catch(e){}s.timer=null}},layerClick:function(a){var s,i,c=m(this).data("contextMenuRoot"),l=a.button,r=a.pageX,u=a.pageY,d=void 0===r;a.preventDefault(),setTimeout(function(){if(d)null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide");else{var e,t="left"===c.trigger&&0===l||"right"===c.trigger&&2===l;if(document.elementFromPoint&&c.$layer){if(c.$layer.hide(),(s=document.elementFromPoint(r-p.scrollLeft(),u-p.scrollTop())).isContentEditable){var n=document.createRange(),o=window.getSelection();n.selectNode(s),n.collapse(!0),o.removeAllRanges(),o.addRange(n)}m(s).trigger(a),c.$layer.show()}if(c.hideOnSecondTrigger&&t&&null!==c.$menu&&void 0!==c.$menu)c.$menu.trigger("contextmenu:hide");else{if(c.reposition&&t)if(document.elementFromPoint){if(c.$trigger.is(s))return void c.position.call(c.$trigger,c,r,u)}else if(i=c.$trigger.offset(),e=m(window),i.top+=e.scrollTop(),i.top<=a.pageY&&(i.left+=e.scrollLeft(),i.left<=a.pageX&&(i.bottom=i.top+c.$trigger.outerHeight(),i.bottom>=a.pageY&&(i.right=i.left+c.$trigger.outerWidth(),i.right>=a.pageX))))return void c.position.call(c.$trigger,c,r,u);s&&t&&c.$trigger.one("contextmenu:hidden",function(){m(s).contextMenu({x:r,y:u,button:l})}),null!=c&&null!==c.$menu&&void 0!==c.$menu&&c.$menu.trigger("contextmenu:hide")}}},50)},keyStop:function(e,t){t.isInput||e.preventDefault(),e.stopPropagation()},key:function(e){var t={};c&&(t=c.data("contextMenu")||{}),void 0===t.zIndex&&(t.zIndex=0);var n=0,o=function(e){""!==e.style.zIndex?n=e.style.zIndex:null!==e.offsetParent&&void 0!==e.offsetParent?o(e.offsetParent):null!==e.parentElement&&void 0!==e.parentElement&&o(e.parentElement)};if(o(e.target),!(t.$menu&&parseInt(n,10)>parseInt(t.$menu.css("zIndex"),10))){switch(e.keyCode){case 9:case 38:if(b.keyStop(e,t),t.isInput){if(9===e.keyCode&&e.shiftKey)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));if(38===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault()}else if(9!==e.keyCode||e.shiftKey)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("prevcommand"));break;case 40:if(b.keyStop(e,t),!t.isInput)return void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(9===e.keyCode)return e.preventDefault(),t.$selected&&t.$selected.find("input, textarea, select").blur(),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("nextcommand"));if(40===e.keyCode&&"checkbox"===t.$selected.find("input, textarea, select").prop("type"))return void e.preventDefault();break;case 37:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;if(!t.$selected.parent().hasClass("context-menu-root")){var a=t.$selected.parent().parent();return t.$selected.trigger("contextmenu:blur"),void(t.$selected=a)}break;case 39:if(b.keyStop(e,t),t.isInput||!t.$selected||!t.$selected.length)break;var s=t.$selected.data("contextMenu")||{};if(s.$menu&&t.$selected.hasClass("context-menu-submenu"))return t.$selected=null,s.$selected=null,void s.$menu.trigger("nextcommand");break;case 35:case 36:return t.$selected&&t.$selected.find("input, textarea, select").length?void 0:((t.$selected&&t.$selected.parent()||t.$menu).children(":not(."+t.classNames.disabled+", ."+t.classNames.notSelectable+")")[36===e.keyCode?"first":"last"]().trigger("contextmenu:focus"),void e.preventDefault());case 13:if(b.keyStop(e,t),t.isInput){if(t.$selected&&!t.$selected.is("textarea, select"))return void e.preventDefault();break}return void(void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger("mouseup"));case 32:case 33:case 34:return void b.keyStop(e,t);case 27:return b.keyStop(e,t),void(null!==t.$menu&&void 0!==t.$menu&&t.$menu.trigger("contextmenu:hide"));default:var i=String.fromCharCode(e.keyCode).toUpperCase();if(t.accesskeys&&t.accesskeys[i])return void t.accesskeys[i].$node.trigger(t.accesskeys[i].$menu?"contextmenu:focus":"mouseup")}e.stopPropagation(),void 0!==t.$selected&&null!==t.$selected&&t.$selected.trigger(e)}},prevItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.prev().length?t.$selected.prev():a.last(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.prev().length?s.prev():a.last()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},nextItem:function(e){e.stopPropagation();var t=m(this).data("contextMenu")||{},n=m(this).data("contextMenuRoot")||{};if(t.$selected){var o=t.$selected;(t=t.$selected.parent().data("contextMenu")||{}).$selected=o}for(var a=t.$menu.children(),s=t.$selected&&t.$selected.next().length?t.$selected.next():a.first(),i=s;s.hasClass(n.classNames.disabled)||s.hasClass(n.classNames.notSelectable)||s.is(":hidden");)if((s=s.next().length?s.next():a.first()).is(i))return;t.$selected&&b.itemMouseleave.call(t.$selected.get(0),e),b.itemMouseenter.call(s.get(0),e);var c=s.find("input, textarea, select");c.length&&c.focus()},focusInput:function(){var e=m(this).closest(".context-menu-item"),t=e.data(),n=t.contextMenu,o=t.contextMenuRoot;o.$selected=n.$selected=e,o.isInput=n.isInput=!0},blurInput:function(){var e=m(this).closest(".context-menu-item").data(),t=e.contextMenu;e.contextMenuRoot.isInput=t.isInput=!1},menuMouseenter:function(){m(this).data().contextMenuRoot.hovering=!0},menuMouseleave:function(e){var t=m(this).data().contextMenuRoot;t.$layer&&t.$layer.is(e.relatedTarget)&&(t.hovering=!1)},itemMouseenter:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;a.hovering=!0,e&&a.$layer&&a.$layer.is(e.relatedTarget)&&(e.preventDefault(),e.stopImmediatePropagation()),(o.$menu?o:a).$menu.children("."+a.classNames.hover).trigger("contextmenu:blur").children(".hover").trigger("contextmenu:blur"),t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)?o.$selected=null:t.trigger("contextmenu:focus")},itemMouseleave:function(e){var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;if(a!==o&&a.$layer&&a.$layer.is(e.relatedTarget))return void 0!==a.$selected&&null!==a.$selected&&a.$selected.trigger("contextmenu:blur"),e.preventDefault(),e.stopImmediatePropagation(),void(a.$selected=o.$selected=o.$node);o&&o.$menu&&o.$menu.hasClass("context-menu-visible")||t.trigger("contextmenu:blur")},itemClick:function(e){var t,n=m(this),o=n.data(),a=o.contextMenu,s=o.contextMenuRoot,i=o.contextMenuKey;if(!(!a.items[i]||n.is("."+s.classNames.disabled+", .context-menu-separator, ."+s.classNames.notSelectable)||n.is(".context-menu-submenu")&&!1===s.selectableSubMenu)){if(e.preventDefault(),e.stopImmediatePropagation(),m.isFunction(a.callbacks[i])&&Object.prototype.hasOwnProperty.call(a.callbacks,i))t=a.callbacks[i];else{if(!m.isFunction(s.callback))return;t=s.callback}!1!==t.call(s.$trigger,i,s,e)?s.$menu.trigger("contextmenu:hide"):s.$menu.parent().length&&$.update.call(s.$trigger,s)}},inputClick:function(e){e.stopImmediatePropagation()},hideMenu:function(e,t){var n=m(this).data("contextMenuRoot");$.hide.call(n.$trigger,n,t&&t.force)},focusItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;t.hasClass(a.classNames.disabled)||t.hasClass(a.classNames.notSelectable)||(t.addClass([a.classNames.hover,a.classNames.visible].join(" ")).parent().find(".context-menu-item").not(t).removeClass(a.classNames.visible).filter("."+a.classNames.hover).trigger("contextmenu:blur"),o.$selected=a.$selected=t,o&&o.$node&&o.$node.hasClass("context-menu-submenu")&&o.$node.addClass(a.classNames.hover),o.$node&&a.positionSubmenu.call(o.$node,o.$menu))},blurItem:function(e){e.stopPropagation();var t=m(this),n=t.data(),o=n.contextMenu,a=n.contextMenuRoot;o.autoHide&&t.removeClass(a.classNames.visible),t.removeClass(a.classNames.hover),o.$selected=null}},$={show:function(n,e,t){var o=m(this),a={};if(m("#context-menu-layer").trigger("mousedown"),n.$trigger=o,!1!==n.events.show.call(o,n))if(!1!==$.update.call(o,n)){if(n.position.call(o,n,e,t),n.zIndex){var s=n.zIndex;"function"==typeof n.zIndex&&(s=n.zIndex.call(o,n)),a.zIndex=function(e){for(var t=0,n=e;t=Math.max(t,parseInt(n.css("z-index"),10)||0),(n=n.parent())&&n.length&&!(-1<"html body".indexOf(n.prop("nodeName").toLowerCase())););return t}(o)+s}$.layer.call(n.$menu,n,a.zIndex),n.$menu.find("ul").css("zIndex",a.zIndex+1),n.$menu.css(a)[n.animation.show](n.animation.duration,function(){o.trigger("contextmenu:visible"),$.activated(n),n.events.activated(n)}),o.data("contextMenu",n).addClass("context-menu-active"),m(document).off("keydown.contextMenu").on("keydown.contextMenu",b.key),n.autoHide&&m(document).on("mousemove.contextMenuAutoHide",function(e){var t=o.offset();t.right=t.left+o.outerWidth(),t.bottom=t.top+o.outerHeight(),!n.$layer||n.hovering||e.pageX>=t.left&&e.pageX<=t.right&&e.pageY>=t.top&&e.pageY<=t.bottom||setTimeout(function(){n.hovering||null===n.$menu||void 0===n.$menu||n.$menu.trigger("contextmenu:hide")},50)})}else c=null;else c=null},hide:function(t,e){var n=m(this);if(t||(t=n.data("contextMenu")||{}),e||!t.events||!1!==t.events.hide.call(n,t)){if(n.removeData("contextMenu").removeClass("context-menu-active"),t.$layer){setTimeout((o=t.$layer,function(){o.remove()}),10);try{delete t.$layer}catch(e){t.$layer=null}}var o;c=null,t.$menu.find("."+t.classNames.hover).trigger("contextmenu:blur"),t.$selected=null,t.$menu.find("."+t.classNames.visible).removeClass(t.classNames.visible),m(document).off(".contextMenuAutoHide").off("keydown.contextMenu"),t.$menu&&t.$menu[t.animation.hide](t.animation.duration,function(){t.build&&(t.$menu.remove(),m.each(t,function(e){switch(e){case"ns":case"selector":case"build":case"trigger":return!0;default:t[e]=void 0;try{delete t[e]}catch(e){}return!0}})),setTimeout(function(){n.trigger("contextmenu:hidden")},10)})}},create:function(r,u){function d(e){var t=m("");if(e._accesskey)e._beforeAccesskey&&t.append(document.createTextNode(e._beforeAccesskey)),m("").addClass("context-menu-accesskey").text(e._accesskey).appendTo(t),e._afterAccesskey&&t.append(document.createTextNode(e._afterAccesskey));else if(e.isHtmlName){if(void 0!==e.accesskey)throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");t.html(e.name)}else t.text(e.name);return t}void 0===u&&(u=r),r.$menu=m('
    ').addClass(r.className||"").data({contextMenu:r,contextMenuRoot:u}),m.each(["callbacks","commands","inputs"],function(e,t){r[t]={},u[t]||(u[t]={})}),u.accesskeys||(u.accesskeys={}),m.each(r.items,function(n,o){var e=m('
  • ').addClass(o.className||""),t=null,a=null;if(e.on("click",m.noop),"string"!=typeof o&&"cm_separator"!==o.type||(o={type:"cm_seperator"}),o.$node=e.data({contextMenu:r,contextMenuRoot:u,contextMenuKey:n}),void 0!==o.accesskey)for(var s,i=function(e){for(var t,n=e.split(/\s+/),o=[],a=0;t=n[a];a++)t=t.charAt(0).toUpperCase(),o.push(t);return o}(o.accesskey),c=0;s=i[c];c++)if(!u.accesskeys[s]){var l=(u.accesskeys[s]=o).name.match(new RegExp("^(.*?)("+s+")(.*)$","i"));l&&(o._beforeAccesskey=l[1],o._accesskey=l[2],o._afterAccesskey=l[3]);break}if(o.type&&v[o.type])v[o.type].call(e,o,r,u),m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)});else{switch("cm_seperator"===o.type?e.addClass("context-menu-separator "+u.classNames.notSelectable):"html"===o.type?e.addClass("context-menu-html "+u.classNames.notSelectable):"sub"!==o.type&&o.type?(t=m("").appendTo(e),d(o).appendTo(t),e.addClass("context-menu-input"),r.hasTypes=!0,m.each([r,u],function(e,t){t.commands[n]=o,t.inputs[n]=o})):o.items&&(o.type="sub"),o.type){case"cm_seperator":break;case"text":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t);break;case"textarea":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").appendTo(t),o.height&&a.height(o.height);break;case"checkbox":a=m('').attr("name","context-menu-input-"+n).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"radio":a=m('').attr("name","context-menu-input-"+o.radio).val(o.value||"").prop("checked",!!o.selected).prependTo(t);break;case"select":a=m('').attr("name","context-menu-input-"+n).appendTo(t),o.options&&(m.each(o.options,function(e,t){m("").val(e).text(t).appendTo(a)}),a.val(o.selected));break;case"sub":d(o).appendTo(e),o.appendTo=o.$node,e.data("contextMenu",o).addClass("context-menu-submenu"),o.callback=null,"function"==typeof o.items.then?$.processPromises(o,u,o.items):$.create(o,u);break;case"html":m(o.html).appendTo(e);break;default:m.each([r,u],function(e,t){t.commands[n]=o,!m.isFunction(o.callback)||void 0!==t.callbacks[n]&&void 0!==r.type||(t.callbacks[n]=o.callback)}),d(o).appendTo(e)}o.type&&"sub"!==o.type&&"html"!==o.type&&"cm_seperator"!==o.type&&(a.on("focus",b.focusInput).on("blur",b.blurInput),o.events&&a.on(o.events,r)),o.icon&&(m.isFunction(o.icon)?o._icon=o.icon.call(this,this,e,n,o):"string"!=typeof o.icon||"fab "!==o.icon.substring(0,4)&&"fas "!==o.icon.substring(0,4)&&"far "!==o.icon.substring(0,4)&&"fal "!==o.icon.substring(0,4)?"string"==typeof o.icon&&"fa-"===o.icon.substring(0,3)?o._icon=u.classNames.icon+" "+u.classNames.icon+"--fa fa "+o.icon:o._icon=u.classNames.icon+" "+u.classNames.icon+"-"+o.icon:(e.addClass(u.classNames.icon+" "+u.classNames.icon+"--fa5"),o._icon=m('')),"string"==typeof o._icon?e.addClass(o._icon):e.prepend(o._icon))}o.$input=a,o.$label=t,e.appendTo(r.$menu),!r.hasTypes&&m.support.eventSelectstart&&e.on("selectstart.disableTextSelect",b.abortevent)}),r.$node||r.$menu.css("display","none").addClass("context-menu-root"),r.$menu.appendTo(r.appendTo||document.body)},resize:function(e,t){var n;e.css({position:"absolute",display:"block"}),e.data("width",(n=e.get(0)).getBoundingClientRect?Math.ceil(n.getBoundingClientRect().width):e.outerWidth()+1),e.css({position:"static",minWidth:"0px",maxWidth:"100000px"}),e.find("> li > ul").each(function(){$.resize(m(this),!0)}),t||e.find("ul").addBack().css({position:"",display:"",minWidth:"",maxWidth:""}).outerWidth(function(){return m(this).data("width")})},update:function(i,c){var l=this;void 0===c&&(c=i,$.resize(i.$menu));var r=!1;return i.$menu.children().each(function(){var e,t=m(this),n=t.data("contextMenuKey"),o=i.items[n],a=m.isFunction(o.disabled)&&o.disabled.call(l,n,c)||!0===o.disabled;if((e=m.isFunction(o.visible)?o.visible.call(l,n,c):void 0===o.visible||!0===o.visible)&&(r=!0),t[e?"show":"hide"](),t[a?"addClass":"removeClass"](c.classNames.disabled),m.isFunction(o.icon)){t.removeClass(o._icon);var s=o.icon.call(this,l,t,n,o);"string"==typeof s?t.addClass(s):t.prepend(s)}if(o.type)switch(t.find("input, select, textarea").prop("disabled",a),o.type){case"text":case"textarea":o.$input.val(o.value||"");break;case"checkbox":case"radio":o.$input.val(o.value||"").prop("checked",!!o.selected);break;case"select":o.$input.val((0===o.selected?"0":o.selected)||"")}o.$menu&&($.update.call(l,o,c)&&(r=!0))}),r},layer:function(e,t){var n=e.$layer=m('
    ').css({height:p.height(),width:p.width(),display:"block",position:"fixed","z-index":t,top:0,left:0,opacity:0,filter:"alpha(opacity=0)","background-color":"#000"}).data("contextMenuRoot",e).insertBefore(this).on("contextmenu",b.abortevent).on("mousedown",b.layerClick);return void 0===document.body.style.maxWidth&&n.css({position:"absolute",height:m(document).height()}),n},processPromises:function(e,t,n){function o(e,t,n){void 0===n?(n={error:{name:"No items and no error item",icon:"context-menu-icon context-menu-icon-quit"}},window.console&&(console.error||console.log).call(console,'When you reject a promise, provide an "items" object, equal to normal sub-menu items')):"string"==typeof n&&(n={error:{name:n}}),a(e,t,n)}function a(e,t,n){void 0!==t.$menu&&t.$menu.is(":visible")&&(e.$node.removeClass(t.classNames.iconLoadingClass),e.items=n,$.create(e,t,!0),$.update(e,t),t.positionSubmenu.call(e.$node,e.$menu))}e.$node.addClass(t.classNames.iconLoadingClass),n.then(function(e,t,n){void 0===n&&o(void 0),a(e,t,n)}.bind(this,e,t),o.bind(this,e,t))},activated:function(e){var t=e.$menu,n=t.offset(),o=m(window).height(),a=m(window).scrollTop(),s=t.height();oa+o)&&t.css({top:a+"px"})}};function l(e){return e.id&&m('label[for="'+e.id+'"]').val()||e.name}m.fn.contextMenu=function(e){var t=this,n=e;if(0 * @license MIT */ -var n=r(8),i=r(3),o=r(9);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function d(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return z(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return U(t).length;default:if(n)return z(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return C(this,e,r);case"ascii":return O(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return T(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return I(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:v(t,e,r,n,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):v(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function v(t,e,r,n,i){var o,a=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,l/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var c=-1;for(o=r;os&&(r=s-l),o=r;o>=0;o--){for(var h=!0,p=0;pi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function T(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function C(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=4096)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},l.prototype.compare=function(t,e,r,n,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r),h=0;hi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return _(this,t,e,r);case"utf8":case"utf-8":return b(this,t,e,r);case"ascii":return x(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return S(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function O(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,r,n,i,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function F(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function A(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function k(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function j(t,e,r,n,o){return o||k(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function N(t,e,r,n,o){return o||k(t,0,r,8),i.write(t,e,r,n,52,8),r+8}l.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},l.prototype.readUInt8=function(t,e){return e||L(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||L(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||L(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||L(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||L(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},l.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||L(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return e||L(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||L(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(t,e){e||L(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(t,e){return e||L(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||L(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||L(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||L(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||M(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},l.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):A(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+r},l.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);M(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},l.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):F(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):F(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):A(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):A(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,r){return j(this,t,e,!0,r)},l.prototype.writeFloatBE=function(t,e,r){return j(this,t,e,!1,r)},l.prototype.writeDoubleLE=function(t,e,r){return N(this,t,e,!0,r)},l.prototype.writeDoubleBE=function(t,e,r){return N(this,t,e,!1,r)},l.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function U(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(D,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function B(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(4))},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=u(t),a=n[0],s=n[1],l=new o(function(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,h=s>0?a-4:a;for(r=0;r>16&255,l[c++]=e>>8&255,l[c++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[c++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[c++]=e>>8&255,l[c++]=255&e);return l},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],a=0,s=r-i;as?s:a+16383));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var i,o,a=[],s=e;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";function n(){return function(){throw new Error("Unimplemented abstract method.")}()}r.r(e);var i=0;function o(t){return t.ol_uid||(t.ol_uid=String(++i))}var a,s=(a=function(t,e){return(a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){function r(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),l=function(t){function e(e){var r=this,n="Assertion failed. See https://openlayers.org/en/"+("v"+"6.5.0".split("-")[0])+"/doc/errors/#"+e+" for details.";return(r=t.call(this,n)||this).code=e,r.name="AssertionError",r.message=n,r}return s(e,t),e}(Error);function u(t){t.stopPropagation()}var c=function(){function t(t){this.propagationStopped,this.type=t,this.target=null}return t.prototype.preventDefault=function(){this.propagationStopped=!0},t.prototype.stopPropagation=function(){this.propagationStopped=!0},t}(),h="propertychange",p=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();function f(t,e,r){for(var n,i,o=r||d,a=0,s=t.length,l=!1;a>1)],e))<0?a=n+1:(s=n,l=!i);return l?a:~a}function d(t,e){return t>e?1:t=0}function y(t,e,r){var n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;var i=void 0;if(r>0){for(i=1;i>>0,i=0;i0||r&&0===o)}))}function S(){return!0}function E(){return!1}function T(){}function C(t){var e,r,n,i=!1;return function(){var o=Array.prototype.slice.call(arguments);return i&&this===n&&b(o,r)||(i=!0,n=this,r=o,e=t.apply(this,arguments)),e}}var O="function"==typeof Object.assign?Object.assign:function(t,e){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var r=Object(t),n=1,i=arguments.length;n0)},e.prototype.removeEventListener=function(t,e){var r=this.listeners_&&this.listeners_[t];if(r){var n=r.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(r[n]=T,++this.pendingRemovals_[t]):(r.splice(n,1),0===r.length&&delete this.listeners_[t]))}},e}(p),F="change",A="error",k="clear",j="contextmenu",N="click",D="dblclick",G="dragenter",z="dragover",U="drop",B="keydown",V="keypress",Y="load",W="resize",q="touchmove",X="wheel";function Z(t,e,r,n,i){if(n&&n!==t&&(r=r.bind(n)),i){var o=r;r=function(){t.removeEventListener(e,r),o.apply(this,arguments)}}var a={target:t,type:e,listener:r};return t.addEventListener(e,r),a}function K(t,e,r,n){return Z(t,e,r,n,!0)}function H(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),P(t))}var $=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function J(t){if(Array.isArray(t))for(var e=0,r=t.length;e0;)this.pop()},e.prototype.extend=function(t){for(var e=0,r=t.length;ei&&(l|=qt),so&&(l|=Wt),l===Vt&&(l=Yt),l}function ne(){return[1/0,1/0,-1/0,-1/0]}function ie(t,e,r,n,i){return i?(i[0]=t,i[1]=e,i[2]=r,i[3]=n,i):[t,e,r,n]}function oe(t){return ie(1/0,1/0,-1/0,-1/0,t)}function ae(t,e){var r=t[0],n=t[1];return ie(r,n,r,n,e)}function se(t,e){return fe(oe(e),t)}function le(t,e,r,n,i){return de(oe(i),t,e,r,n)}function ue(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function ce(t,e,r){return Math.abs(t[0]-e[0])t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function pe(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function fe(t,e){for(var r=0,n=e.length;re[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function Ie(t){return t[2]=a&&g<=l),n||!(o&qt)||i&qt||(n=(y=f-(p-l)*d)>=s&&y<=u),n||!(o&Xt)||i&Xt||(n=(g=p-(f-s)/d)>=a&&g<=l),n||!(o&Zt)||i&Zt||(n=(y=f-(p-a)*d)>=s&&y<=u)}return n}function Ae(t,e,r,n){var i=[];if(n>1)for(var o=t[2]-t[0],a=t[3]-t[1],s=0;s=r[2])){var i=Pe(r),o=Math.floor((n[0]-r[0])/i)*i;t[0]-=o,t[2]-=o}return t}var je=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||wt[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();function Ne(t,e,r){return Math.min(Math.max(t,e),r)}var De="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},Ge="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function ze(t,e,r,n,i,o){var a=i-r,s=o-n;if(0!==a||0!==s){var l=((t-r)*a+(e-n)*s)/(a*a+s*s);l>1?(r=i,n=o):l>0&&(r+=a*l,n+=s*l)}return Ue(t,e,r,n)}function Ue(t,e,r,n){var i=r-t,o=n-e;return i*i+o*o}function Be(t){for(var e=t.length,r=0;ri&&(i=a,n=o)}if(0===i)return null;var s=t[n];t[n]=t[r],t[r]=s;for(var l=r+1;l=0;p--){h[p]=t[p][e]/t[p][p];for(var f=p-1;f>=0;f--)t[f][e]-=t[f][p]*h[p]}return h}function Ve(t){return 180*t/Math.PI}function Ye(t){return t*Math.PI/180}function We(t,e){var r=t%e;return r*e<0?r+e:r}function qe(t,e,r){return t+r*(e-t)}var Xe=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ze=6378137*Math.PI,Ke=[-Ze,-Ze,Ze,Ze],He=[-180,-85,180,85],$e=6378137*Math.log(Math.tan(Math.PI/2)),Je=function(t){function e(e){return t.call(this,{code:e,units:St.METERS,extent:Ke,global:!0,worldExtent:He,getPointResolution:function(t,e){return t/De(e[1]/6378137)}})||this}return Xe(e,t),e}(je),Qe=[new Je("EPSG:3857"),new Je("EPSG:102100"),new Je("EPSG:102113"),new Je("EPSG:900913"),new Je("http://www.opengis.net/gml/srs/epsg.xml#3857")];function tr(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;a$e?s=$e:s<-$e&&(s=-$e),o[a+1]=s}return o}function er(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;ae?n:new Array(1+e-i).join("0")+n}function br(t,e){for(var r=(""+t).split("."),n=(""+e).split("."),i=0;ia)return 1;if(a>o)return-1}return 0}function xr(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function wr(t,e){var r=e.getRadius(),n=e.getCenter(),i=n[0],o=n[1],a=t[0]-i,s=t[1]-o;0===a&&0===s&&(a=1);var l=Math.sqrt(a*a+s*s);return[i+r*a/l,o+r*s/l]}function Sr(t,e){var r,n,i=t[0],o=t[1],a=e[0],s=e[1],l=a[0],u=a[1],c=s[0],h=s[1],p=c-l,f=h-u,d=0===p&&0===f?0:(p*(i-l)+f*(o-u))/(p*p+f*f||0);return d<=0?(r=l,n=u):d>=1?(r=c,n=h):(r=l+d*p,n=u+d*f),[r,n]}function Er(t,e,r){var n=We(e+180,360)-180,i=Math.abs(3600*n),o=r||0,a=Math.pow(10,o),s=Math.floor(i/3600),l=Math.floor((i-3600*s)/60),u=i-3600*s-60*l;return(u=Math.ceil(u*a)/a)>=60&&(u=0,l+=1),l>=60&&(l=0,s+=1),s+"° "+_r(l,2)+"′ "+_r(u,2,o)+"″"+(0==n?"":" "+t.charAt(n<0?1:0))}function Tr(t,e,r){return t?e.replace("{x}",t[0].toFixed(r)).replace("{y}",t[1].toFixed(r)):""}function Cr(t,e){for(var r=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){r=!1;break}return r}function Or(t,e){var r=Math.cos(e),n=Math.sin(e),i=t[0]*r-t[1]*n,o=t[1]*r+t[0]*n;return t[0]=i,t[1]=o,t}function Pr(t,e){return t[0]*=e,t[1]*=e,t}function Rr(t,e){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}function Ir(t,e){return Math.sqrt(Rr(t,e))}function Lr(t,e){return Rr(t,Sr(t,e))}function Mr(t,e){return Tr(t,"{x}, {y}",e)}function Fr(t,e){if(e.canWrapX()){var r=Pe(e.getExtent()),n=Ar(t,e,r);n&&(t[0]-=n*r)}return t}function Ar(t,e,r){var n=e.getExtent(),i=0;if(e.canWrapX()&&(t[0]n[2])){var o=r||Pe(n);i=Math.floor((t[0]-n[0])/o)}return i}function kr(t,e,r){var n;if(void 0!==e){for(var i=0,o=t.length;i=2;--u)a[s+u]=e[s+u]}return a}}function Wr(t,e,r,n){var i=Gr(t),o=Gr(e);fr(i,o,Yr(r)),fr(o,i,Yr(n))}function qr(t,e){return Hr(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")}function Xr(t,e){if(t===e)return!0;var r=t.getUnits()===e.getUnits();return(t.getCode()===e.getCode()||Zr(t,e)===kr)&&r}function Zr(t,e){var r=dr(t.getCode(),e.getCode());return r||(r=jr),r}function Kr(t,e){return Zr(Gr(t),Gr(e))}function Hr(t,e,r){return Kr(e,r)(t,void 0,t.length)}function $r(t,e,r,n){return Ae(t,Kr(e,r),void 0,n)}var Jr=null;function Qr(t){Jr=Gr(t)}function tn(){return Jr}function en(t,e){return Jr?Hr(t,e,Jr):t}function rn(t,e){return Jr?Hr(t,Jr,e):t}function nn(t,e){return Jr?$r(t,e,Jr):t}function on(t,e){return Jr?$r(t,Jr,e):t}function an(t,e,r){return function(n){var i,o,a=n[0],s=n[1];if(t.canWrapX()){var l=t.getExtent(),u=Pe(l);(o=Ar(n,t,u))&&(a-=o*u),a=Ne(a,l[0],l[2]),s=Ne(s,l[1],l[3]),i=r([a,s])}else i=r(n);return o&&e.canWrapX()&&(i[0]+=o*Pe(e.getExtent())),i}}function sn(){Ur(Qe),Ur(ar),Br(ar,Qe,tr,er)}function ln(t,e,r,n,i,o){for(var a=o||[],s=0,l=e;l1)s=r;else{if(p>0){for(var f=0;fi&&(i=u),o=s,a=l}return i}function xn(t,e,r,n,i){for(var o=0,a=r.length;o0;){for(var h=u.pop(),p=u.pop(),f=0,d=t[p],g=t[p+1],y=t[h],m=t[h+1],v=p+n;vf&&(c=v,f=_)}f>i&&(l[(c-e)/n]=1,p+ni&&(o[a++]=u,o[a++]=c,s=u,l=c);return u==s&&c==l||(o[a++]=u,o[a++]=c),a}function Fn(t,e){return e*Math.round(t/e)}function An(t,e,r,n,i,o,a){if(e==r)return a;var s,l,u=Fn(t[e],i),c=Fn(t[e+1],i);e+=n,o[a++]=u,o[a++]=c;do{if(s=Fn(t[e],i),l=Fn(t[e+1],i),(e+=n)==r)return o[a++]=s,o[a++]=l,a}while(s==u&&l==c);for(;e0&&g>f)&&(d<0&&y0&&y>d)?(s=h,l=p):(o[a++]=s,o[a++]=l,u=s,c=l,s=h,l=p)}}return o[a++]=s,o[a++]=l,a}function kn(t,e,r,n,i,o,a,s){for(var l=0,u=r.length;lo&&(u-s)*(o-l)-(i-s)*(c-l)>0&&a++:c<=o&&(u-s)*(o-l)-(i-s)*(c-l)<0&&a--,s=u,l=c}return 0!==a}function Kn(t,e,r,n,i,o){if(0===r.length)return!1;if(!Zn(t,e,r[0],n,i,o))return!1;for(var a=1,s=r.length;ax&&Kn(t,e,r,n,u=(c+h)/2,g)&&(b=u,x=w),c=h}return isNaN(b)&&(b=i[o]),a?(a.push(b,g,x),a):[b,g,x]}function Jn(t,e,r,n,i){for(var o=[],a=0,s=r.length;a=i[0]&&o[2]<=i[2]||(o[1]>=i[1]&&o[3]<=i[3]||Qn(t,e,r,n,(function(t,e){return Fe(i,t,e)})))))}function ei(t,e,r,n,i){for(var o=0,a=r.length;o0}function si(t,e,r,n,i){for(var o=void 0!==i&&i,a=0,s=r.length;at)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){n()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var r=this.transitionStarts_[t];if(r){if(-1===r)return 1}else r=e,this.transitionStarts_[t]=r;var n=e-r+1e3/60;return n>=this.transition_?1:no(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(M);function uo(t,e,r){var n=r&&r.length?r.shift():Yi?new OffscreenCanvas(t||300,e||300):document.createElement("canvas");return t&&(n.width=t),e&&(n.height=e),n.getContext("2d")}function co(t){var e=t.offsetWidth,r=getComputedStyle(t);return e+=parseInt(r.marginLeft,10)+parseInt(r.marginRight,10)}function ho(t){var e=t.offsetHeight,r=getComputedStyle(t);return e+=parseInt(r.marginTop,10)+parseInt(r.marginBottom,10)}function po(t,e){var r=e.parentNode;r&&r.replaceChild(t,e)}function fo(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function go(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function yo(t,e){for(var r=t.childNodes,n=0;;++n){var i=r[n],o=e[n];if(!i&&!o)break;i!==o&&(i?o?t.insertBefore(o,i):(t.removeChild(i),--n):t.appendChild(o))}}var mo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var vo=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.crossOrigin_=i,s.src_=n,s.key=n,s.image_=new Image,null!==i&&(s.image_.crossOrigin=i),s.unlisten_=null,s.tileLoadFunction_=o,s}return mo(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){var t;this.state=eo,this.unlistenImage_(),this.image_=((t=uo(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=to:this.state=ro,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==eo&&(this.state=Ji,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==Ji&&(this.state=Qi,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(lo),_o=function(){function t(t,e,r){this.decay_=t,this.minVelocity_=e,this.delay_=r,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[r+2]>t;)r-=3;var n=this.points_[e+2]-this.points_[r+2];if(n<1e3/60)return!1;var i=this.points_[e]-this.points_[r],o=this.points_[e+1]-this.points_[r+1];return this.angle_=Math.atan2(o,i),this.initialVelocity_=Math.sqrt(i*i+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),bo=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,xo=/^([a-z]*)$|^hsla?\(.*\)$/i;function wo(t){return"string"==typeof t?t:Ro(t)}function So(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var r=getComputedStyle(e).color;return document.body.removeChild(e),r}return""}var Eo,To,Co=(Eo={},To=0,function(t){var e;if(Eo.hasOwnProperty(t))e=Eo[t];else{if(To>=1024){var r=0;for(var n in Eo)0==(3&r++)&&(delete Eo[n],--To)}e=function(t){var e,r,n,i,o;if(xo.exec(t)&&(t=So(t)),bo.exec(t)){var a=t.length-1,s=void 0;s=a<=4?1:2;var l=4===a||8===a;e=parseInt(t.substr(1+0*s,s),16),r=parseInt(t.substr(1+1*s,s),16),n=parseInt(t.substr(1+2*s,s),16),i=l?parseInt(t.substr(1+3*s,s),16):255,1==s&&(e=(e<<4)+e,r=(r<<4)+r,n=(n<<4)+n,l&&(i=(i<<4)+i)),o=[e,r,n,i/255]}else 0==t.indexOf("rgba(")?Po(o=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((o=t.slice(4,-1).split(",").map(Number)).push(1),Po(o)):pt(!1,14);return o}(t),Eo[t]=e,++To}return e});function Oo(t){return Array.isArray(t)?t:Co(t)}function Po(t){return t[0]=Ne(t[0]+.5|0,0,255),t[1]=Ne(t[1]+.5|0,0,255),t[2]=Ne(t[2]+.5|0,0,255),t[3]=Ne(t[3],0,1),t}function Ro(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var r=t[1];r!=(0|r)&&(r=r+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+r+","+n+","+(void 0===t[3]?1:t[3])+")"}function Io(t){return xo.test(t)&&(t=So(t)),bo.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}var Lo=function(){function t(){this.cache_={},this.cacheSize_=0,this.maxCacheSize_=32}return t.prototype.clear=function(){this.cache_={},this.cacheSize_=0},t.prototype.canExpireCache=function(){return this.cacheSize_>this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var r=this.cache_[e];0!=(3&t++)||r.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,r){var n=Mo(t,e,r);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,r,n){var i=Mo(t,e,r);this.cache_[i]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function Mo(t,e,r){return e+":"+t+":"+(r?wo(r):"null")}var Fo=Lo,Ao=new Lo,ko="opacity",jo="visible",No="extent",Do="zIndex",Go="maxResolution",zo="minResolution",Uo="maxZoom",Bo="minZoom",Vo="source",Yo=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wo=function(t){function e(e){var r=t.call(this)||this,n=O({},e);return n[ko]=void 0!==e.opacity?e.opacity:1,pt("number"==typeof n[ko],64),n[jo]=void 0===e.visible||e.visible,n[Do]=e.zIndex,n[Go]=void 0!==e.maxResolution?e.maxResolution:1/0,n[zo]=void 0!==e.minResolution?e.minResolution:0,n[Bo]=void 0!==e.minZoom?e.minZoom:-1/0,n[Uo]=void 0!==e.maxZoom?e.maxZoom:1/0,r.className_=void 0!==n.className?e.className:"ol-layer",delete n.className,r.setProperties(n),r.state_=null,r}return Yo(e,t),e.prototype.getClassName=function(){return this.className_},e.prototype.getLayerState=function(t){var e=this.state_||{layer:this,managed:void 0===t||t},r=this.getZIndex();return e.opacity=Ne(Math.round(100*this.getOpacity())/100,0,1),e.sourceState=this.getSourceState(),e.visible=this.getVisible(),e.extent=this.getExtent(),e.zIndex=void 0!==r?r:!1===e.managed?1/0:0,e.maxResolution=this.getMaxResolution(),e.minResolution=Math.max(this.getMinResolution(),0),e.minZoom=this.getMinZoom(),e.maxZoom=this.getMaxZoom(),this.state_=e,e},e.prototype.getLayersArray=function(t){return n()},e.prototype.getLayerStatesArray=function(t){return n()},e.prototype.getExtent=function(){return this.get(No)},e.prototype.getMaxResolution=function(){return this.get(Go)},e.prototype.getMinResolution=function(){return this.get(zo)},e.prototype.getMinZoom=function(){return this.get(Bo)},e.prototype.getMaxZoom=function(){return this.get(Uo)},e.prototype.getOpacity=function(){return this.get(ko)},e.prototype.getSourceState=function(){return n()},e.prototype.getVisible=function(){return this.get(jo)},e.prototype.getZIndex=function(){return this.get(Do)},e.prototype.setExtent=function(t){this.set(No,t)},e.prototype.setMaxResolution=function(t){this.set(Go,t)},e.prototype.setMinResolution=function(t){this.set(zo,t)},e.prototype.setMaxZoom=function(t){this.set(Uo,t)},e.prototype.setMinZoom=function(t){this.set(Bo,t)},e.prototype.setOpacity=function(t){pt("number"==typeof t,64),this.set(ko,t)},e.prototype.setVisible=function(t){this.set(jo,t)},e.prototype.setZIndex=function(t){this.set(Do,t)},e.prototype.disposeInternal=function(){this.state_&&(this.state_.layer=null,this.state_=null),t.prototype.disposeInternal.call(this)},e}(ot),qo="prerender",Xo="postrender",Zo="precompose",Ko="postcompose",Ho="rendercomplete",$o="undefined",Jo="loading",Qo="ready",ta="error",ea=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ra(t,e){if(!t.visible)return!1;var r=e.resolution;if(r=t.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}var na=function(t){function e(e){var r=this,n=O({},e);delete n.source,(r=t.call(this,n)||this).mapPrecomposeKey_=null,r.mapRenderKey_=null,r.sourceChangeKey_=null,r.renderer_=null,e.render&&(r.render=e.render),e.map&&r.setMap(e.map),r.addEventListener(it(Vo),r.handleSourcePropertyChange_);var i=e.source?e.source:null;return r.setSource(i),r}return ea(e,t),e.prototype.getLayersArray=function(t){var e=t||[];return e.push(this),e},e.prototype.getLayerStatesArray=function(t){var e=t||[];return e.push(this.getLayerState()),e},e.prototype.getSource=function(){return this.get(Vo)||null},e.prototype.getSourceState=function(){var t=this.getSource();return t?t.getState():$o},e.prototype.handleSourceChange_=function(){this.changed()},e.prototype.handleSourcePropertyChange_=function(){this.sourceChangeKey_&&(H(this.sourceChangeKey_),this.sourceChangeKey_=null);var t=this.getSource();t&&(this.sourceChangeKey_=Z(t,F,this.handleSourceChange_,this)),this.changed()},e.prototype.getFeatures=function(t){return this.renderer_.getFeatures(t)},e.prototype.render=function(t,e){var r=this.getRenderer();if(r.prepareFrame(t))return r.renderFrame(t,e)},e.prototype.setMap=function(t){this.mapPrecomposeKey_&&(H(this.mapPrecomposeKey_),this.mapPrecomposeKey_=null),t||this.changed(),this.mapRenderKey_&&(H(this.mapRenderKey_),this.mapRenderKey_=null),t&&(this.mapPrecomposeKey_=Z(t,Zo,(function(t){var e=t.frameState.layerStatesArray,r=this.getLayerState(!1);pt(!e.some((function(t){return t.layer===r.layer})),67),e.push(r)}),this),this.mapRenderKey_=Z(this,F,t.render,t),this.changed())},e.prototype.setSource=function(t){this.set(Vo,t)},e.prototype.getRenderer=function(){return this.renderer_||(this.renderer_=this.createRenderer()),this.renderer_},e.prototype.hasRenderer=function(){return!!this.renderer_},e.prototype.createRenderer=function(){return null},e.prototype.disposeInternal=function(){this.setSource(null),t.prototype.disposeInternal.call(this)},e}(Wo),ia=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function oa(t,e){Ao.expire()}var aa=function(t){function e(e){var r=t.call(this)||this;return r.map_=e,r}return ia(e,t),e.prototype.dispatchRenderEvent=function(t,e){n()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,r=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;kt(r,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),jt(n,r)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i,o,a,s){var l,u=e.viewState;function c(t,e,r,n){return i.call(o,e,t?r:null,n)}var h=u.projection,p=Fr(t.slice(),h),f=[[0,0]];if(h.canWrapX()&&n){var d=Pe(h.getExtent());f.push([-d,0],[d,0])}for(var g=e.layerStatesArray,y=g.length,m=[],v=[],_=0;_=0;--b){var x=g[b],w=x.layer;if(w.hasRenderer()&&ra(x,u)&&a.call(s,w)){var S=w.getRenderer(),E=w.getSource();if(S&&E){var T=E.getWrapX()?p:t,C=c.bind(null,x.managed);v[0]=T[0]+f[_][0],v[1]=T[1]+f[_][1],l=S.forEachFeatureAtCoordinate(v,e,r,C,m)}if(l)return l}}if(0!==m.length){var O=1/m.length;return m.forEach((function(t,e){return t.distanceSq+=e*O})),m.sort((function(t,e){return t.distanceSq-e.distanceSq})),m.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,r,i,o){return n()},e.prototype.hasFeatureAtCoordinate=function(t,e,r,n,i,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,r,n,S,this,i,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){n()},e.prototype.scheduleExpireIconCache=function(t){Ao.canExpireCache()&&t.postRenderFunctions.push(oa)},e}(p),sa=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),la=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.inversePixelTransform=r,o.frameState=n,o.context=i,o}return sa(e,t),e}(c),ua=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),ca=["style","variant","weight","size","lineHeight","family"],ha=function(t){var e=t.match(ua);if(!e)return null;for(var r={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},n=0,i=ca.length;n=0;--o)n[o].renderDeclutter(t);yo(this.element_,this.children_),this.dispatchRenderEvent(Ko,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,r,n,i){for(var o=e.viewState,a=e.layerStatesArray,s=a.length-1;s>=0;--s){var l=a[s],u=l.layer;if(u.hasRenderer()&&ra(l,o)&&i(u)){var c=u.getRenderer().getDataAtPixel(t,e,r);if(c){var h=n(u,c);if(h)return h}}}},e}(aa),Ma=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fa="layers",Aa=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.layers;var o=n.layers;return(r=t.call(this,i)||this).layersListenerKeys_=[],r.listenerKeys_={},r.addEventListener(it(Fa),r.handleLayersChanged_),o?Array.isArray(o)?o=new ht(o.slice(),{unique:!0}):pt("function"==typeof o.getArray,43):o=new ht(void 0,{unique:!0}),r.setLayers(o),r}return Ma(e,t),e.prototype.handleLayerChange_=function(){this.changed()},e.prototype.handleLayersChanged_=function(){this.layersListenerKeys_.forEach(H),this.layersListenerKeys_.length=0;var t=this.getLayers();for(var e in this.layersListenerKeys_.push(Z(t,at,this.handleLayersAdd_,this),Z(t,st,this.handleLayersRemove_,this)),this.listenerKeys_)this.listenerKeys_[e].forEach(H);P(this.listenerKeys_);for(var r=t.getArray(),n=0,i=r.length;nthis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(H(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(q,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(H(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(H),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(M),qa="postrender",Xa="movestart",Za="moveend",Ka="layergroup",Ha="size",$a="target",Ja="view",Qa=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,P(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,r=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(r);return delete this.queuedElements_[n],r},t.prototype.enqueue=function(t){pt(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=1/0&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,r=this.priorities_,n=e.length,i=e[t],o=r[t],a=t;t>1;){var s=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),u=lt;){var a=this.getParentIndex_(e);if(!(n[a]>o))break;r[e]=r[a],n[e]=n[a],e=a}r[e]=i,n[e]=o},t.prototype.reprioritize=function(){var t,e,r,n=this.priorityFunction_,i=this.elements_,o=this.priorities_,a=0,s=i.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),r.getState()!==Ji||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++i,r.load())},e}(Qa);function rs(t,e,r,n,i){if(!t||!(r in t.wantedTiles))return 1/0;if(!t.wantedTiles[r][e.getKey()])return 1/0;var o=t.viewState.center,a=n[0]-o[0],s=n[1]-o[1];return 65536*Math.log(i)+Math.sqrt(a*a+s*s)/i}var ns=0,is=1,os="center",as="resolution",ss="rotation";function ls(t,e,r){return function(n,i,o,a,s){if(n){var l=e?0:o[0]*i,u=e?0:o[1]*i,c=s?s[0]:0,h=s?s[1]:0,p=t[0]+l/2+c,f=t[2]-l/2+c,d=t[1]+u/2+h,g=t[3]-u/2+h;p>f&&(f=p=(f+p)/2),d>g&&(g=d=(g+d)/2);var y=Ne(n[0],p,f),m=Ne(n[1],d,g),v=30*i;return a&&r&&(y+=-v*Math.log(1+Math.max(0,p-n[0])/v)+v*Math.log(1+Math.max(0,n[0]-f)/v),m+=-v*Math.log(1+Math.max(0,d-n[1])/v)+v*Math.log(1+Math.max(0,n[1]-g)/v)),[y,m]}}}function us(t){return t}function cs(t,e,r,n){var i=Pe(e)/r[0],o=Ee(e)/r[1];return n?Math.min(t,Math.max(i,o)):Math.min(t,Math.min(i,o))}function hs(t,e,r){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,r&&(n=Math.max(n,r),n/=Math.log(1+50*Math.max(0,r/t-1))/50+1),Ne(n,r/2,2*e)}function ps(t,e,r,n){return function(i,o,a,s){if(void 0!==i){var l=t[0],u=t[t.length-1],c=r?cs(l,r,a,n):l;if(s)return void 0===e||e?hs(i,c,u):Ne(i,u,c);var h=Math.min(c,i),p=Math.floor(y(t,h,o));return t[p]>c&&p1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r),!this.isDef()){var n=arguments[r-1];return n.center&&this.setCenterInternal(n.center),void 0!==n.zoom&&this.setZoom(n.zoom),void 0!==n.rotation&&this.setRotation(n.rotation),void(e&&bs(e,!0))}for(var i=Date.now(),o=this.targetCenter_.slice(),a=this.targetResolution_,s=this.targetRotation_,l=[],u=0;u0},e.prototype.getInteracting=function(){return this.hints_[is]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(ns,-this.hints_[ns]);for(var e=0,r=this.animations_.length;e=0;--r){for(var n=this.animations_[r],i=!0,o=0,a=n.length;o0?l/s.duration:1;u>=1?(s.complete=!0,u=1):i=!1;var c=s.easing(u);if(s.sourceCenter){var h=s.sourceCenter[0],p=s.sourceCenter[1],f=h+c*(s.targetCenter[0]-h),d=p+c*(s.targetCenter[1]-p);this.targetCenter_=[f,d]}if(s.sourceResolution&&s.targetResolution){var g=1===c?s.targetResolution:s.sourceResolution+c*(s.targetResolution-s.sourceResolution);if(s.anchor){var y=this.getViewportSize_(this.getRotation()),m=this.constraints_.resolution(g,0,y,!0);this.targetCenter_=this.calculateCenterZoom(m,s.anchor)}this.targetResolution_=g,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){var v=1===c?We(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+c*(s.targetRotation-s.sourceRotation);if(s.anchor){var _=this.constraints_.rotation(v,!0);this.targetCenter_=this.calculateCenterRotate(_,s.anchor)}this.targetRotation_=v}if(this.applyTargetState_(!0),e=!0,!s.complete)break}}if(i){this.animations_[r]=null,this.setHint(ns,-1);var b=n[0].callback;b&&bs(b,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var r,n=this.getCenterInternal();return void 0!==n&&(Or(r=[n[0]-e[0],n[1]-e[1]],t-this.getRotation()),xr(r,e)),r},e.prototype.calculateCenterZoom=function(t,e){var r,n=this.getCenterInternal(),i=this.getResolution();void 0!==n&&void 0!==i&&(r=[e[0]-t*(e[0]-n[0])/i,e[1]-t*(e[1]-n[1])/i]);return r},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var r=e[0],n=e[1];return[Math.abs(r*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(r*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?en(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(os)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.options_.constrainResolution},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){return nn(this.calculateExtentInternal(t),this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSize_(),r=this.getCenterInternal();pt(r,1);var n=this.getResolution();pt(void 0!==n,2);var i=this.getRotation();return pt(void 0!==i,3),Se(r,n,i,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(as)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(on(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var r=e||this.getViewportSize_(),n=Pe(t)/r[0],i=Ee(t)/r[1];return Math.max(n,i)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/Math.log(e);return function(t){return r/Math.pow(e,t*i)}},e.prototype.getRotation=function(){return this.get(ss)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/e;return function(t){return Math.log(r/t)/e/i}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),r=this.padding;return r&&(e=[e[0]-r[1]-r[3],e[1]-r[0]-r[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),r=this.getRotation(),n=this.getCenterInternal(),i=this.padding;if(i){var o=this.getViewportSizeMinusPadding_();n=Ts(n,this.getViewportSize_(),[o[0]/2+i[3],o[1]/2+i[0]],e,r)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,rotation:r,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,r,n=this.minZoom_||0;if(this.resolutions_){var i=y(this.resolutions_,t,1);n=i,e=this.resolutions_[i],r=i==this.resolutions_.length-1?2:e/this.resolutions_[i+1]}else e=this.maxResolution_,r=this.zoomFactor_;return n+Math.log(e/t)/Math.log(r)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Ne(Math.floor(t),0,this.resolutions_.length-2),r=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(r,Ne(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var r;if(pt(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))pt(!Ie(t),25),r=gi(n=on(t,this.getProjection()));else if(t.getType()===bt.CIRCLE){var n;(r=gi(n=on(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),xe(n))}else{var i=tn();r=i?t.clone().transform(i,this.getProjection()):t}this.fitInternal(r,e)},e.prototype.fitInternal=function(t,e){var r=e||{},n=r.size;n||(n=this.getViewportSizeMinusPadding_());var i,o=void 0!==r.padding?r.padding:[0,0,0,0],a=void 0!==r.nearest&&r.nearest;i=void 0!==r.minResolution?r.minResolution:void 0!==r.maxZoom?this.getResolutionForZoom(r.maxZoom):0;for(var s=t.getFlatCoordinates(),l=this.getRotation(),u=Math.cos(-l),c=Math.sin(-l),h=1/0,p=1/0,f=-1/0,d=-1/0,g=t.getStride(),y=0,m=s.length;y0&&t[1]>0}function Rs(t,e,r){return void 0===r&&(r=[0,0]),r[0]=t[0]*e+.5|0,r[1]=t[1]*e+.5|0,r}function Is(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}var Ls=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var Ms=function(t){function e(e){var r=t.call(this)||this,n=function(t){var e=null;void 0!==t.keyboardEventTarget&&(e="string"==typeof t.keyboardEventTarget?document.getElementById(t.keyboardEventTarget):t.keyboardEventTarget);var r,n,i,o={},a=t.layers&&"function"==typeof t.layers.getLayers?t.layers:new Aa({layers:t.layers});o[Ka]=a,o[$a]=t.target,o[Ja]=void 0!==t.view?t.view:new Cs,void 0!==t.controls&&(Array.isArray(t.controls)?r=new ht(t.controls.slice()):(pt("function"==typeof t.controls.getArray,47),r=t.controls));void 0!==t.interactions&&(Array.isArray(t.interactions)?n=new ht(t.interactions.slice()):(pt("function"==typeof t.interactions.getArray,48),n=t.interactions));void 0!==t.overlays?Array.isArray(t.overlays)?i=new ht(t.overlays.slice()):(pt("function"==typeof t.overlays.getArray,49),i=t.overlays):i=new ht;return{controls:r,interactions:n,keyboardEventTarget:e,overlays:i,values:o}}(e);return r.boundHandleBrowserEvent_=r.handleBrowserEvent.bind(r),r.maxTilesLoading_=void 0!==e.maxTilesLoading?e.maxTilesLoading:16,r.pixelRatio_=void 0!==e.pixelRatio?e.pixelRatio:Vi,r.postRenderTimeoutHandle_,r.animationDelayKey_,r.animationDelay_=function(){this.animationDelayKey_=void 0,this.renderFrame_(Date.now())}.bind(r),r.coordinateToPixelTransform_=[1,0,0,1,0,0],r.pixelToCoordinateTransform_=[1,0,0,1,0,0],r.frameIndex_=0,r.frameState_=null,r.previousExtent_=null,r.viewPropertyListenerKey_=null,r.viewChangeListenerKey_=null,r.layerGroupPropertyListenerKeys_=null,r.viewport_=document.createElement("div"),r.viewport_.className="ol-viewport"+("ontouchstart"in window?" ol-touch":""),r.viewport_.style.position="relative",r.viewport_.style.overflow="hidden",r.viewport_.style.width="100%",r.viewport_.style.height="100%",r.overlayContainer_=document.createElement("div"),r.overlayContainer_.style.position="absolute",r.overlayContainer_.style.zIndex="0",r.overlayContainer_.style.width="100%",r.overlayContainer_.style.height="100%",r.overlayContainer_.style.pointerEvents="none",r.overlayContainer_.className="ol-overlaycontainer",r.viewport_.appendChild(r.overlayContainer_),r.overlayContainerStopEvent_=document.createElement("div"),r.overlayContainerStopEvent_.style.position="absolute",r.overlayContainerStopEvent_.style.zIndex="0",r.overlayContainerStopEvent_.style.width="100%",r.overlayContainerStopEvent_.style.height="100%",r.overlayContainerStopEvent_.style.pointerEvents="none",r.overlayContainerStopEvent_.className="ol-overlaycontainer-stopevent",r.viewport_.appendChild(r.overlayContainerStopEvent_),r.mapBrowserEventHandler_=null,r.moveTolerance_=e.moveTolerance,r.keyboardEventTarget_=n.keyboardEventTarget,r.keyHandlerKeys_=null,r.controls=n.controls||new ht,r.interactions=n.interactions||new ht,r.overlays_=n.overlays,r.overlayIdIndex_={},r.renderer_=null,r.handleResize_,r.postRenderFunctions_=[],r.tileQueue_=new es(r.getTilePriority.bind(r),r.handleTileChange_.bind(r)),r.addEventListener(it(Ka),r.handleLayerGroupChanged_),r.addEventListener(it(Ja),r.handleViewChanged_),r.addEventListener(it(Ha),r.handleSizeChanged_),r.addEventListener(it($a),r.handleTargetChanged_),r.setProperties(n.values),r.controls.forEach(function(t){t.setMap(this)}.bind(r)),r.controls.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.controls.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.interactions.forEach(function(t){t.setMap(this)}.bind(r)),r.interactions.addEventListener(at,function(t){t.element.setMap(this)}.bind(r)),r.interactions.addEventListener(st,function(t){t.element.setMap(null)}.bind(r)),r.overlays_.forEach(r.addOverlayInternal_.bind(r)),r.overlays_.addEventListener(at,function(t){this.addOverlayInternal_(t.element)}.bind(r)),r.overlays_.addEventListener(st,function(t){var e=t.element.getId();void 0!==e&&delete this.overlayIdIndex_[e.toString()],t.element.setMap(null)}.bind(r)),r}return Ls(e,t),e.prototype.createRenderer=function(){throw new Error("Use a map type that has a createRenderer method")},e.prototype.addControl=function(t){this.getControls().push(t)},e.prototype.addInteraction=function(t){this.getInteractions().push(t)},e.prototype.addLayer=function(t){this.getLayerGroup().getLayers().push(t)},e.prototype.addOverlay=function(t){this.getOverlays().push(t)},e.prototype.addOverlayInternal_=function(t){var e=t.getId();void 0!==e&&(this.overlayIdIndex_[e.toString()]=t),t.setMap(this)},e.prototype.disposeInternal=function(){this.setTarget(null),t.prototype.disposeInternal.call(this)},e.prototype.forEachFeatureAtPixel=function(t,e,r){if(this.frameState_){var n=this.getCoordinateFromPixelInternal(t),i=void 0!==(r=void 0!==r?r:{}).hitTolerance?r.hitTolerance:0,o=void 0!==r.layerFilter?r.layerFilter:S,a=!1!==r.checkWrapped;return this.renderer_.forEachFeatureAtCoordinate(n,this.frameState_,i,a,e,null,o,null)}},e.prototype.getFeaturesAtPixel=function(t,e){var r=[];return this.forEachFeatureAtPixel(t,(function(t){r.push(t)}),e),r},e.prototype.forEachLayerAtPixel=function(t,e,r){if(this.frameState_){var n=r||{},i=void 0!==n.hitTolerance?n.hitTolerance:0,o=n.layerFilter||S;return this.renderer_.forEachLayerAtPixel(t,this.frameState_,i,e,o)}},e.prototype.hasFeatureAtPixel=function(t,e){if(!this.frameState_)return!1;var r=this.getCoordinateFromPixelInternal(t),n=void 0!==(e=void 0!==e?e:{}).layerFilter?e.layerFilter:S,i=void 0!==e.hitTolerance?e.hitTolerance:0,o=!1!==e.checkWrapped;return this.renderer_.hasFeatureAtCoordinate(r,this.frameState_,i,o,n,null)},e.prototype.getEventCoordinate=function(t){return this.getCoordinateFromPixel(this.getEventPixel(t))},e.prototype.getEventCoordinateInternal=function(t){return this.getCoordinateFromPixelInternal(this.getEventPixel(t))},e.prototype.getEventPixel=function(t){var e=this.viewport_.getBoundingClientRect(),r="changedTouches"in t?t.changedTouches[0]:t;return[r.clientX-e.left,r.clientY-e.top]},e.prototype.getTarget=function(){return this.get($a)},e.prototype.getTargetElement=function(){var t=this.getTarget();return void 0!==t?"string"==typeof t?document.getElementById(t):t:null},e.prototype.getCoordinateFromPixel=function(t){return en(this.getCoordinateFromPixelInternal(t),this.getView().getProjection())},e.prototype.getCoordinateFromPixelInternal=function(t){var e=this.frameState_;return e?It(e.pixelToCoordinateTransform,t.slice()):null},e.prototype.getControls=function(){return this.controls},e.prototype.getOverlays=function(){return this.overlays_},e.prototype.getOverlayById=function(t){var e=this.overlayIdIndex_[t.toString()];return void 0!==e?e:null},e.prototype.getInteractions=function(){return this.interactions},e.prototype.getLayerGroup=function(){return this.get(Ka)},e.prototype.getLayers=function(){return this.getLayerGroup().getLayers()},e.prototype.getLoading=function(){for(var t=this.getLayerGroup().getLayerStatesArray(),e=0,r=t.length;e=0;s--){var l=a[s];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var r=this.maxTilesLoading_,n=r;if(t){var i=t.viewHints;if(i[ns]||i[is]){var o=!Wi&&Date.now()-t.time>8;r=o?0:8,n=o?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=r&&(this.element.style.display=r?"":"none",this.renderedVisible_=r),!b(e,this.renderedAttributions_)){go(this.ulElement_);for(var n=0,i=e.length;n0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:io}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var r=e.viewState.rotation;if(r!=this.rotation_){var n="rotate("+r+"rad)";if(this.autoHide_){var i=this.element.classList.contains("ol-hidden");i||0!==r?i&&0!==r&&this.element.classList.remove("ol-hidden"):this.element.classList.add("ol-hidden")}this.label_.style.transform=n}this.rotation_=r}},e}(As),Gs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zs=function(t){function e(e){var r=this,n=e||{};r=t.call(this,{element:document.createElement("div"),target:n.target})||this;var i=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,a=void 0!==n.zoomInClassName?n.zoomInClassName:i+"-in",s=void 0!==n.zoomOutClassName?n.zoomOutClassName:i+"-out",l=void 0!==n.zoomInLabel?n.zoomInLabel:"+",u=void 0!==n.zoomOutLabel?n.zoomOutLabel:"−",c=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",p=document.createElement("button");p.className=a,p.setAttribute("type","button"),p.title=c,p.appendChild("string"==typeof l?document.createTextNode(l):l),p.addEventListener(N,r.handleClick_.bind(r,o),!1);var f=document.createElement("button");f.className=s,f.setAttribute("type","button"),f.title=h,f.appendChild("string"==typeof u?document.createTextNode(u):u),f.addEventListener(N,r.handleClick_.bind(r,-o),!1);var d=i+" ol-unselectable ol-control",g=r.element;return g.className=d,g.appendChild(p),g.appendChild(f),r.duration_=void 0!==n.duration?n.duration:250,r}return Gs(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var r=e.getZoom();if(void 0!==r){var n=e.getConstrainedZoom(r+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:io})):e.setZoom(n)}}},e}(As);function Us(t){var e=t||{},r=new ht;return(void 0===e.zoom||e.zoom)&&r.push(new zs(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&r.push(new Ds(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&r.push(new js(e.attributionOptions)),r}var Bs="active",Vs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ys(t,e,r){var n=t.getCenterInternal();if(n){var i=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==r?r:250,easing:ao,center:t.getConstrainedCenter(i)})}}function Ws(t,e,r,n){var i=t.getZoom();if(void 0!==i){var o=t.getConstrainedZoom(i+e),a=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:a,anchor:r,duration:void 0!==n?n:250,easing:io})}}var qs=function(t){function e(e){var r=t.call(this)||this;return e&&e.handleEvent&&(r.handleEvent=e.handleEvent),r.map_=null,r.setActive(!0),r}return Vs(e,t),e.prototype.getActive=function(){return this.get(Bs)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Bs,t)},e.prototype.setMap=function(t){this.map_=t},e}(ot),Xs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zs=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:250,r}return Xs(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Ga.DBLCLICK){var r=t.originalEvent,n=t.map,i=t.coordinate,o=r.shiftKey?-this.delta_:this.delta_;Ws(n.getView(),o,i,this.duration_),r.preventDefault(),e=!0}return!e},e}(qs),Ks=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Hs(t){for(var e=t.length,r=0,n=0,i=0;i0}}else if(t.type==Ga.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Ga.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Ga.POINTERDOWN||e===Ga.POINTERDRAG||e===Ga.POINTERUP}(t)){var e=t.originalEvent,r=e.pointerId.toString();t.type==Ga.POINTERUP?delete this.trackedPointers_[r]:(t.type==Ga.POINTERDOWN||r in this.trackedPointers_)&&(this.trackedPointers_[r]=e),this.targetPointers=R(this.trackedPointers_)}},e}(qs);function Js(t){var e=arguments;return function(t){for(var r=!0,n=0,i=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}($s),dl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gl=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{stopDown:E})||this).condition_=n.condition?n.condition:tl,r.lastAngle_=void 0,r.duration_=void 0!==n.duration?n.duration:250,r}return dl(e,t),e.prototype.handleDragEvent=function(t){if(cl(t)){var e=t.map,r=e.getView();if(r.getConstraints().rotation!==gs){var n=e.getSize(),i=t.pixel,o=Math.atan2(n[1]/2-i[1],i[0]-n[0]/2);if(void 0!==this.lastAngle_){var a=o-this.lastAngle_;r.adjustRotationInternal(-a)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!cl(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!(!il(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}($s),yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ml=function(t){function e(e){var r=t.call(this)||this;return r.geometry_=null,r.element_=document.createElement("div"),r.element_.style.position="absolute",r.element_.style.pointerEvents="auto",r.element_.className="ol-box "+e,r.map_=null,r.startPixel_=null,r.endPixel_=null,r}return yl(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,r=this.element_.style;r.left=Math.min(t[0],e[0])+"px",r.top=Math.min(t[1],e[1])+"px",r.width=Math.abs(e[0]-t[0])+"px",r.height=Math.abs(e[1]-t[1])+"px"},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,r=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);r[4]=r[0].slice(),this.geometry_?this.geometry_.setCoordinates([r]):this.geometry_=new fi([r])},e.prototype.getGeometry=function(){return this.geometry_},e}(p),vl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_l="boxstart",bl="boxdrag",xl="boxend",wl="boxcancel",Sl=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.coordinate=r,i.mapBrowserEvent=n,i}return vl(e,t),e}(c),El=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.box_=new ml(n.className||"ol-dragbox"),r.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(r.onBoxEnd=n.onBoxEnd),r.startPixel_=null,r.condition_=n.condition?n.condition:il,r.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:r.defaultBoxEndCondition,r}return vl(e,t),e.prototype.defaultBoxEndCondition=function(t,e,r){var n=r[0]-e[0],i=r[1]-e[1];return n*n+i*i>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Sl(bl,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Sl(e?xl:wl,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Sl(_l,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}($s),Tl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cl=function(t){function e(e){var r=this,n=e||{},i=n.condition?n.condition:ll;return(r=t.call(this,{condition:i,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,r.out_=void 0!==n.out&&n.out,r}return Tl(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap(),r=e.getView(),n=e.getSize(),i=this.getGeometry().getExtent();if(this.out_){var o=r.calculateExtentInternal(n),a=se([e.getPixelFromCoordinateInternal(_e(i)),e.getPixelFromCoordinateInternal(Oe(i))]);Me(o,1/r.getResolutionForExtentInternal(a,n)),i=o}var s=r.getConstrainedResolution(r.getResolutionForExtentInternal(i,n)),l=r.getConstrainedCenter(xe(i),s);r.animateInternal({resolution:s,center:l,duration:this.duration_,easing:io})},e}(El),Ol=37,Pl=38,Rl=39,Il=40,Ll=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ml=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.defaultCondition_=function(t){return sl(t)&&ul(t)},r.condition_=void 0!==n.condition?n.condition:r.defaultCondition_,r.duration_=void 0!==n.duration?n.duration:100,r.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,r}return Ll(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B){var r=t.originalEvent,n=r.keyCode;if(this.condition_(t)&&(n==Il||n==Ol||n==Rl||n==Pl)){var i=t.map.getView(),o=i.getResolution()*this.pixelDelta_,a=0,s=0;n==Il?s=-o:n==Ol?a=-o:n==Rl?a=o:s=o;var l=[a,s];Or(l,i.getRotation()),Ys(i,l,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),Fl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Al=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.condition_=n.condition?n.condition:ul,r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:100,r}return Fl(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==B||t.type==V){var r=t.originalEvent,n=r.charCode;if(this.condition_(t)&&(n=="+".charCodeAt(0)||n=="-".charCodeAt(0))){var i=t.map,o=n=="+".charCodeAt(0)?this.delta_:-this.delta_;Ws(i.getView(),o,void 0,this.duration_),r.preventDefault(),e=!0}}return!e},e}(qs),kl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jl="trackpad",Nl="wheel",Dl=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,n)||this).totalDelta_=0,r.lastDelta_=0,r.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,r.duration_=void 0!==n.duration?n.duration:250,r.timeout_=void 0!==n.timeout?n.timeout:80,r.useAnchor_=void 0===n.useAnchor||n.useAnchor,r.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var i=n.condition?n.condition:nl;return r.condition_=n.onFocusOnly?Js(rl,i):i,r.lastAnchor_=null,r.startTime_=void 0,r.timeoutId_,r.mode_=void 0,r.trackpadEventGap_=400,r.trackpadTimeoutId_,r.deltaPerZoom_=300,r}return kl(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==X)return!0;var e,r=t.map,n=t.originalEvent;if(n.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==X&&(e=n.deltaY,Gi&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=Vi),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var i=Date.now();void 0===this.startTime_&&(this.startTime_=i),(!this.mode_||i-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?jl:Nl);var o=r.getView();if(this.mode_===jl&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=i,!1;this.totalDelta_+=e;var a=Math.max(this.timeout_-(i-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),a),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var r=-Ne(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(r=r?r>0?1:-1:0),Ws(e,r,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(qs),Gl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.lastAngle_=void 0,r.rotating_=!1,r.rotationDelta_=0,r.threshold_=void 0!==n.threshold?n.threshold:.3,r.duration_=void 0!==n.duration?n.duration:250,r}return Gl(e,t),e.prototype.handleDragEvent=function(t){var e=0,r=this.targetPointers[0],n=this.targetPointers[1],i=Math.atan2(n.clientY-r.clientY,n.clientX-r.clientX);if(void 0!==this.lastAngle_){var o=i-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=i;var a=t.map,s=a.getView();if(s.getConstraints().rotation!==gs){var l=a.getViewport().getBoundingClientRect(),u=Hs(this.targetPointers);u[0]-=l.left,u[1]-=l.top,this.anchor_=a.getCoordinateFromPixelInternal(u),this.rotating_&&(a.render(),s.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s),Ul=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bl=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).anchor_=null,r.duration_=void 0!==n.duration?n.duration:400,r.lastDistance_=void 0,r.lastScaleDelta_=1,r}return Ul(e,t),e.prototype.handleDragEvent=function(t){var e=1,r=this.targetPointers[0],n=this.targetPointers[1],i=r.clientX-n.clientX,o=r.clientY-n.clientY,a=Math.sqrt(i*i+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/a),this.lastDistance_=a;var s=t.map,l=s.getView();1!=e&&(this.lastScaleDelta_=e);var u=s.getViewport().getBoundingClientRect(),c=Hs(this.targetPointers);c[0]-=u.left,c[1]-=u.top,this.anchor_=s.getCoordinateFromPixelInternal(c),s.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}($s);function Vl(t){var e=t||{},r=new ht,n=new _o(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&r.push(new gl),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&r.push(new Zs({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&r.push(new fl({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&r.push(new zl),(void 0===e.pinchZoom||e.pinchZoom)&&r.push(new Bl({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(r.push(new Ml),r.push(new Al({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&r.push(new Dl({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&r.push(new Cl({duration:e.zoomDuration})),r}var Yl=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wl=function(t){function e(e){return(e=O({},e)).controls||(e.controls=Us()),e.interactions||(e.interactions=Vl({onFocusOnly:!0})),t.call(this,e)||this}return Yl(e,t),e.prototype.createRenderer=function(){return new La(this)},e}(Ms),ql="bottom-left",Xl="bottom-center",Zl="bottom-right",Kl="center-left",Hl="center-center",$l="center-right",Jl="top-left",Ql="top-center",tu="top-right",eu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ru="element",nu="map",iu="offset",ou="position",au="positioning",su=function(t){function e(e){var r=t.call(this)||this;r.options=e,r.id=e.id,r.insertFirst=void 0===e.insertFirst||e.insertFirst,r.stopEvent=void 0===e.stopEvent||e.stopEvent,r.element=document.createElement("div"),r.element.className=void 0!==e.className?e.className:"ol-overlay-container ol-selectable",r.element.style.position="absolute",r.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!=typeof n&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),r.autoPan=n||!1,r.rendered={transform_:"",visible:!0},r.mapPostrenderListenerKey=null,r.addEventListener(it(ru),r.handleElementChanged),r.addEventListener(it(nu),r.handleMapChanged),r.addEventListener(it(iu),r.handleOffsetChanged),r.addEventListener(it(ou),r.handlePositionChanged),r.addEventListener(it(au),r.handlePositioningChanged),void 0!==e.element&&r.setElement(e.element),r.setOffset(void 0!==e.offset?e.offset:[0,0]),r.setPositioning(void 0!==e.positioning?e.positioning:Jl),void 0!==e.position&&r.setPosition(e.position),r}return eu(e,t),e.prototype.getElement=function(){return this.get(ru)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(nu)},e.prototype.getOffset=function(){return this.get(iu)},e.prototype.getPosition=function(){return this.get(ou)},e.prototype.getPositioning=function(){return this.get(au)},e.prototype.handleElementChanged=function(){go(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(fo(this.element),H(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=Z(t,qa,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(ru,t)},e.prototype.setMap=function(t){this.set(nu,t)},e.prototype.setOffset=function(t){this.set(iu,t)},e.prototype.setPosition=function(t){this.set(ou,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(ou)){var r=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),i=this.getRect(n,[co(n),ho(n)]),o=t||{},a=void 0===o.margin?20:o.margin;if(!te(r,i)){var s=i[0]-r[0],l=r[2]-i[2],u=i[1]-r[1],c=r[3]-i[3],h=[0,0];if(s<0?h[0]=s-a:l<0&&(h[0]=Math.abs(l)+a),u<0?h[1]=u-a:c<0&&(h[1]=Math.abs(c)+a),0!==h[0]||0!==h[1]){var p=e.getView().getCenterInternal(),f=e.getPixelFromCoordinateInternal(p);if(!f)return;var d=[f[0]+h[0],f[1]+h[1]],g=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:g.duration,easing:g.easing})}}}},e.prototype.getRect=function(t,e){var r=t.getBoundingClientRect(),n=r.left+window.pageXOffset,i=r.top+window.pageYOffset;return[n,i,n+e[0],i+e[1]]},e.prototype.setPositioning=function(t){this.set(au,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var r=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(r,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var r=this.element.style,n=this.getOffset(),i=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",a=Math.round(t[1]+n[1])+"px",s="0%",l="0%";i==Zl||i==$l||i==tu?s="-100%":i!=Xl&&i!=Hl&&i!=Ql||(s="-50%"),i==ql||i==Xl||i==Zl?l="-100%":i!=Kl&&i!=Hl&&i!=$l||(l="-50%");var u="translate("+s+", "+l+") translate("+o+", "+a+")";this.rendered.transform_!=u&&(this.rendered.transform_=u,r.transform=u,r.msTransform=u)},e.prototype.getOptions=function(){return this.options},e}(ot),lu=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var r=this.entries_[t];return pt(void 0!==r,15),r===this.newest_||(r===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(r.newer.older=r.older,r.older.newer=r.newer),r.newer=null,r.older=this.newest_,this.newest_.newer=r,this.newest_=r),r.value_},t.prototype.remove=function(t){var e=this.entries_[t];return pt(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){pt(!(t in this.entries_),16);var r={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=r:this.oldest_=r,this.newest_=r,this.entries_[t]=r,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();function uu(t,e,r,n){return void 0!==n?(n[0]=t,n[1]=e,n[2]=r,n):[t,e,r]}function cu(t,e,r){return t+"/"+e+"/"+r}function hu(t){return cu(t[0],t[1],t[2])}function pu(t){return t.split("/").map(Number)}function fu(t){return(t[1]<r||r>e.getMaxZoom())return!1;var o=e.getFullTileRange(r);return!o||o.containsXY(n,i)}var gu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yu=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return gu(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=pu(this.peekFirstKey())[0];this.forEach(function(e){e.tileCoord[0]!==t&&(this.remove(hu(e.tileCoord)),e.release())}.bind(this))}},e}(lu),mu=function(){function t(t,e,r,n){this.minX=t,this.maxX=e,this.minY=r,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function vu(t,e,r,n,i){return void 0!==i?(i.minX=t,i.maxX=e,i.minY=r,i.maxY=n,i):new mu(t,e,r,n)}var _u=mu,bu=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xu=[],wu=function(t){function e(e,r,n,i){var o=t.call(this,e,r,{transition:0})||this;return o.context_={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.errorSourceTileKeys={},o.hitDetectionImageData={},o.replayState_={},o.sourceTiles=null,o.wantedResolution,o.getSourceTiles=i.bind(void 0,o),o.sourceZ=-1,o.hifi=!1,o.wrappedTileCoord=n,o}return bu(e,t),e.prototype.getContext=function(t){var e=o(t);return e in this.context_||(this.context_[e]=uo(1,1,xu)),this.context_[e]},e.prototype.hasContext=function(t){return o(t)in this.context_},e.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},e.prototype.getReplayState=function(t){var e=o(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedZ:-1,renderedTileZ:-1}),this.replayState_[e]},e.prototype.load=function(){this.getSourceTiles()},e.prototype.release=function(){for(var e in this.context_)xu.push(this.context_[e].canvas),delete this.context_[e];t.prototype.release.call(this)},e}(lo),Su=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eu=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.extent=null,s.format_=i,s.features_=null,s.loader_,s.projection=null,s.resolution,s.tileLoadFunction_=o,s.url_=n,s.key=n,s}return Su(e,t),e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.load=function(){this.state==Ji&&(this.setState(Qi),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))},e.prototype.onLoad=function(t,e){this.setFeatures(t)},e.prototype.onError=function(){this.setState(eo)},e.prototype.setFeatures=function(t){this.features_=t,this.setState(to)},e.prototype.setLoader=function(t){this.loader_=t},e}(lo);function Tu(t){return Array.isArray(t)?Ro(t):t}var Cu="arraybuffer",Ou="json",Pu="text",Ru="xml",Iu=!1;function Lu(t,e,r,n,i,o,a){var s=new XMLHttpRequest;s.open("GET","function"==typeof t?t(r,n,i):t,!0),e.getType()==Cu&&(s.responseType="arraybuffer"),s.withCredentials=Iu,s.onload=function(t){if(!s.status||s.status>=200&&s.status<300){var n=e.getType(),l=void 0;n==Ou||n==Pu?l=s.responseText:n==Ru?(l=s.responseXML)||(l=(new DOMParser).parseFromString(s.responseText,"application/xml")):n==Cu&&(l=s.response),l?o(e.readFeatures(l,{extent:r,featureProjection:i}),e.readProjection(l)):a()}else a()},s.onerror=a,s.send()}function Mu(t,e){return function(r,n,i,o,a){var s=this;Lu(t,e,r,n,i,(function(t,e){void 0!==o&&o(t),s.addFeatures(t)}),a||T)}}function Fu(t,e){return[[-1/0,-1/0,1/0,1/0]]}function Au(t,e,r,n){var i=document.createElement("script"),a="olc_"+o(e);function s(){delete window[a],i.parentNode.removeChild(i)}i.async=!0,i.src=t+(-1==t.indexOf("?")?"?":"&")+(n||"callback")+"="+a;var l=setTimeout((function(){s(),r&&r()}),1e4);window[a]=function(t){clearTimeout(l),s(),e(t)},document.getElementsByTagName("head")[0].appendChild(i)}var ku=function(){function t(){}return t.prototype.drawCustom=function(t,e,r){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}(),ju=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Nu=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this)||this;return l.context_=e,l.pixelRatio_=r,l.extent_=n,l.transform_=i,l.viewRotation_=o,l.squaredTolerance_=a,l.userTransform_=s,l.contextFillState_=null,l.contextStrokeState_=null,l.contextTextState_=null,l.fillState_=null,l.strokeState_=null,l.image_=null,l.imageAnchorX_=0,l.imageAnchorY_=0,l.imageHeight_=0,l.imageOpacity_=0,l.imageOriginX_=0,l.imageOriginY_=0,l.imageRotateWithView_=!1,l.imageRotation_=0,l.imageScale_=[0,0],l.imageWidth_=0,l.text_="",l.textOffsetX_=0,l.textOffsetY_=0,l.textRotateWithView_=!1,l.textRotation_=0,l.textScale_=[0,0],l.textFillState_=null,l.textStrokeState_=null,l.textState_=null,l.pixelCoordinates_=[],l.tmpLocalTransform_=[1,0,0,1,0,0],l}return ju(e,t),e.prototype.drawImages_=function(t,e,r,n){if(this.image_){var i=ln(t,e,r,2,this.transform_,this.pixelCoordinates_),o=this.context_,a=this.tmpLocalTransform_,s=o.globalAlpha;1!=this.imageOpacity_&&(o.globalAlpha=s*this.imageOpacity_);var l=this.imageRotation_;this.imageRotateWithView_&&(l+=this.viewRotation_);for(var u=0,c=i.length;u2||Math.abs(t[4*e+3]-191.25)>2}function tc(t,e,r,n){var i=Hr(r,e,t),o=zr(e,n,r),a=e.getMetersPerUnit();void 0!==a&&(o*=a);var s=t.getMetersPerUnit();void 0!==s&&(o/=s);var l=t.getExtent();if(!l||Qt(l,i)){var u=zr(t,o,i)/o;isFinite(u)&&u>0&&(o/=u)}return o}function ec(t,e,r,n){var i=xe(r),o=tc(t,e,i,n);return(!isFinite(o)||o<=0)&&me(r,(function(r){return o=tc(t,e,r,n),isFinite(o)&&o>0})),o}function rc(t,e,r,n,i,o,a,s,l,u,c,h){var p=uo(Math.round(r*t),Math.round(r*e));if(O(p,h),0===l.length)return p.canvas;function f(t){return Math.round(t*r)/r}p.scale(r,r),p.globalCompositeOperation="lighter";var d=[1/0,1/0,-1/0,-1/0];l.forEach((function(t,e,r){he(d,t.extent)}));var g=Pe(d),y=Ee(d),m=uo(Math.round(r*g/n),Math.round(r*y/n));O(m,h);var v=r/n;l.forEach((function(t,e,r){var n=t.extent[0]-d[0],i=-(t.extent[3]-d[3]),o=Pe(t.extent),a=Ee(t.extent);t.image.width>0&&t.image.height>0&&m.drawImage(t.image,u,u,t.image.width-2*u,t.image.height-2*u,n*v,i*v,o*v,a*v)}));var _=Ce(a);return s.getTriangles().forEach((function(t,e,i){var a=t.source,s=t.target,l=a[0][0],u=a[0][1],c=a[1][0],g=a[1][1],y=a[2][0],v=a[2][1],b=f((s[0][0]-_[0])/o),x=f(-(s[0][1]-_[1])/o),w=f((s[1][0]-_[0])/o),S=f(-(s[1][1]-_[1])/o),E=f((s[2][0]-_[0])/o),T=f(-(s[2][1]-_[1])/o),C=l,O=u;l=0,u=0;var P=Be([[c-=C,g-=O,0,0,w-b],[y-=C,v-=O,0,0,E-b],[0,0,c,g,S-x],[0,0,y,v,T-x]]);if(P){if(p.save(),p.beginPath(),function(){if(void 0===Hu){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",Ju(t,4,5,4,0),Ju(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;Hu=Qu(e,0)||Qu(e,4)||Qu(e,8)}return Hu}()||h===$u){p.moveTo(w,S);for(var R=b-w,I=x-S,L=0;L<4;L++)p.lineTo(w+f((L+1)*R/4),S+f(L*I/3)),3!=L&&p.lineTo(w+f((L+1)*R/4),S+f((L+1)*I/3));p.lineTo(E,T)}else p.moveTo(w,S),p.lineTo(b,x),p.lineTo(E,T);p.clip(),p.transform(P[0],P[2],P[1],P[3],b,x),p.translate(d[0]-C,d[3]-O),p.scale(n/r,-n/r),p.drawImage(m.canvas,0,0),p.restore()}})),c&&(p.save(),p.globalCompositeOperation="source-over",p.strokeStyle="black",p.lineWidth=1,s.getTriangles().forEach((function(t,e,r){var n=t.target,i=(n[0][0]-_[0])/o,a=-(n[0][1]-_[1])/o,s=(n[1][0]-_[0])/o,l=-(n[1][1]-_[1])/o,u=(n[2][0]-_[0])/o,c=-(n[2][1]-_[1])/o;p.beginPath(),p.moveTo(s,l),p.lineTo(i,a),p.lineTo(u,c),p.closePath(),p.stroke()})),p.restore()),p.canvas}var nc=[0,0,0],ic=function(){function t(t){var e;if(this.minZoom=void 0!==t.minZoom?t.minZoom:0,this.resolutions_=t.resolutions,pt(w(this.resolutions_,(function(t,e){return e-t}),!0),17),!t.origins)for(var r=0,n=this.resolutions_.length-1;r=this.minZoom;){if(e(s,2===this.zoomFactor_?vu(i=Math.floor(i/2),i,o=Math.floor(o/2),o,r):this.getTileRangeForExtentAndZ(a,s,r)))return!0;--s}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,r){if(t[0]0?n:Math.max(a/s[0],o/s[1]),u=i+1,c=new Array(u),h=0;h=0;o--)this.postProcessPasses_[o].init(t);e.bindTexture(e.TEXTURE_2D,null),e.clearColor(0,0,0,0),e.clear(e.COLOR_BUFFER_BIT),e.enable(e.BLEND),e.blendFunc(e.ONE,e.ONE_MINUS_SRC_ALPHA),e.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.prepareDrawToRenderTarget=function(t,e,r){var n=this.getGL(),i=e.getSize();n.bindFramebuffer(n.FRAMEBUFFER,e.getFramebuffer()),n.viewport(0,0,i[0],i[1]),n.bindTexture(n.TEXTURE_2D,e.getTexture()),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,r?n.ZERO:n.ONE_MINUS_SRC_ALPHA),n.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.drawElements=function(t,e){var r=this.getGL(),n=r.UNSIGNED_INT,i=e-t,o=4*t;r.drawElements(r.TRIANGLES,i,n,o)},e.prototype.finalizeDraw=function(t){for(var e=0;ethis.size_[0]||e>=this.size_[1])return yh[0]=0,yh[1]=0,yh[2]=0,yh[3]=0,yh;this.readAll();var r=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return yh[0]=this.data_[4*r],yh[1]=this.data_[4*r+1],yh[2]=this.data_[4*r+2],yh[3]=this.data_[4*r+3],yh},t.prototype.getTexture=function(){return this.texture_},t.prototype.getFramebuffer=function(){return this.framebuffer_},t.prototype.updateSize_=function(){var t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),this.data_=new Uint8Array(t[0]*t[1]*4)},t}(),vh=1,_h=2,bh=4,xh=8,wh=16,Sh=31,Eh={};function Th(t){if("number"==typeof t)return vh;if("boolean"==typeof t)return xh;if("string"==typeof t)return Io(t)?bh|_h:_h;if(!Array.isArray(t))throw new Error("Unhandled value type: "+JSON.stringify(t));var e=t;if(e.every((function(t){return"number"==typeof t})))return 3===e.length||4===e.length?bh|wh:wh;if("string"!=typeof e[0])throw new Error("Expected an expression operator but received: "+JSON.stringify(e));var r=Eh[e[0]];if(void 0===r)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return r.getReturnType(e.slice(1))}function Ch(t){return Math.log2(t)%1==0}function Oh(t){var e=t.toString();return-1===e.indexOf(".")?e+".0":e}function Ph(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec"+t.length+"("+t.map(Oh).join(", ")+")"}function Rh(t){var e=Oo(t).slice();return e.length<4&&e.push(1),Ph(e.map((function(t,e){return e<3?t/255:t})))}function Ih(t,e){return void 0===t.stringLiteralsMap[e]&&(t.stringLiteralsMap[e]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[e]}function Lh(t,e){return Oh(Ih(t,e))}function Mh(t,e,r){if(Array.isArray(e)&&"string"==typeof e[0]){var n=Eh[e[0]];if(void 0===n)throw new Error("Unrecognized expression operator: "+JSON.stringify(e));return n.toGlsl(t,e.slice(1),r)}var i=Th(e);return(i&vh)>0?Oh(e):(i&xh)>0?e.toString():(i&_h)>0&&(void 0===r||r==_h)?Lh(t,e.toString()):(i&bh)>0&&(void 0===r||r==bh)?Rh(e):(i&wh)>0?Ph(e):void 0}function Fh(t){if(!(Th(t)&vh))throw new Error("A numeric value was expected, got "+JSON.stringify(t)+" instead")}function Ah(t){for(var e=0;ee)throw new Error("At most "+e+" arguments were expected, got "+t.length+" instead")}function zh(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got "+t+" instead")}function Uh(t,e){if(!Ch(e))throw new Error("Could not infer only one type from the following expression: "+JSON.stringify(t))}function Bh(t){return{getReturnType:function(t){return xh},toGlsl:function(e,r){Nh(r,2);for(var n=Sh,i=0;i"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" > "+Mh(t,e[1])+")"}},Eh[">="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" >= "+Mh(t,e[1])+")"}},Eh["<"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" < "+Mh(t,e[1])+")"}},Eh["<="]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,2),Ah(e),"("+Mh(t,e[0])+" <= "+Mh(t,e[1])+")"}},Eh["=="]=Bh("=="),Eh["!="]=Bh("!="),Eh["!"]={getReturnType:function(t){return xh},toGlsl:function(t,e){return Nh(e,1),jh(e[0]),"(!"+Mh(t,e[0])+")"}},Eh.all=Vh("&&"),Eh.any=Vh("||"),Eh.between={getReturnType:function(t){return xh},toGlsl:function(t,e){Nh(e,3),Ah(e);var r=Mh(t,e[1]),n=Mh(t,e[2]),i=Mh(t,e[0]);return"("+i+" >= "+r+" && "+i+" <= "+n+")"}},Eh.array={getReturnType:function(t){return wh},toGlsl:function(t,e){Dh(e,2),Gh(e,4),Ah(e);var r=e.map((function(e){return Mh(t,e,vh)}));return"vec"+e.length+"("+r.join(", ")+")"}},Eh.color={getReturnType:function(t){return bh},toGlsl:function(t,e){Dh(e,3),Gh(e,4),Ah(e);var r=e;3===e.length&&r.push(1);var n=e.map((function(e,r){return Mh(t,e,vh)+(r<3?" / 255.0":"")}));return"vec"+e.length+"("+n.join(", ")+")"}},Eh.interpolate={getReturnType:function(t){for(var e=bh|vh,r=3;r=1;l-=2){s="("+o+" == "+Mh(t,e[l])+" ? "+Mh(t,e[l+1],i)+" : "+(s||a)+")"}return s}},Eh.case={getReturnType:function(t){for(var e=Sh,r=1;r=0;o-=2){s="("+Mh(t,e[o])+" ? "+Mh(t,e[o+1],i)+" : "+(s||a)+")"}return s}};var Yh=function(){function t(){this.uniforms=[],this.attributes=[],this.varyings=[],this.sizeExpression="vec2(1.0)",this.rotationExpression="0.0",this.offsetExpression="vec2(0.0)",this.colorExpression="vec4(1.0)",this.texCoordExpression="vec4(0.0, 0.0, 1.0, 1.0)",this.discardExpression="false",this.rotateWithView=!1}return t.prototype.addUniform=function(t){return this.uniforms.push(t),this},t.prototype.addAttribute=function(t){return this.attributes.push(t),this},t.prototype.addVarying=function(t,e,r){return this.varyings.push({name:t,type:e,expression:r}),this},t.prototype.setSizeExpression=function(t){return this.sizeExpression=t,this},t.prototype.setRotationExpression=function(t){return this.rotationExpression=t,this},t.prototype.setSymbolOffsetExpression=function(t){return this.offsetExpression=t,this},t.prototype.setColorExpression=function(t){return this.colorExpression=t,this},t.prototype.setTextureCoordinateExpression=function(t){return this.texCoordExpression=t,this},t.prototype.setFragmentDiscardExpression=function(t){return this.discardExpression=t,this},t.prototype.setSymbolRotateWithView=function(t){return this.rotateWithView=t,this},t.prototype.getSizeExpression=function(){return this.sizeExpression},t.prototype.getOffsetExpression=function(){return this.offsetExpression},t.prototype.getColorExpression=function(){return this.colorExpression},t.prototype.getTextureCoordinateExpression=function(){return this.texCoordExpression},t.prototype.getFragmentDiscardExpression=function(){return this.discardExpression},t.prototype.getSymbolVertexShader=function(t){var e=this.rotateWithView?"u_offsetScaleMatrix * u_offsetRotateMatrix":"u_offsetScaleMatrix",r=this.attributes,n=this.varyings;return t&&(r=r.concat("vec4 a_hitColor"),n=n.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform mat4 u_projectionMatrix;\nuniform mat4 u_offsetScaleMatrix;\nuniform mat4 u_offsetRotateMatrix;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nattribute vec2 a_position;\nattribute float a_index;\n"+r.map((function(t){return"attribute "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+n.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n mat4 offsetMatrix = "+e+";\n vec2 halfSize = "+this.sizeExpression+" * 0.5;\n vec2 offset = "+this.offsetExpression+";\n float angle = "+this.rotationExpression+";\n float offsetX;\n float offsetY;\n if (a_index == 0.0) {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n } else if (a_index == 1.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y - halfSize.y) * sin(angle);\n offsetY = (offset.y - halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else if (a_index == 2.0) {\n offsetX = (offset.x + halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x + halfSize.x) * sin(angle);\n } else {\n offsetX = (offset.x - halfSize.x) * cos(angle) + (offset.y + halfSize.y) * sin(angle);\n offsetY = (offset.y + halfSize.y) * cos(angle) - (offset.x - halfSize.x) * sin(angle);\n }\n vec4 offsets = offsetMatrix * vec4(offsetX, offsetY, 0.0, 0.0);\n gl_Position = u_projectionMatrix * vec4(a_position, 0.0, 1.0) + offsets;\n vec4 texCoord = "+this.texCoordExpression+";\n float u = a_index == 0.0 || a_index == 3.0 ? texCoord.s : texCoord.p;\n float v = a_index == 2.0 || a_index == 3.0 ? texCoord.t : texCoord.q;\n v_texCoord = vec2(u, v);\n u = a_index == 0.0 || a_index == 3.0 ? 0.0 : 1.0;\n v = a_index == 2.0 || a_index == 3.0 ? 0.0 : 1.0;\n v_quadCoord = vec2(u, v);\n"+n.map((function(t){return" "+t.name+" = "+t.expression+";"})).join("\n")+"\n}"},t.prototype.getSymbolFragmentShader=function(t){var e=t?" if (gl_FragColor.a < 0.1) { discard; } gl_FragColor = v_hitColor;":"",r=this.varyings;return t&&(r=r.concat({name:"v_hitColor",type:"vec4",expression:"a_hitColor"})),"precision mediump float;\nuniform float u_time;\nuniform float u_zoom;\nuniform float u_resolution;\n"+this.uniforms.map((function(t){return"uniform "+t+";"})).join("\n")+"\nvarying vec2 v_texCoord;\nvarying vec2 v_quadCoord;\n"+r.map((function(t){return"varying "+t.type+" "+t.name+";"})).join("\n")+"\nvoid main(void) {\n if ("+this.discardExpression+") { discard; }\n gl_FragColor = "+this.colorExpression+";\n gl_FragColor.rgb *= gl_FragColor.a;\n"+e+"\n}"},t}();function Wh(t){var e=t.symbol,r=void 0!==e.size?e.size:1,n=e.color||"white",i=e.textureCoord||[0,0,1,1],o=e.offset||[0,0],a=void 0!==e.opacity?e.opacity:1,s=void 0!==e.rotation?e.rotation:0,l={inFragmentShader:!1,variables:[],attributes:[],stringLiteralsMap:{}},u=Mh(l,r,wh|vh),c=Mh(l,o,wh),h=Mh(l,i,wh),p=Mh(l,s,vh),f={inFragmentShader:!0,variables:l.variables,attributes:[],stringLiteralsMap:l.stringLiteralsMap},d=Mh(f,n,bh),g=Mh(f,a,vh),y="1.0",m="vec2("+Mh(f,r,wh|vh)+").x";switch(e.symbolType){case"square":case"image":break;case"circle":y="(1.0-smoothstep(1.-4./"+m+",1.,dot(v_quadCoord-.5,v_quadCoord-.5)*4.))";break;case"triangle":var v="(v_quadCoord*2.-1.)",_="(atan("+v+".x,"+v+".y))";y="(1.0-smoothstep(.5-3./"+m+",.5,cos(floor(.5+"+_+"/2.094395102)*2.094395102-"+_+")*length("+v+")))";break;default:throw new Error("Unexpected symbol type: "+e.symbolType)}var b=(new Yh).setSizeExpression("vec2("+u+")").setRotationExpression(p).setSymbolOffsetExpression(c).setTextureCoordinateExpression(h).setSymbolRotateWithView(!!e.rotateWithView).setColorExpression("vec4("+d+".rgb, "+d+".a * "+g+" * "+y+")");if(t.filter){var x=Mh(f,t.filter,xh);b.setFragmentDiscardExpression("!"+x)}var w={};if(f.variables.forEach((function(e){b.addUniform("float u_"+e),w["u_"+e]=function(){if(!t.variables||void 0===t.variables[e])throw new Error("The following variable is missing from the style: "+e);var r=t.variables[e];return"string"==typeof r&&(r=Ih(l,r)),void 0!==r?r:-9999999}})),"image"===e.symbolType&&e.src){var S=new Image;S.src=e.src,b.addUniform("sampler2D u_texture").setColorExpression(b.getColorExpression()+" * texture2D(u_texture, v_texCoord)"),w.u_texture=S}return f.attributes.forEach((function(t){-1===l.attributes.indexOf(t)&&l.attributes.push(t),b.addVarying("v_"+t,"float","a_"+t)})),l.attributes.forEach((function(t){b.addAttribute("float a_"+t)})),{builder:b,attributes:l.attributes.map((function(t){return{name:t,callback:function(e,r){var n=r[t];return"string"==typeof n&&(n=Ih(l,n)),void 0!==n?n:-9999999}}})),uniforms:w}}var qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xh=function(t){function e(e){var r=t.call(this,{extent:e.extent,origin:e.origin,origins:e.origins,resolutions:e.resolutions,tileSize:e.tileSize,tileSizes:e.tileSizes,sizes:e.sizes})||this;return r.matrixIds_=e.matrixIds,r}return qh(e,t),e.prototype.getMatrixId=function(t){return this.matrixIds_[t]},e.prototype.getMatrixIds=function(){return this.matrixIds_},e}(ic),Zh=Xh;function Kh(t,e,r){var n=[],i=[],o=[],a=[],s=[],l=void 0!==r?r:[],u=Gr(t.SupportedCRS),c=u.getMetersPerUnit(),h="ne"==u.getAxisOrientation().substr(0,2);return t.TileMatrix.sort((function(t,e){return e.ScaleDenominator-t.ScaleDenominator})),t.TileMatrix.forEach((function(e){if(!(l.length>0)||_(l,(function(r){return e.Identifier==r.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===r.TileMatrix}))){i.push(e.Identifier);var r=28e-5*e.ScaleDenominator/c,u=e.TileWidth,p=e.TileHeight;h?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),n.push(r),a.push(u==p?u:[u,p]),s.push([e.MatrixWidth,e.MatrixHeight])}})),new Xh({extent:e,origins:o,resolutions:n,matrixIds:i,tileSizes:a,sizes:s})}var Hh=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Is(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return n()},t.prototype.getImage=function(t){return n()},t.prototype.getHitDetectionImage=function(){return n()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return n()},t.prototype.getImageSize=function(){return n()},t.prototype.getHitDetectionImageSize=function(){return n()},t.prototype.getOrigin=function(){return n()},t.prototype.getSize=function(){return n()},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(t)},t.prototype.listenImageChange=function(t){n()},t.prototype.load=function(){n()},t.prototype.unlistenImageChange=function(t){n()},t}(),$h=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jh=function(t){function e(e){var r=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(r=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_={},r.hitDetectionCanvas_=null,r.fill_=void 0!==e.fill?e.fill:null,r.origin_=[0,0],r.points_=e.points,r.radius_=void 0!==e.radius?e.radius:e.radius1,r.radius2_=e.radius2,r.angle_=void 0!==e.angle?e.angle:0,r.stroke_=void 0!==e.stroke?e.stroke:null,r.anchor_=null,r.size_=null,r.imageSize_=null,r.hitDetectionImageSize_=null,r.render(),r}return $h(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.getAnchor=function(){return this.anchor_},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionCanvas_){var t=this.createRenderOptions();this.createHitDetectionCanvas_(t)}return this.hitDetectionCanvas_},e.prototype.getImage=function(t){if(!this.canvas_[t||1]){var e=this.createRenderOptions(),r=uo(e.size*t||1,e.size*t||1);this.draw_(e,r,0,0,t||1),this.canvas_[t||1]=r.canvas}return this.canvas_[t||1]},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.imageSize_},e.prototype.getHitDetectionImageSize=function(){return this.hitDetectionImageSize_},e.prototype.getImageState=function(){return ki},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.createRenderOptions=function(){var t,e="round",r="round",n=0,i=null,o=0,a=0;return this.stroke_&&(null===(t=this.stroke_.getColor())&&(t="#000"),t=Tu(t),void 0===(a=this.stroke_.getWidth())&&(a=1),i=this.stroke_.getLineDash(),o=this.stroke_.getLineDashOffset(),void 0===(r=this.stroke_.getLineJoin())&&(r="round"),void 0===(e=this.stroke_.getLineCap())&&(e="round"),void 0===(n=this.stroke_.getMiterLimit())&&(n=10)),{strokeStyle:t,strokeWidth:a,size:2*(this.radius_+a)+1,lineCap:e,lineDash:i,lineDashOffset:o,lineJoin:r,miterLimit:n}},e.prototype.render=function(){var t=this.createRenderOptions(),e=uo(t.size,t.size);this.draw_(t,e,0,0,1),this.canvas_={},this.canvas_[1]=e.canvas;var r=e.canvas.width,n=r,i=this.getDisplacement();this.hitDetectionImageSize_=[t.size,t.size],this.createHitDetectionCanvas_(t),this.anchor_=[r/2-i[0],r/2+i[1]],this.size_=[r,r],this.imageSize_=[n,n]},e.prototype.draw_=function(t,e,r,n,i){var o,a,s;e.setTransform(i,0,0,i,0,0),e.translate(r,n),e.beginPath();var l=this.points_;if(l===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var u=void 0!==this.radius2_?this.radius2_:this.radius_;for(u!==this.radius_&&(l*=2),o=0;o<=l;o++)a=2*o*Math.PI/l-Math.PI/2+this.angle_,s=o%2==0?this.radius_:u,e.lineTo(t.size/2+s*Math.cos(a),t.size/2+s*Math.sin(a))}if(this.fill_){var c=this.fill_.getColor();null===c&&(c="#000"),e.fillStyle=Tu(c),e.fill()}this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,e.setLineDash&&t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.lineCap=t.lineCap,e.lineJoin=t.lineJoin,e.miterLimit=t.miterLimit,e.stroke()),e.closePath()},e.prototype.createHitDetectionCanvas_=function(t){if(this.hitDetectionCanvas_=this.getImage(1),this.fill_){var e=this.fill_.getColor(),r=0;if("string"==typeof e&&(e=Oo(e)),null===e?r=1:Array.isArray(e)&&(r=4===e.length?e[3]:1),0===r){var n=uo(t.size,t.size);this.hitDetectionCanvas_=n.canvas,this.drawHitDetectionCanvas_(t,n,0,0)}}},e.prototype.drawHitDetectionCanvas_=function(t,e,r,n){e.translate(r,n),e.beginPath();var i=this.points_;if(i===1/0)e.arc(t.size/2,t.size/2,this.radius_,0,2*Math.PI,!0);else{var o=void 0!==this.radius2_?this.radius2_:this.radius_;o!==this.radius_&&(i*=2);var a=void 0,s=void 0,l=void 0;for(a=0;a<=i;a++)l=2*a*Math.PI/i-Math.PI/2+this.angle_,s=a%2==0?this.radius_:o,e.lineTo(t.size/2+s*Math.cos(l),t.size/2+s*Math.sin(l))}e.fillStyle="#000",e.fill(),this.stroke_&&(e.strokeStyle=t.strokeStyle,e.lineWidth=t.strokeWidth,t.lineDash&&(e.setLineDash(t.lineDash),e.lineDashOffset=t.lineDashOffset),e.stroke()),e.closePath()},e}(Hh),Qh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tp=function(t){function e(e){var r=e||{};return t.call(this,{points:1/0,fill:r.fill,radius:r.radius,stroke:r.stroke,scale:void 0!==r.scale?r.scale:1,rotation:void 0!==r.rotation?r.rotation:0,rotateWithView:void 0!==r.rotateWithView&&r.rotateWithView,displacement:void 0!==r.displacement?r.displacement:[0,0]})||this}return Qh(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.setRadius=function(t){this.radius_=t,this.render()},e}(Jh),ep=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}(),rp="fraction",np="pixels",ip="bottom-left",op="bottom-right",ap="top-left",sp="top-right",lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),up=null,cp=function(t){function e(e,r,n,i,o,a){var s=t.call(this)||this;return s.hitDetectionImage_=null,s.image_=e||new Image,null!==i&&(s.image_.crossOrigin=i),s.canvas_={},s.color_=a,s.unlisten_=null,s.imageState_=o,s.size_=n,s.src_=r,s.tainted_,s}return lp(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===ki){up||(up=uo(1,1)),up.drawImage(this.image_,0,0);try{up.getImageData(0,0,1,1),this.tainted_=!1}catch(t){up=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(F)},e.prototype.handleImageError_=function(){this.imageState_=ji,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=ki,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],r=uo(t,e);r.fillRect(0,0,t,e),this.hitDetectionImage_=r.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==Fi){this.imageState_=Ai;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Zi(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var r=e.getContext("2d");if(r.scale(t,t),r.drawImage(this.image_,0,0),r.globalCompositeOperation="multiply","multiply"===r.globalCompositeOperation||this.isTainted_())r.fillStyle=wo(this.color_),r.fillRect(0,0,e.width,e.height),r.globalCompositeOperation="destination-in",r.drawImage(this.image_,0,0);else{for(var n=r.getImageData(0,0,e.width,e.height),i=n.data,o=this.color_[0]/255,a=this.color_[1]/255,s=this.color_[2]/255,l=this.color_[3],u=0,c=i.length;u0,6);var p=void 0!==n.src?Fi:ki;return r.color_=void 0!==n.color?Oo(n.color):null,r.iconImage_=hp(u,h,c,r.crossOrigin_,p,r.color_),r.offset_=void 0!==n.offset?n.offset:[0,0],r.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:ap,r.origin_=null,r.size_=void 0!==n.size?n.size:null,r}return fp(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:Array.isArray(t)?t.slice():t,rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})},e.prototype.getAnchor=function(){if(this.normalizedAnchor_)return this.normalizedAnchor_;var t=this.anchor_,e=this.getSize();if(this.anchorXUnits_==rp||this.anchorYUnits_==rp){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==rp&&(t[0]*=e[0]),this.anchorYUnits_==rp&&(t[1]*=e[1])}if(this.anchorOrigin_!=ap){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=sp&&this.anchorOrigin_!=op||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=ip&&this.anchorOrigin_!=op||(t[1]=-t[1]+e[1])}return this.normalizedAnchor_=t,this.normalizedAnchor_},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getHitDetectionImageSize=function(){return this.getImageSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_,e=this.getDisplacement();if(this.offsetOrigin_!=ap){var r=this.getSize(),n=this.iconImage_.getSize();if(!r||!n)return null;t=t.slice(),this.offsetOrigin_!=sp&&this.offsetOrigin_!=op||(t[0]=n[0]-r[0]-t[0]),this.offsetOrigin_!=ip&&this.offsetOrigin_!=op||(t[1]=n[1]-r[1]-t[1])}return t[0]+=e[0],t[1]+=e[1],this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(F,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(F,t)},e}(Hh),gp=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),yp=function(){function t(t){var e=t||{};this.geometry_=null,this.geometryFunction_=xp,void 0!==e.geometry&&this.setGeometry(e.geometry),this.fill_=void 0!==e.fill?e.fill:null,this.image_=void 0!==e.image?e.image:null,this.renderer_=void 0!==e.renderer?e.renderer:null,this.stroke_=void 0!==e.stroke?e.stroke:null,this.text_=void 0!==e.text?e.text:null,this.zIndex_=e.zIndex}return t.prototype.clone=function(){var e=this.getGeometry();return e&&"object"==typeof e&&(e=e.clone()),new t({geometry:e,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})},t.prototype.getRenderer=function(){return this.renderer_},t.prototype.setRenderer=function(t){this.renderer_=t},t.prototype.getGeometry=function(){return this.geometry_},t.prototype.getGeometryFunction=function(){return this.geometryFunction_},t.prototype.getFill=function(){return this.fill_},t.prototype.setFill=function(t){this.fill_=t},t.prototype.getImage=function(){return this.image_},t.prototype.setImage=function(t){this.image_=t},t.prototype.getStroke=function(){return this.stroke_},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.getText=function(){return this.text_},t.prototype.setText=function(t){this.text_=t},t.prototype.getZIndex=function(){return this.zIndex_},t.prototype.setGeometry=function(t){"function"==typeof t?this.geometryFunction_=t:"string"==typeof t?this.geometryFunction_=function(e){return e.get(t)}:t?void 0!==t&&(this.geometryFunction_=function(){return t}):this.geometryFunction_=xp,this.geometry_=t},t.prototype.setZIndex=function(t){this.zIndex_=t},t}();function mp(t){var e;if("function"==typeof t)e=t;else{var r;if(Array.isArray(t))r=t;else pt("function"==typeof t.getZIndex,41),r=[t];e=function(){return r}}return e}var vp=null;function _p(t,e){if(!vp){var r=new ep({color:"rgba(255,255,255,0.4)"}),n=new gp({color:"#3399CC",width:1.25});vp=[new yp({image:new tp({fill:r,stroke:n,radius:5}),fill:r,stroke:n})]}return vp}function bp(){var t={},e=[255,255,255,1],r=[0,153,255,1];return t[bt.POLYGON]=[new yp({fill:new ep({color:[255,255,255,.5]})})],t[bt.MULTI_POLYGON]=t[bt.POLYGON],t[bt.LINE_STRING]=[new yp({stroke:new gp({color:e,width:5})}),new yp({stroke:new gp({color:r,width:3})})],t[bt.MULTI_LINE_STRING]=t[bt.LINE_STRING],t[bt.CIRCLE]=t[bt.POLYGON].concat(t[bt.LINE_STRING]),t[bt.POINT]=[new yp({image:new tp({radius:6,fill:new ep({color:r}),stroke:new gp({color:e,width:1.5})}),zIndex:1/0})],t[bt.MULTI_POINT]=t[bt.POINT],t[bt.GEOMETRY_COLLECTION]=t[bt.POLYGON].concat(t[bt.LINE_STRING],t[bt.POINT]),t}function xp(t){return t.getGeometry()}var wp=yp,Sp="point",Ep="line",Tp=function(){function t(t){var e=t||{};this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=Is(void 0!==e.scale?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.textBaseline_=e.textBaseline,this.fill_=void 0!==e.fill?e.fill:new ep({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:Sp,this.overflow_=!!e.overflow,this.stroke_=void 0!==e.stroke?e.stroke:null,this.offsetX_=void 0!==e.offsetX?e.offsetX:0,this.offsetY_=void 0!==e.offsetY?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=void 0===e.padding?null:e.padding}return t.prototype.clone=function(){var e=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()})},t.prototype.getOverflow=function(){return this.overflow_},t.prototype.getFont=function(){return this.font_},t.prototype.getMaxAngle=function(){return this.maxAngle_},t.prototype.getPlacement=function(){return this.placement_},t.prototype.getOffsetX=function(){return this.offsetX_},t.prototype.getOffsetY=function(){return this.offsetY_},t.prototype.getFill=function(){return this.fill_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getStroke=function(){return this.stroke_},t.prototype.getText=function(){return this.text_},t.prototype.getTextAlign=function(){return this.textAlign_},t.prototype.getTextBaseline=function(){return this.textBaseline_},t.prototype.getBackgroundFill=function(){return this.backgroundFill_},t.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},t.prototype.getPadding=function(){return this.padding_},t.prototype.setOverflow=function(t){this.overflow_=t},t.prototype.setFont=function(t){this.font_=t},t.prototype.setMaxAngle=function(t){this.maxAngle_=t},t.prototype.setOffsetX=function(t){this.offsetX_=t},t.prototype.setOffsetY=function(t){this.offsetY_=t},t.prototype.setPlacement=function(t){this.placement_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setFill=function(t){this.fill_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Is(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.setText=function(t){this.text_=t},t.prototype.setTextAlign=function(t){this.textAlign_=t},t.prototype.setTextBaseline=function(t){this.textBaseline_=t},t.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},t.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},t.prototype.setPadding=function(t){this.padding_=t},t}(),Cp=function(){function t(t){this.first_,this.last_,this.head_,this.circular_=void 0===t||t,this.length_=0}return t.prototype.insertItem=function(t){var e={prev:void 0,next:void 0,data:t},r=this.head_;if(r){var n=r.next;e.prev=r,e.next=n,r.next=e,n&&(n.prev=e),r===this.last_&&(this.last_=e)}else this.first_=e,this.last_=e,this.circular_&&(e.next=e,e.prev=e);this.head_=e,this.length_++},t.prototype.removeItem=function(){var t=this.head_;if(t){var e=t.next,r=t.prev;e&&(e.prev=r),r&&(r.next=e),this.head_=e||r,this.first_===this.last_?(this.head_=void 0,this.first_=void 0,this.last_=void 0):this.first_===t?this.first_=this.head_:this.last_===t&&(this.last_=r?this.head_.prev:this.head_),this.length_--}},t.prototype.firstItem=function(){if(this.head_=this.first_,this.head_)return this.head_.data},t.prototype.lastItem=function(){if(this.head_=this.last_,this.head_)return this.head_.data},t.prototype.nextItem=function(){if(this.head_&&this.head_.next)return this.head_=this.head_.next,this.head_.data},t.prototype.getNextItem=function(){if(this.head_&&this.head_.next)return this.head_.next.data},t.prototype.prevItem=function(){if(this.head_&&this.head_.prev)return this.head_=this.head_.prev,this.head_.data},t.prototype.getPrevItem=function(){if(this.head_&&this.head_.prev)return this.head_.prev.data},t.prototype.getCurrItem=function(){if(this.head_)return this.head_.data},t.prototype.setFirstItem=function(){this.circular_&&this.head_&&(this.first_=this.head_,this.last_=this.head_.prev)},t.prototype.concat=function(t){if(t.head_){if(this.head_){var e=this.head_.next;this.head_.next=t.first_,t.first_.prev=this.head_,e.prev=t.last_,t.last_.next=e,this.length_+=t.length_}else this.head_=t.head_,this.first_=t.first_,this.last_=t.last_,this.length_=t.length_;t.head_=void 0,t.first_=void 0,t.last_=void 0,t.length_=0}},t.prototype.getLength=function(){return this.length_},t}(),Op=r(1),Pp=r.n(Op),Rp=function(){function t(t){this.rbush_=new Pp.a(t),this.items_={}}return t.prototype.insert=function(t,e){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(r),this.items_[o(e)]=r},t.prototype.load=function(t,e){for(var r=new Array(e.length),n=0,i=e.length;nthis.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-m>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-m>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-m>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var r=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-r.5&&c<1,f=!1;if(l>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_)f=Pe(Kt([t,e,r,n]))/this.targetWorldWidth_>.25||f;!p&&this.sourceProj_.isGlobal()&&c&&(f=c>.25||f)}if(!(!f&&this.maxSourceExtent_&&isFinite(u[0])&&isFinite(u[1])&&isFinite(u[2])&&isFinite(u[3]))||Re(u,this.maxSourceExtent_)){var d=0;if(!(f||isFinite(i[0])&&isFinite(i[1])&&isFinite(o[0])&&isFinite(o[1])&&isFinite(a[0])&&isFinite(a[1])&&isFinite(s[0])&&isFinite(s[1])))if(l>0)f=!0;else if(1!=(d=(isFinite(i[0])&&isFinite(i[1])?0:8)+(isFinite(o[0])&&isFinite(o[1])?0:4)+(isFinite(a[0])&&isFinite(a[1])?0:2)+(isFinite(s[0])&&isFinite(s[1])?0:1))&&2!=d&&4!=d&&8!=d)return;if(l>0){if(!f){var g=[(t[0]+r[0])/2,(t[1]+r[1])/2],y=this.transformInv_(g),m=void 0;if(p)m=(We(i[0],h)+We(a[0],h))/2-We(y[0],h);else m=(i[0]+a[0])/2-y[0];var v=(i[1]+a[1])/2-y[1];f=m*m+v*v>this.errorThresholdSquared_}if(f){if(Math.abs(t[0]-r[0])<=Math.abs(t[1]-r[1])){var _=[(e[0]+r[0])/2,(e[1]+r[1])/2],b=this.transformInv_(_),x=[(n[0]+t[0])/2,(n[1]+t[1])/2],w=this.transformInv_(x);this.addQuad_(t,e,_,x,i,o,b,w,l-1),this.addQuad_(x,_,r,n,w,b,a,s,l-1)}else{var S=[(t[0]+e[0])/2,(t[1]+e[1])/2],E=this.transformInv_(S),T=[(r[0]+n[0])/2,(r[1]+n[1])/2],C=this.transformInv_(T);this.addQuad_(t,S,T,n,i,E,C,s,l-1),this.addQuad_(S,e,r,T,E,o,a,C,l-1)}return}}if(p){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&d)&&this.addTriangle_(t,r,n,i,a,s),0==(14&d)&&this.addTriangle_(t,r,e,i,a,o),d&&(0==(13&d)&&this.addTriangle_(e,n,t,o,s,i),0==(7&d)&&this.addTriangle_(e,n,r,o,s,a))}},t.prototype.calculateSourceExtent=function(){var t=[1/0,1/0,-1/0,-1/0];return this.triangles_.forEach((function(e,r,n){var i=e.source;pe(t,i[0]),pe(t,i[1]),pe(t,i[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}(),Lp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Mp=function(t){function e(e,r,n,i,o,a,s,l,u,c,h,p){var f=t.call(this,o,Ji)||this;f.renderEdges_=void 0!==h&&h,f.contextOptions_=p,f.pixelRatio_=s,f.gutter_=l,f.canvas_=null,f.sourceTileGrid_=r,f.targetTileGrid_=i,f.wrappedTileCoord_=a||o,f.sourceTiles_=[],f.sourcesListenerKeys_=null,f.sourceZ_=0;var d=i.getTileCoordExtent(f.wrappedTileCoord_),g=f.targetTileGrid_.getExtent(),y=f.sourceTileGrid_.getExtent(),m=g?Te(d,g):d;if(0===ve(m))return f.state=ro,f;var v=e.getExtent();v&&(y=y?Te(y,v):v);var _=i.getResolution(f.wrappedTileCoord_[0]),b=ec(e,n,m,_);if(!isFinite(b)||b<=0)return f.state=ro,f;var x=void 0!==c?c:.5;if(f.triangulation_=new Ip(e,n,m,y,b*x,_),0===f.triangulation_.getTriangles().length)return f.state=ro,f;f.sourceZ_=r.getZForResolution(b);var w=f.triangulation_.calculateSourceExtent();if(y&&(e.canWrapX()?(w[1]=Ne(w[1],y[1],y[3]),w[3]=Ne(w[3],y[1],y[3])):w=Te(w,y)),ve(w)){for(var S=r.getTileRangeForExtentAndZ(w,f.sourceZ_),E=S.minX;E<=S.maxX;E++)for(var T=S.minY;T<=S.maxY;T++){var C=u(f.sourceZ_,E,T,s);C&&f.sourceTiles_.push(C)}0===f.sourceTiles_.length&&(f.state=ro)}else f.state=ro;return f}return Lp(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,r,n){e&&e.getState()==to&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=eo;else{var e=this.wrappedTileCoord_[0],r=this.targetTileGrid_.getTileSize(e),n="number"==typeof r?r:r[0],i="number"==typeof r?r:r[1],o=this.targetTileGrid_.getResolution(e),a=this.sourceTileGrid_.getResolution(this.sourceZ_),s=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=rc(n,i,this.pixelRatio_,a,this.sourceTileGrid_.getExtent(),o,s,this.triangulation_,t,this.gutter_,this.renderEdges_,this.contextOptions_),this.state=to}this.changed()},e.prototype.load=function(){if(this.state==Ji){this.state=Qi,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,r,n){var i=e.getState();if(i==Ji||i==Qi){t++;var o=Z(e,F,(function(r){var n=e.getState();n!=to&&n!=eo&&n!=ro||(H(o),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(o)}}.bind(this)),this.sourceTiles_.forEach((function(t,e,r){t.getState()==Ji&&t.load()})),0===t&&setTimeout(this.reproject_.bind(this),0)}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(H),this.sourcesListenerKeys_=null},e}(lo),Fp="tileloadstart",Ap="tileloadend",kp="tileloaderror",jp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Np(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}var Dp=function(t){function e(e){var r=t.call(this)||this;return r.projection_=Gr(e.projection),r.attributions_=Np(e.attributions),r.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,r.loading=!1,r.state_=void 0!==e.state?e.state:Qo,r.wrapX_=void 0!==e.wrapX&&e.wrapX,r}return jp(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolutions=function(){return n()},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getContextOptions=function(){},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=Np(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(ot),Gp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX})||this;r.opaque_=void 0!==e.opaque&&e.opaque,r.tilePixelRatio_=void 0!==e.tilePixelRatio?e.tilePixelRatio:1,r.tileGrid=void 0!==e.tileGrid?e.tileGrid:null;var n=e.tileGrid;return n&&Is(n.getTileSize(n.getMinZoom()),[256,256]),r.tileCache=new yu(e.cacheSize||0),r.tmpSize=[0,0],r.key_=e.key||"",r.tileOptions={transition:e.transition},r.zDirection=e.zDirection?e.zDirection:0,r}return Gp(e,t),e.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);r&&r.expireCache(e)},e.prototype.forEachLoadedTile=function(t,e,r,n){var i=this.getTileCacheForProjection(t);if(!i)return!1;for(var o,a,s,l=!0,u=r.minX;u<=r.maxX;++u)for(var c=r.minY;c<=r.maxY;++c)a=cu(e,u,c),s=!1,i.containsKey(a)&&(s=(o=i.get(a)).getState()===to)&&(s=!1!==n(o)),s||(l=!1);return l},e.prototype.getGutterForProjection=function(t){return 0},e.prototype.getKey=function(){return this.key_},e.prototype.setKey=function(t){this.key_!==t&&(this.key_=t,this.changed())},e.prototype.getOpaque=function(t){return this.opaque_},e.prototype.getResolutions=function(){return this.tileGrid.getResolutions()},e.prototype.getTile=function(t,e,r,i,o){return n()},e.prototype.getTileGrid=function(){return this.tileGrid},e.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:oc(t)},e.prototype.getTileCacheForProjection=function(t){return pt(Xr(this.getProjection(),t),68),this.tileCache},e.prototype.getTilePixelRatio=function(t){return this.tilePixelRatio_},e.prototype.getTilePixelSize=function(t,e,r){var n=this.getTileGridForProjection(r),i=this.getTilePixelRatio(e),o=Is(n.getTileSize(t),this.tmpSize);return 1==i?o:Rs(o,i,this.tmpSize)},e.prototype.getTileCoordForTileUrlFunction=function(t,e){var r=void 0!==e?e:this.getProjection(),n=this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(t=ac(n,t,r)),du(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var r=this.getTileCacheForProjection(e);t>r.highWaterMark&&(r.highWaterMark=t)},e.prototype.useTile=function(t,e,r,n){},e}(Dp),Up=function(t){function e(e,r){var n=t.call(this,e)||this;return n.tile=r,n}return Gp(e,t),e}(c),Bp=zp,Vp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yp=function(t){function e(r){var n=t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,opaque:r.opaque,projection:r.projection,state:r.state,tileGrid:r.tileGrid,tilePixelRatio:r.tilePixelRatio,wrapX:r.wrapX,transition:r.transition,key:r.key,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this;return n.generateTileUrlFunction_=n.tileUrlFunction===e.prototype.tileUrlFunction,n.tileLoadFunction=r.tileLoadFunction,r.tileUrlFunction&&(n.tileUrlFunction=r.tileUrlFunction),n.urls=null,r.urls?n.setUrls(r.urls):r.url&&n.setUrl(r.url),n.tileLoadingKeys_={},n}return Vp(e,t),e.prototype.getTileLoadFunction=function(){return this.tileLoadFunction},e.prototype.getTileUrlFunction=function(){return Object.getPrototypeOf(this).tileUrlFunction===this.tileUrlFunction?this.tileUrlFunction.bind(this):this.tileUrlFunction},e.prototype.getUrls=function(){return this.urls},e.prototype.handleTileChange=function(t){var e,r=t.target,n=o(r),i=r.getState();i==Qi?(this.tileLoadingKeys_[n]=!0,e=Fp):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=i==eo?kp:i==to?Ap:void 0),null!=e&&this.dispatchEvent(new Up(e,r))},e.prototype.setTileLoadFunction=function(t){this.tileCache.clear(),this.tileLoadFunction=t,this.changed()},e.prototype.setTileUrlFunction=function(t,e){this.tileUrlFunction=t,this.tileCache.pruneExceptNewestZ(),void 0!==e?this.setKey(e):this.changed()},e.prototype.setUrl=function(t){var e=yc(t);this.urls=e,this.setUrls(e)},e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.generateTileUrlFunction_?this.setTileUrlFunction(fc(t,this.tileGrid),e):this.setKey(e)},e.prototype.tileUrlFunction=function(t,e,r){},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),Wp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function qp(t,e){t.getImage().src=e}var Xp=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,opaque:e.opaque,projection:e.projection,state:e.state,tileGrid:e.tileGrid,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:qp,tilePixelRatio:e.tilePixelRatio,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:e.wrapX,transition:e.transition,key:e.key,attributionsCollapsible:e.attributionsCollapsible,zDirection:e.zDirection})||this;return r.crossOrigin=void 0!==e.crossOrigin?e.crossOrigin:null,r.tileClass=void 0!==e.tileClass?e.tileClass:vo,r.tileCacheForProjection={},r.tileGridForProjection={},r.reprojectionErrorThreshold_=e.reprojectionErrorThreshold,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r.renderReprojectionEdges_=!1,r}return Wp(e,t),e.prototype.canExpireCache=function(){if(this.tileCache.canExpireCache())return!0;for(var t in this.tileCacheForProjection)if(this.tileCacheForProjection[t].canExpireCache())return!0;return!1},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);for(var n in this.tileCache.expireCache(this.tileCache==r?e:{}),this.tileCacheForProjection){var i=this.tileCacheForProjection[n];i.expireCache(i==r?e:{})}},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.getGutterForProjection=function(t){return this.getProjection()&&t&&!Xr(this.getProjection(),t)?0:this.getGutter()},e.prototype.getGutter=function(){return 0},e.prototype.getKey=function(){return t.prototype.getKey.call(this)+(this.contextOptions_?"\n"+JSON.stringify(this.contextOptions_):"")},e.prototype.getOpaque=function(e){return!(this.getProjection()&&e&&!Xr(this.getProjection(),e))&&t.prototype.getOpaque.call(this,e)},e.prototype.getTileGridForProjection=function(t){var e=this.getProjection();if(!this.tileGrid||e&&!Xr(e,t)){var r=o(t);return r in this.tileGridForProjection||(this.tileGridForProjection[r]=oc(t)),this.tileGridForProjection[r]}return this.tileGrid},e.prototype.getTileCacheForProjection=function(t){var e=this.getProjection();if(!e||Xr(e,t))return this.tileCache;var r=o(t);return r in this.tileCacheForProjection||(this.tileCacheForProjection[r]=new yu(this.tileCache.highWaterMark)),this.tileCacheForProjection[r]},e.prototype.createTile_=function(t,e,r,n,i,o){var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=s?this.tileUrlFunction(s,n,i):void 0,u=new this.tileClass(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.crossOrigin,this.tileLoadFunction,this.tileOptions);return u.key=o,u.addEventListener(F,this.handleTileChange.bind(this)),u},e.prototype.getTile=function(t,e,r,n,i){var o=this.getProjection();if(o&&i&&!Xr(o,i)){var a=this.getTileCacheForProjection(i),s=[t,e,r],l=void 0,u=hu(s);a.containsKey(u)&&(l=a.get(u));var c=this.getKey();if(l&&l.key==c)return l;var h=this.getTileGridForProjection(o),p=this.getTileGridForProjection(i),f=this.getTileCoordForTileUrlFunction(s,i),d=new Mp(o,h,i,p,s,f,this.getTilePixelRatio(n),this.getGutter(),function(t,e,r,n){return this.getTileInternal(t,e,r,n,o)}.bind(this),this.reprojectionErrorThreshold_,this.renderReprojectionEdges_,this.contextOptions_);return d.key=c,l?(d.interimTile=l,d.refreshInterimChain(),a.replace(u,d)):a.set(u,d),d}return this.getTileInternal(t,e,r,n,o||i)},e.prototype.getTileInternal=function(t,e,r,n,i){var o=null,a=cu(t,e,r),s=this.getKey();if(this.tileCache.containsKey(a)){if((o=this.tileCache.get(a)).key!=s){var l=o;o=this.createTile_(t,e,r,n,i,s),l.getState()==Ji?o.interimTile=l.interimTile:o.interimTile=l,o.refreshInterimChain(),this.tileCache.replace(a,o)}}else o=this.createTile_(t,e,r,n,i,s),this.tileCache.set(a,o);return o},e.prototype.setRenderReprojectionEdges=function(t){if(this.renderReprojectionEdges_!=t){for(var e in this.renderReprojectionEdges_=t,this.tileCacheForProjection)this.tileCacheForProjection[e].clear();this.changed()}},e.prototype.setTileGridForProjection=function(t,e){var r=Gr(t);if(r){var n=o(r);n in this.tileGridForProjection||(this.tileGridForProjection[n]=e)}},e}(Yp),Zp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Kp(t){var e,r,n=t[0],i=new Array(n),o=1<>=1;return i.join("")}var Hp=function(t){function e(e){var r=this,n=void 0!==e.hidpi&&e.hidpi;return(r=t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,opaque:!0,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:n?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this).hidpi_=n,r.culture_=void 0!==e.culture?e.culture:"en-us",r.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,r.apiKey_=e.key,r.imagerySet_=e.imagerySet,Au("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+r.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+r.apiKey_+"&c="+r.culture_,r.handleImageryMetadataResponse.bind(r),void 0,"jsonp"),r}return Zp(e,t),e.prototype.getApiKey=function(){return this.apiKey_},e.prototype.getImagerySet=function(){return this.imagerySet_},e.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var e=t.resourceSets[0].resources[0],r=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=hc(this.getProjection()),i=this.hidpi_?2:1,o=e.imageWidth==e.imageHeight?e.imageWidth/i:[e.imageWidth/i,e.imageHeight/i],a=lc({extent:n,minZoom:e.zoomMin,maxZoom:r,tileSize:o});this.tileGrid=a;var s=this.culture_,l=this.hidpi_;if(this.tileUrlFunction=dc(e.imageUrlSubdomains.map((function(t){var r=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",s);return function(t,e,i){if(t){uu(t[0],t[1],t[2],r);var o=n;return l&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",Kp(r))}}}))),e.imageryProviders){var u=Zr(Gr("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var r=[],n=t.viewState,i=this.getTileGrid(),o=i.getZForResolution(n.resolution,this.zDirection),a=i.getTileCoordForCoordAndZ(n.center,o)[0];return e.imageryProviders.map((function(e){for(var n=!1,i=e.coverageAreas,o=0,s=i.length;o=l.zoomMin&&a<=l.zoomMax){var c=l.bbox;if(Re(Ae([c[1],c[0],c[3],c[2]],u),t.extent)){n=!0;break}}}n&&r.push(e.attribution)})),r.push('Terms of Use'),r}.bind(this))}this.setState(Qo)}else this.setState(ta)},e}(Xp),$p=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jp=function(t){function e(e){var r=e||{},n=void 0!==r.projection?r.projection:"EPSG:3857",i=void 0!==r.tileGrid?r.tileGrid:lc({extent:hc(n),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,imageSmoothing:r.imageSmoothing,opaque:r.opaque,projection:n,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:i,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this}return $p(e,t),e}(Xp),Qp=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,maxZoom:void 0!==e.maxZoom?e.maxZoom:18,minZoom:e.minZoom,projection:e.projection,transition:e.transition,wrapX:e.wrapX})||this;return r.account_=e.account,r.mapId_=e.map||"",r.config_=e.config||{},r.templateCache_={},r.initializeMap_(),r}return Qp(e,t),e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){O(this.config_,t),this.initializeMap_()},e.prototype.setConfig=function(t){this.config_=t||{},this.initializeMap_()},e.prototype.initializeMap_=function(){var t=JSON.stringify(this.config_);if(this.templateCache_[t])this.applyTemplate_(this.templateCache_[t]);else{var e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);var r=new XMLHttpRequest;r.addEventListener("load",this.handleInitResponse_.bind(this,t)),r.addEventListener("error",this.handleInitError_.bind(this)),r.open("POST",e),r.setRequestHeader("Content-type","application/json"),r.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var r=e.target;if(!r.status||r.status>=200&&r.status<300){var n=void 0;try{n=JSON.parse(r.responseText)}catch(t){return void this.setState(ta)}this.applyTemplate_(n),this.templateCache_[t]=n,this.setState(Qo)}else this.setState(ta)},e.prototype.handleInitError_=function(t){this.setState(ta)},e.prototype.applyTemplate_=function(t){var e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)},e}(Jp),ef="addfeature",rf="changefeature",nf="clear",of="removefeature",af="featuresloadstart",sf="featuresloadend",lf="featuresloaderror",uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cf=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.feature=r,i.features=n,i}return uf(e,t),e}(c),hf=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{attributions:n.attributions,projection:void 0,state:Qo,wrapX:void 0===n.wrapX||n.wrapX})||this).loader_=T,r.format_=n.format,r.overlaps_=void 0===n.overlaps||n.overlaps,r.url_=n.url,void 0!==n.loader?r.loader_=n.loader:void 0!==r.url_&&(pt(r.format_,7),r.loader_=Mu(r.url_,r.format_)),r.strategy_=void 0!==n.strategy?n.strategy:Fu;var i,o,a=void 0===n.useSpatialIndex||n.useSpatialIndex;return r.featuresRtree_=a?new Rp:null,r.loadedExtentsRtree_=new Rp,r.nullGeometryFeatures_={},r.idIndex_={},r.uidIndex_={},r.featureChangeKeys_={},r.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(i=n.features).getArray()),a||void 0!==i||(i=new ht(o)),void 0!==o&&r.addFeaturesInternal(o),void 0!==i&&r.bindFeaturesCollection_(i),r}return uf(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=o(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var r=t.getGeometry();if(r){var n=r.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new cf(ef,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[Z(e,F,this.handleFeatureChange_,this),Z(e,h,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var r=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?r=!1:this.idIndex_[n.toString()]=e),r&&(pt(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),r},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],r=[],n=[],i=0,a=t.length;i=0;--r){var n=this.geometryFunction(t[r]);n?xr(e,n.getCoordinates()):t.splice(r,1)}Pr(e,1/t.length);var i=new gt(new qn(e));return i.set("features",t),i},e}(hf),df=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gf="default",yf="truncated",mf=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this,r,n,i,o,a,s)||this;return l.zoomifyImage_=null,l.tileSize_=e,l}return df(e,t),e.prototype.getImage=function(){if(this.zoomifyImage_)return this.zoomifyImage_;var e=t.prototype.getImage.call(this);if(this.state==to){var r=this.tileSize_;if(e.width==r[0]&&e.height==r[1])return this.zoomifyImage_=e,e;var n=uo(r[0],r[1]);return n.drawImage(e,0,0),this.zoomifyImage_=n.canvas,n.canvas}return e},e}(vo),vf=function(t){function e(e){var r=this,n=e,i=n.size,o=void 0!==n.tierSizeCalculation?n.tierSizeCalculation:gf,a=n.tilePixelRatio||1,s=i[0],l=i[1],u=[],c=n.tileSize||256,h=c*a;switch(o){case gf:for(;s>h||l>h;)u.push([Math.ceil(s/h),Math.ceil(l/h)]),h+=h;break;case yf:for(var p=s,f=l;p>h||f>h;)u.push([Math.ceil(p/h),Math.ceil(f/h)]),p>>=1,f>>=1;break;default:pt(!1,53)}u.push([1,1]),u.reverse();for(var d=[a],g=[0],y=1,m=u.length;y1,n=r&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],i=r&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=r&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:_f(e.supports,n),formats:_f(e.formats,i),qualities:_f(e.qualities,o)}},Of[wf]=function(t){var e=t.getComplianceLevelSupportedFeatures(),r=void 0===t.imageInfo.extraFormats?e.formats:_f(e.formats,t.imageInfo.extraFormats),n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return["jpg","png","gif"].includes(t)})).reduce((function(t,e){return void 0===t&&r.includes(e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:_f(e.supports,t.imageInfo.extraFeatures),formats:r,qualities:void 0===t.imageInfo.extraQualities?e.qualities:_f(e.qualities,t.imageInfo.extraQualities),preferredFormat:n}};var Pf=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&Tf.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var e=this.getComplianceLevelEntryFromProfile(t);if(void 0!==e){var r=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(r)?r[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?Sf.none.none:Sf[t][e]}},t.prototype.getTileSourceOptions=function(t){var e=t||{},r=this.getImageApiVersion();if(void 0!==r){var n=void 0===r?void 0:Of[r](this);if(void 0!==n)return{url:n.url,version:r,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&n.formats.includes(e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&n.qualities.includes(e.quality)?e.quality:n.qualities.includes("native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}}},t}(),Rf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function If(t){return t.toLocaleString("en",{maximumFractionDigits:10})}var Lf=function(t){function e(e){var r=this,n=e||{},i=n.url||"";i+=i.lastIndexOf("/")===i.length-1||""===i?"":"/";var o=n.version||xf,a=n.sizes||[],s=n.size;pt(null!=s&&Array.isArray(s)&&2==s.length&&!isNaN(s[0])&&s[0]>0&&!isNaN(s[1])&&s[1]>0,60);var l,u,c,h=s[0],p=s[1],f=n.tileSize,d=n.tilePixelRatio||1,g=n.format||"jpg",y=n.quality||(n.version==bf?"native":"default"),m=n.resolutions||[],v=n.supports||[],_=n.extent||[0,-p,h,0],b=null!=a&&Array.isArray(a)&&a.length>0,x=void 0!==f&&("number"==typeof f&&Number.isInteger(f)&&f>0||Array.isArray(f)&&f.length>0),w=null!=v&&Array.isArray(v)&&(v.includes("regionByPx")||v.includes("regionByPct"))&&(v.includes("sizeByWh")||v.includes("sizeByH")||v.includes("sizeByW")||v.includes("sizeByPct"));if(m.sort((function(t,e){return e-t})),x||w)if(null!=f&&("number"==typeof f&&Number.isInteger(f)&&f>0?(l=f,u=f):Array.isArray(f)&&f.length>0&&((1==f.length||null==f[1]&&Number.isInteger(f[0]))&&(l=f[0],u=f[0]),2==f.length&&(Number.isInteger(f[0])&&Number.isInteger(f[1])?(l=f[0],u=f[1]):null==f[0]&&Number.isInteger(f[1])&&(l=f[1],u=f[1])))),void 0!==l&&void 0!==u||(l=256,u=256),0==m.length)for(var S=c=Math.max(Math.ceil(Math.log(h/l)/Math.LN2),Math.ceil(Math.log(p/u)/Math.LN2));S>=0;S--)m.push(Math.pow(2,S));else{var E=Math.max.apply(Math,m);c=Math.round(Math.log(E)/Math.LN2)}else if(l=h,u=p,m=[],b){a.sort((function(t,e){return t[0]-e[0]})),c=-1;var T=[];for(S=0;S0&&m[m.length-1]==C?T.push(S):(m.push(C),c++)}if(T.length>0)for(S=0;Sc)){var d=t[1],_=t[2],S=m[f];if(!(void 0===d||void 0===_||void 0===S||d<0||Math.ceil(h/S/l)<=d||_<0||Math.ceil(p/S/u)<=_)){if(w||x){var E=d*l*S,T=_*u*S,C=l*S,O=u*S,P=l,R=u;if(E+C>h&&(C=h-E),T+O>p&&(O=p-T),E+l*S>h&&(P=Math.floor((h-E+S-1)/S)),T+u*S>p&&(R=Math.floor((p-T+S-1)/S)),0==E&&C==h&&0==T&&O==p)n="full";else if(!w||v.includes("regionByPx"))n=E+","+T+","+C+","+O;else if(v.includes("regionByPct")){n="pct:"+If(E/h*100)+","+If(T/p*100)+","+If(C/h*100)+","+If(O/p*100)}o!=wf||w&&!v.includes("sizeByWh")?!w||v.includes("sizeByW")?s=P+",":v.includes("sizeByH")?s=","+R:v.includes("sizeByWh")?s=P+","+R:v.includes("sizeByPct")&&(s="pct:"+If(100/S)):s=P+","+R}else if(n="full",b){var I=a[f][0],L=a[f][1];s=o==wf?I==h&&L==p?"max":I+","+L:I==h?"full":I+","}else s=o==wf?"max":"full";return i+n+"/"+s+"/0/"+y+"."+g}}},transition:n.transition})||this).zDirection=n.zDirection,r}return Rf(e,t),e}(Xp),Mf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ff=function(t){function e(e,r,n,i,o,a,s){var l=this,u=e.getExtent(),c=r.getExtent(),h=c?Te(n,c):n,p=tc(e,r,xe(h),i),f=new Ip(e,r,h,u,.5*p,i),d=a(f.calculateSourceExtent(),p,o),g=d?Fi:Ni,y=d?d.getPixelRatio():1;return(l=t.call(this,n,i,y,g)||this).targetProj_=r,l.maxSourceExtent_=u,l.triangulation_=f,l.targetResolution_=i,l.targetExtent_=n,l.sourceImage_=d,l.sourcePixelRatio_=y,l.contextOptions_=s,l.canvas_=null,l.sourceListenerKey_=null,l}return Mf(e,t),e.prototype.disposeInternal=function(){this.state==Ai&&this.unlistenSource_(),t.prototype.disposeInternal.call(this)},e.prototype.getImage=function(){return this.canvas_},e.prototype.getProjection=function(){return this.targetProj_},e.prototype.reproject_=function(){var t=this.sourceImage_.getState();if(t==ki){var e=Pe(this.targetExtent_)/this.targetResolution_,r=Ee(this.targetExtent_)/this.targetResolution_;this.canvas_=rc(e,r,this.sourcePixelRatio_,this.sourceImage_.getResolution(),this.maxSourceExtent_,this.targetResolution_,this.targetExtent_,this.triangulation_,[{extent:this.sourceImage_.getExtent(),image:this.sourceImage_.getImage()}],0,void 0,this.contextOptions_)}this.state=t,this.changed()},e.prototype.load=function(){if(this.state==Fi){this.state=Ai,this.changed();var t=this.sourceImage_.getState();t==ki||t==ji?this.reproject_():(this.sourceListenerKey_=Z(this.sourceImage_,F,(function(t){var e=this.sourceImage_.getState();e!=ki&&e!=ji||(this.unlistenSource_(),this.reproject_())}),this),this.sourceImage_.load())}},e.prototype.unlistenSource_=function(){H(this.sourceListenerKey_),this.sourceListenerKey_=null},e}(Mi),Af=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),kf="imageloadstart",jf="imageloadend",Nf="imageloaderror",Df=function(t){function e(e,r){var n=t.call(this,e)||this;return n.image=r,n}return Af(e,t),e}(c);function Gf(t,e){t.getImage().src=e}var zf=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,projection:e.projection,state:e.state})||this;return r.resolutions_=void 0!==e.resolutions?e.resolutions:null,r.reprojectedImage_=null,r.reprojectedRevision_=0,r.contextOptions_=!1===e.imageSmoothing?$u:void 0,r}return Af(e,t),e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getContextOptions=function(){return this.contextOptions_},e.prototype.findNearestResolution=function(t){if(this.resolutions_){var e=y(this.resolutions_,t,0);t=this.resolutions_[e]}return t},e.prototype.getImage=function(t,e,r,n){var i=this.getProjection();if(i&&n&&!Xr(i,n)){if(this.reprojectedImage_){if(this.reprojectedRevision_==this.getRevision()&&Xr(this.reprojectedImage_.getProjection(),n)&&this.reprojectedImage_.getResolution()==e&&ue(this.reprojectedImage_.getExtent(),t))return this.reprojectedImage_;this.reprojectedImage_.dispose(),this.reprojectedImage_=null}return this.reprojectedImage_=new Ff(i,n,t,e,r,function(t,e,r){return this.getImageInternal(t,e,r,i)}.bind(this),this.contextOptions_),this.reprojectedRevision_=this.getRevision(),this.reprojectedImage_}return i&&(n=i),this.getImageInternal(t,e,r,n)},e.prototype.getImageInternal=function(t,e,r,i){return n()},e.prototype.handleImageChange=function(t){var e=t.target;switch(e.getState()){case Ai:this.loading=!0,this.dispatchEvent(new Df(kf,e));break;case ki:this.loading=!1,this.dispatchEvent(new Df(jf,e));break;case ji:this.loading=!1,this.dispatchEvent(new Df(Nf,e))}},e}(Dp),Uf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Bf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.hidpi_=void 0===n.hidpi||n.hidpi,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Uf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};O(o,this.params_);var a=((t=t.slice())[0]+t[2])/2,s=(t[1]+t[3])/2;if(1!=this.ratio_){var l=this.ratio_*Pe(t)/2,u=this.ratio_*Ee(t)/2;t[0]=a-l,t[1]=s-u,t[2]=a+l,t[3]=s+u}var c=e/r,h=Math.ceil(Pe(t)/c),p=Math.ceil(Ee(t)/c);t[0]=a-c*h/2,t[2]=a+c*h/2,t[1]=s-c*p/2,t[3]=s+c*p/2,this.imageSize_[0]=h,this.imageSize_[1]=p;var f=this.getRequestUrl_(t,this.imageSize_,r,n,o);return this.image_=new Ki(t,e,r,f,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){var o=n.getCode().split(":").pop();i.SIZE=e[0]+","+e[1],i.BBOX=t.join(","),i.BBOXSR=o,i.IMAGESR=o,i.DPI=Math.round(90*r);var a=this.url_,s=a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return s==a&&pt(!1,50),mc(s,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.image_=null,this.changed()},e}(zf),Vf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Yf=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions,state:n.state})||this).canvasFunction_=n.canvasFunction,r.canvas_=null,r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Vf(e,t),e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e);var i=this.canvas_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r],a=this.canvasFunction_.call(this,t,e,r,o,n);return a&&(i=new $i(t,e,r,a)),this.canvas_=i,this.renderedRevision_=this.getRevision(),i},e}(zf),Wf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var qf=function(t){function e(e){var r=t.call(this,{imageSmoothing:e.imageSmoothing,projection:e.projection,resolutions:e.resolutions})||this;return r.crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,r.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,r.params_=e.params||{},r.url_=e.url,r.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf,r.hidpi_=void 0===e.hidpi||e.hidpi,r.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,r.ratio_=void 0!==e.ratio?e.ratio:1,r.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,r.image_=null,r.renderedRevision_=0,r}return Wf(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&te(i.getExtent(),t))return i;1!=this.ratio_&&Me(t=t.slice(),this.ratio_);var o=[Pe(t)/e*r,Ee(t)/e*r];if(void 0!==this.url_){var a=this.getUrl(this.url_,this.params_,t,o,n);(i=new Ki(t,e,r,a,this.crossOrigin_,this.imageLoadFunction_)).addEventListener(F,this.handleImageChange.bind(this))}else i=null;return this.image_=i,this.renderedRevision_=this.getRevision(),i},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){O(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,r,n,i){var o=function(t,e,r,n){var i=Pe(t),o=Ee(t),a=e[0],s=e[1],l=.0254/n;return s*i>a*o?i*r/(a*l):o*r/(s*l)}(r,n,this.metersPerUnit_,this.displayDpi_),a=xe(r),s={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:o,SETVIEWCENTERX:a[0],SETVIEWCENTERY:a[1]};return O(s,e),mc(t,s)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(zf),Xf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zf=function(t){function e(e){var r=this,n=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:Gf;return(r=t.call(this,{attributions:e.attributions,imageSmoothing:e.imageSmoothing,projection:Gr(e.projection)})||this).url_=e.url,r.imageExtent_=e.imageExtent,r.image_=new Ki(r.imageExtent_,void 0,1,r.url_,n,i),r.imageSize_=e.imageSize?e.imageSize:null,r.image_.addEventListener(F,r.handleImageChange.bind(r)),r}return Xf(e,t),e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,r,n){return Re(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==ki){var r=this.image_.getExtent(),n=this.image_.getImage(),i=void 0,o=void 0;this.imageSize_?(i=this.imageSize_[0],o=this.imageSize_[1]):(i=n.width,o=n.height);var a=Ee(r)/o,s=Math.ceil(Pe(r)/a);if(s!=i){var l=uo(s,o);O(l,this.getContextOptions());var u=l.canvas;l.drawImage(n,0,0,i,o,0,0,u.width,u.height),this.image_.setImage(u)}}t.prototype.handleImageChange.call(this,e)},e}(zf),Kf="carmentaserver",Hf="geoserver",$f="mapserver",Jf="qgis",Qf=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),td=[101,101],ed=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,imageSmoothing:n.imageSmoothing,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:Gf,r.params_=n.params||{},r.v13_=!0,r.updateV13_(),r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Qf(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){if(void 0!==this.url_){var i=Gr(r),o=this.getProjection();o&&o!==i&&(e=tc(o,i,t,e),t=Hr(t,i,o));var a=Se(t,e,0,td),s={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(s,this.params_,n);var l=Math.floor((t[0]-a[0])/e),u=Math.floor((a[3]-t[1])/e);return s[this.v13_?"I":"X"]=l,s[this.v13_?"J":"Y"]=u,this.getRequestUrl_(a,td,1,o||i,s)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.url_){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.url_,r)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==r||this.hidpi_&&void 0!==this.serverType_||(r=1);var i=e/r,o=xe(t),a=Se(o,i,0,[Math.ceil(Pe(t)/i),Math.ceil(Ee(t)/i)]),s=Se(o,i,0,[Math.ceil(this.ratio_*Pe(t)/i),Math.ceil(this.ratio_*Ee(t)/i)]),l=this.image_;if(l&&this.renderedRevision_==this.getRevision()&&l.getResolution()==e&&l.getPixelRatio()==r&&te(l.getExtent(),a))return l;var u={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};O(u,this.params_),this.imageSize_[0]=Math.round(Pe(s)/i),this.imageSize_[1]=Math.round(Ee(s)/i);var c=this.getRequestUrl_(s,this.imageSize_,r,n,u);return this.image_=new Ki(s,e,r,c,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(F,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){if(pt(void 0!==this.url_,9),i[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(i.STYLES=""),1!=r)switch(this.serverType_){case Hf:var o=90*r+.5|0;"FORMAT_OPTIONS"in i?i.FORMAT_OPTIONS+=";dpi:"+o:i.FORMAT_OPTIONS="dpi:"+o;break;case $f:i.MAP_RESOLUTION=90*r;break;case Kf:case Jf:i.DPI=90*r;break;default:pt(!1,8)}i.WIDTH=e[0],i.HEIGHT=e[1];var a,s=n.getAxisOrientation();return a=this.v13_&&"ne"==s.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,i.BBOX=a.join(","),mc(this.url_,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e}(zf),rd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nd='© OpenStreetMap contributors.',id=function(t){function e(e){var r,n=e||{};r=void 0!==n.attributions?n.attributions:[nd];var i=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",o=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:r,attributionsCollapsible:!1,cacheSize:n.cacheSize,crossOrigin:i,imageSmoothing:n.imageSmoothing,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,opaque:void 0===n.opaque||n.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:o,wrapX:n.wrapX})||this}return rd(e,t),e}(Jp),od=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ad=function(t){function e(e){var r=e||{};return t.call(this,r)||this}return od(e,t),e}(na),sd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ld=function(t){function e(e){var r=t.call(this)||this;return r.boundHandleImageChange_=r.handleImageChange_.bind(r),r.layer_=e,r.declutterExecutorGroup=null,r}return sd(e,t),e.prototype.getFeatures=function(t){return n()},e.prototype.prepareFrame=function(t){return n()},e.prototype.renderFrame=function(t,e){return n()},e.prototype.loadedTileCallback=function(t,e,r){t[e]||(t[e]={}),t[e][r.tileCoord.toString()]=r},e.prototype.createLoadedTileFinder=function(t,e,r){return function(n,i){var o=this.loadedTileCallback.bind(this,r,n);return t.forEachLoadedTile(e,n,i,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){},e.prototype.getDataAtPixel=function(t,e,r){return n()},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===ki&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=ki&&e!=ji&&t.addEventListener(F,this.boundHandleImageChange_),e==Fi&&(t.load(),e=t.getState()),e==ki},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==Qo&&t.changed()},e}(Q),ud=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cd=function(t){function e(e){var r=t.call(this,e)||this;return r.container=null,r.renderedResolution,r.tempTransform=[1,0,0,1,0,0],r.pixelTransform=[1,0,0,1,0,0],r.inversePixelTransform=[1,0,0,1,0,0],r.context=null,r.containerReused=!1,r}return ud(e,t),e.prototype.useContainer=function(t,e,r){var n,i,o=this.getLayer().getClassName();t&&""===t.style.opacity&&t.className===o&&((s=t.firstElementChild)instanceof HTMLCanvasElement&&(i=s.getContext("2d")));if(!i||0!==i.canvas.width&&i.canvas.style.transform!==e?this.containerReused&&(this.container=null,this.context=null,this.containerReused=!1):(this.container=t,this.context=i,this.containerReused=!0),!this.container){(n=document.createElement("div")).className=o;var a=n.style;a.position="absolute",a.width="100%",a.height="100%";var s=(i=uo()).canvas;n.appendChild(s),(a=s.style).position="absolute",a.left="0",a.transformOrigin="top left",this.container=n,this.context=i}},e.prototype.clip=function(t,e,r){var n=e.pixelRatio,i=e.size[0]*n/2,o=e.size[1]*n/2,a=e.viewState.rotation,s=Ce(r),l=Oe(r),u=be(r),c=_e(r);It(e.coordinateToPixelTransform,s),It(e.coordinateToPixelTransform,l),It(e.coordinateToPixelTransform,u),It(e.coordinateToPixelTransform,c),t.save(),Ca(t,-a,i,o),t.beginPath(),t.moveTo(s[0]*n,s[1]*n),t.lineTo(l[0]*n,l[1]*n),t.lineTo(u[0]*n,u[1]*n),t.lineTo(c[0]*n,c[1]*n),t.clip(),Ca(t,a,i,o)},e.prototype.clipUnrotated=function(t,e,r){var n=Ce(r),i=Oe(r),o=be(r),a=_e(r);It(e.coordinateToPixelTransform,n),It(e.coordinateToPixelTransform,i),It(e.coordinateToPixelTransform,o),It(e.coordinateToPixelTransform,a);var s=this.inversePixelTransform;It(s,n),It(s,i),It(s,o),It(s,a),t.save(),t.beginPath(),t.moveTo(Math.round(n[0]),Math.round(n[1])),t.lineTo(Math.round(i[0]),Math.round(i[1])),t.lineTo(Math.round(o[0]),Math.round(o[1])),t.lineTo(Math.round(a[0]),Math.round(a[1])),t.clip()},e.prototype.dispatchRenderEvent_=function(t,e,r){var n=this.getLayer();if(n.hasListener(t)){var i=new la(t,this.inversePixelTransform,r,e);n.dispatchEvent(i)}},e.prototype.preRender=function(t,e){this.dispatchRenderEvent_(qo,t,e)},e.prototype.postRender=function(t,e){this.dispatchRenderEvent_(Xo,t,e)},e.prototype.getRenderTransform=function(t,e,r,n,i,o,a){var s=i/2,l=o/2,u=n/e,c=-u,h=-t[0]+a,p=-t[1];return kt(this.tempTransform,s,l,u,c,-r,h,p)},e.prototype.getDataAtPixel=function(t,e,r){var n,i=It(this.inversePixelTransform,t.slice()),o=this.context,a=this.getLayer().getExtent();if(a&&!Qt(a,It(e.pixelToCoordinateTransform,t.slice())))return null;try{var s=Math.round(i[0]),l=Math.round(i[1]),u=document.createElement("canvas"),c=u.getContext("2d");u.width=1,u.height=1,c.clearRect(0,0,1,1),c.drawImage(o.canvas,s,l,1,1,0,0,1,1),n=c.getImageData(0,0,1,1).data}catch(t){return"SecurityError"===t.name?new Uint8Array:n}return 0===n[3]?null:n},e}(ld),hd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pd=function(t){function e(e){var r=t.call(this,e)||this;return r.image_=null,r}return hd(e,t),e.prototype.getImage=function(){return this.image_?this.image_.getImage():null},e.prototype.prepareFrame=function(t){var e=t.layerStatesArray[t.layerIndex],r=t.pixelRatio,n=t.viewState,i=n.resolution,o=this.getLayer().getSource(),a=t.viewHints,s=t.extent;if(void 0!==e.extent&&(s=Te(s,on(e.extent,n.projection))),!a[ns]&&!a[is]&&!Ie(s))if(o){var l=n.projection,u=o.getImage(s,i,r,l);u&&this.loadImage(u)&&(this.image_=u)}else this.image_=null;return!!this.image_},e.prototype.renderFrame=function(t,e){var r=this.image_,n=r.getExtent(),i=r.getResolution(),o=r.getPixelRatio(),a=t.layerStatesArray[t.layerIndex],s=t.pixelRatio,l=t.viewState,u=l.center,c=l.resolution,h=t.size,p=s*i/(c*o),f=Math.round(h[0]*s),d=Math.round(h[1]*s),g=l.rotation;if(g){var y=Math.round(Math.sqrt(f*f+d*d));f=y,d=y}kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,g,-f/2,-d/2),jt(this.inversePixelTransform,this.pixelTransform);var m=Ra(this.pixelTransform);this.useContainer(e,m,a.opacity);var v=this.context,_=v.canvas;_.width!=f||_.height!=d?(_.width=f,_.height=d):this.containerReused||v.clearRect(0,0,f,d);var b=!1;if(a.extent){var x=on(a.extent,l.projection);(b=!te(x,t.extent)&&Re(x,t.extent))&&this.clipUnrotated(v,t,x)}var w=r.getImage(),S=kt(this.tempTransform,f/2,d/2,p,p,0,o*(n[0]-u[0])/i,o*(u[1]-n[3])/i);this.renderedResolution=i*s/o;var E=S[4],T=S[5],C=w.width*S[0],P=w.height*S[3];if(O(v,this.getLayer().getSource().getContextOptions()),this.preRender(v,t),C>=.5&&P>=.5){var R=a.opacity,I=void 0;1!==R&&(I=this.context.globalAlpha,this.context.globalAlpha=R),this.context.drawImage(w,0,0,+w.width,+w.height,Math.round(E),Math.round(T),Math.round(C),Math.round(P)),1!==R&&(this.context.globalAlpha=I)}return this.postRender(v,t),b&&v.restore(),m!==_.style.transform&&(_.style.transform=m),this.container},e}(cd),fd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dd=function(t){function e(e){return t.call(this,e)||this}return fd(e,t),e.prototype.createRenderer=function(){return new pd(this)},e}(ad),gd="preload",yd="useInterimTilesOnError",md=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vd=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.preload,delete i.useInterimTilesOnError,(r=t.call(this,i)||this).setPreload(void 0!==n.preload?n.preload:0),r.setUseInterimTilesOnError(void 0===n.useInterimTilesOnError||n.useInterimTilesOnError),r}return md(e,t),e.prototype.getPreload=function(){return this.get(gd)},e.prototype.setPreload=function(t){this.set(gd,t)},e.prototype.getUseInterimTilesOnError=function(){return this.get(yd)},e.prototype.setUseInterimTilesOnError=function(t){this.set(yd,t)},e}(na),_d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bd=function(t){function e(e){var r=t.call(this,e)||this;return r.extentChanged=!0,r.renderedExtent_=null,r.renderedPixelRatio,r.renderedProjection=null,r.renderedRevision,r.renderedTiles=[],r.newTiles_=!1,r.tmpExtent=[1/0,1/0,-1/0,-1/0],r.tmpTileRange_=new _u(0,0,0,0),r}return _d(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),r=t.getState(),n=e.getUseInterimTilesOnError();return r==to||r==ro||r==eo&&!n},e.prototype.getTile=function(t,e,r,n){var i=n.pixelRatio,o=n.viewState.projection,a=this.getLayer(),s=a.getSource().getTile(t,e,r,i,o);return s.getState()==eo&&(a.getUseInterimTilesOnError()?a.getPreload()>0&&(this.newTiles_=!0):s.setState(to)),this.isDrawableTile(s)||(s=s.getInterimTile()),s},e.prototype.loadedTileCallback=function(e,r,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,r,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var r=t.layerStatesArray[t.layerIndex],n=t.viewState,i=n.projection,a=n.resolution,s=n.center,l=n.rotation,u=t.pixelRatio,c=this.getLayer(),h=c.getSource(),p=h.getRevision(),f=h.getTileGridForProjection(i),g=f.getZForResolution(a,h.zDirection),y=f.getResolution(g),m=t.extent,v=r.extent&&on(r.extent,i);v&&(m=Te(m,on(r.extent,i)));var _=h.getTilePixelRatio(u),b=Math.round(t.size[0]*_),x=Math.round(t.size[1]*_);if(l){var w=Math.round(Math.sqrt(b*b+x*x));b=w,x=w}var S=y*b/2/_,E=y*x/2/_,T=[s[0]-S,s[1]-E,s[0]+S,s[1]+E],C=f.getTileRangeForExtentAndZ(m,g),P={};P[g]={};var R=this.createLoadedTileFinder(h,i,P),I=this.tmpExtent,L=this.tmpTileRange_;this.newTiles_=!1;for(var M=C.minX;M<=C.maxX;++M)for(var F=C.minY;F<=C.maxY;++F){var A=this.getTile(g,M,F,t);if(this.isDrawableTile(A)){var k=o(this);if(A.getState()==to){P[g][A.tileCoord.toString()]=A;var j=A.inTransition(k);this.newTiles_||!j&&-1!==this.renderedTiles.indexOf(A)||(this.newTiles_=!0)}if(1===A.getAlpha(k,t.time))continue}var N=f.getTileCoordChildTileRange(A.tileCoord,L,I),D=!1;N&&(D=R(g+1,N)),D||f.forEachTileCoordParentTileRange(A.tileCoord,R,L,I)}var G=y/a;kt(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/_,1/_,l,-b/2,-x/2);var z=Ra(this.pixelTransform);this.useContainer(e,z,r.opacity);var U=this.context,B=U.canvas;jt(this.inversePixelTransform,this.pixelTransform),kt(this.tempTransform,b/2,x/2,G,G,0,-b/2,-x/2),B.width!=b||B.height!=x?(B.width=b,B.height=x):this.containerReused||U.clearRect(0,0,b,x),v&&this.clipUnrotated(U,t,v),O(U,h.getContextOptions()),this.preRender(U,t),this.renderedTiles.length=0;var V,Y,W,q=Object.keys(P).map(Number);q.sort(d),1!==r.opacity||this.containerReused&&!h.getOpaque(t.viewState.projection)?(V=[],Y=[]):q=q.reverse();for(var X=q.length-1;X>=0;--X){var Z=q[X],K=h.getTilePixelSize(Z,u,i),H=f.getResolution(Z)/y,$=K[0]*H*G,J=K[1]*H*G,Q=f.getTileCoordForCoordAndZ(Ce(T),Z),tt=f.getTileCoordExtent(Q),et=It(this.tempTransform,[_*(tt[0]-T[0])/y,_*(T[3]-tt[3])/y]),rt=_*h.getGutterForProjection(i),nt=P[Z];for(var it in nt){var ot=(A=nt[it]).tileCoord,at=et[0]-(Q[1]-ot[1])*$,st=Math.round(at+$),lt=et[1]-(Q[2]-ot[2])*J,ut=Math.round(lt+J),ct=st-(M=Math.round(at)),ht=ut-(F=Math.round(lt)),pt=g===Z;if(!(j=pt&&1!==A.getAlpha(o(this),t.time)))if(V){U.save(),W=[M,F,M+ct,F,M+ct,F+ht,M,F+ht];for(var ft=0,dt=V.length;ftthis._maxQueueLength;)this._queue.shift().callback(null,null)},e.prototype._dispatch=function(){if(0===this._running&&this._queue.length>0){var t=this._queue.shift();this._job=t;var e=t.inputs[0].width,r=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),i=this._workers.length;if(this._running=i,1===i)this._workers[0].postMessage({buffers:n,meta:t.meta,imageOps:this._imageOps,width:e,height:r},n);else for(var o=t.inputs[0].data.length,a=4*Math.ceil(o/4/i),s=0;sStamen Design, under CC BY 3.0.',nd],Vd={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},Yd={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},Wd=function(t){function e(e){var r=e.layer.indexOf("-"),n=-1==r?e.layer:e.layer.slice(0,r),i=Yd[n],o=Vd[e.layer],a=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+o.extension;return t.call(this,{attributions:Bd,cacheSize:e.cacheSize,crossOrigin:"anonymous",imageSmoothing:e.imageSmoothing,maxZoom:null!=e.maxZoom?e.maxZoom:i.maxZoom,minZoom:null!=e.minZoom?e.minZoom:i.minZoom,opaque:o.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:a,wrapX:e.wrapX})||this}return Ud(e,t),e}(Jp),qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Xd=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).params_=n.params||{},r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.setKey(r.getKeyForParams_()),r}return qd(e,t),e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){var s,l=i.getCode().split(":").pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=r.join(","),o.BBOXSR=l,o.IMAGESR=l,o.DPI=Math.round(o.DPI?o.DPI*n:90*n),1==a.length)s=a[0];else s=a[We(fu(t),a.length)];return mc(s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_?t:1},e.prototype.updateParams=function(t){O(this.params_,t),this.setKey(this.getKeyForParams_())},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_||(e=1);var i=n.getTileCoordExtent(t,this.tmpExtent_),o=Is(n.getTileSize(t[0]),this.tmpSize);1!=e&&(o=Rs(o,e,this.tmpSize));var a={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return O(a,this.params_),this.getRequestUrl_(t,o,i,e,r,a)}},e}(Xp),Zd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kd=function(t){function e(e,r,n){var i=t.call(this,e,to)||this;return i.tileSize_=r,i.text_=n,i.canvas_=null,i}return Zd(e,t),e.prototype.getImage=function(){if(this.canvas_)return this.canvas_;var t=this.tileSize_,e=uo(t[0],t[1]);return e.strokeStyle="grey",e.strokeRect(.5,.5,t[0]+.5,t[1]+.5),e.fillStyle="grey",e.strokeStyle="white",e.textAlign="center",e.textBaseline="middle",e.font="24px sans-serif",e.lineWidth=4,e.strokeText(this.text_,t[0]/2,t[1]/2,t[0]),e.fillText(this.text_,t[0]/2,t[1]/2,t[0]),this.canvas_=e.canvas,e.canvas},e.prototype.load=function(){},e}(lo),Hd=function(t){function e(e){var r=e||{};return t.call(this,{opaque:!1,projection:r.projection,tileGrid:r.tileGrid,wrapX:void 0===r.wrapX||r.wrapX,zDirection:r.zDirection})||this}return Zd(e,t),e.prototype.getTile=function(t,e,r){var n=cu(t,e,r);if(this.tileCache.containsKey(n))return this.tileCache.get(n);var i=Is(this.tileGrid.getTileSize(t)),o=[t,e,r],a=this.getTileCoordForTileUrlFunction(o),s=void 0;s=a?"z:"+a[0]+" x:"+a[1]+" y:"+a[2]:"none";var l=new Kd(o,i,s);return this.tileCache.set(n,l),l},e}(Jp),$d=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Jd=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,imageSmoothing:e.imageSmoothing,projection:Gr("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Jo,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition})||this;if(r.tileJSON_=null,r.tileSize_=e.tileSize,e.url)if(e.jsonp)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return $d(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o,tileSize:this.tileSize_});if(this.tileGrid=s,this.tileUrlFunction=fc(t.tiles,s),void 0!==t.attribution&&!this.getAttributions()){var l=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(l,e.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState(Qo)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e}(Xp),Qd=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tg=function(t){function e(e){var r=this,n=e||{},i=n.params||{},o=!("TRANSPARENT"in i)||i.TRANSPARENT;return(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,imageSmoothing:n.imageSmoothing,opaque:!o,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileClass:n.tileClass,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition})||this).gutter_=void 0!==n.gutter?n.gutter:0,r.params_=i,r.v13_=!0,r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=[1/0,1/0,-1/0,-1/0],r.updateV13_(),r.setKey(r.getKeyForParams_()),r}return Qd(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){var i=Gr(r),o=this.getProjection(),a=this.getTileGrid();a||(a=this.getTileGridForProjection(i));var s=a.getZForResolution(e,this.zDirection),l=a.getTileCoordForCoordAndZ(t,s);if(!(a.getResolutions().length<=l[0])){var u=a.getResolution(l[0]),c=a.getTileCoordExtent(l,this.tmpExtent_),h=Is(a.getTileSize(l[0]),this.tmpSize),p=this.gutter_;0!==p&&(h=Os(h,p,this.tmpSize),c=Ht(c,u*p,c)),o&&o!==i&&(u=tc(o,i,t,u),c=$r(c,i,o),t=Hr(t,i,o));var f={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};O(f,this.params_,n);var d=Math.floor((t[0]-c[0])/u),g=Math.floor((c[3]-t[1])/u);return f[this.v13_?"I":"X"]=d,f[this.v13_?"J":"Y"]=g,this.getRequestUrl_(l,h,c,1,o||i,f)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.urls[0]){var r={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return O(r,e),mc(this.urls[0],r)}},e.prototype.getGutter=function(){return this.gutter_},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){if(o.WIDTH=e[0],o.HEIGHT=e[1],o[this.v13_?"CRS":"SRS"]=i.getCode(),"STYLES"in this.params_||(o.STYLES=""),1!=n)switch(this.serverType_){case Hf:var s=90*n+.5|0;"FORMAT_OPTIONS"in o?o.FORMAT_OPTIONS+=";dpi:"+s:o.FORMAT_OPTIONS="dpi:"+s;break;case $f:o.MAP_RESOLUTION=90*n;break;case Kf:case Jf:o.DPI=90*n;break;default:pt(!1,52)}var l,u=i.getAxisOrientation(),c=r;if(this.v13_&&"ne"==u.substr(0,2)){var h=void 0;h=r[0],c[0]=r[1],c[1]=h,h=r[2],c[2]=r[3],c[3]=h}if(o.BBOX=c.join(","),1==a.length)l=a[0];else l=a[We(fu(t),a.length)];return mc(l,o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_&&void 0!==this.serverType_?t:1},e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.updateParams=function(t){O(this.params_,t),this.updateV13_(),this.setKey(this.getKeyForParams_())},e.prototype.updateV13_=function(){var t=this.params_.VERSION||"1.3.0";this.v13_=br(t,"1.3")>=0},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var i=n.getResolution(t[0]),o=n.getTileCoordExtent(t,this.tmpExtent_),a=Is(n.getTileSize(t[0]),this.tmpSize),s=this.gutter_;0!==s&&(a=Os(a,s,this.tmpSize),o=Ht(o,i*s,o)),1!=e&&(a=Rs(a,e,this.tmpSize));var l={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return O(l,this.params_),this.getRequestUrl_(t,a,o,e,r,l)}},e}(Xp),eg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rg=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r)||this;return s.src_=n,s.extent_=i,s.preemptive_=o,s.grid_=null,s.keys_=null,s.data_=null,s.jsonp_=a,s}return eg(e,t),e.prototype.getImage=function(){return null},e.prototype.getData=function(t){if(!this.grid_||!this.keys_)return null;var e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),r=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-r)*this.grid_.length)];if("string"!=typeof n)return null;var i=n.charCodeAt(Math.floor(e*n.length));i>=93&&i--,i>=35&&i--;var o=null;if((i-=32)in this.keys_){var a=this.keys_[i];o=this.data_&&a in this.data_?this.data_[a]:a}return o},e.prototype.forDataAtCoordinate=function(t,e,r){this.state==ro&&!0===r?(this.state=Ji,K(this,F,(function(r){e(this.getData(t))}),this),this.loadInternal_()):!0===r?setTimeout(function(){e(this.getData(t))}.bind(this),0):e(this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=eo,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=to,this.changed()},e.prototype.loadInternal_=function(){if(this.state==Ji)if(this.state=Qi,this.jsonp_)Au(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}},e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(r)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_?this.loadInternal_():this.setState(ro)},e}(lo),ng=function(t){function e(e){var r=t.call(this,{projection:Gr("EPSG:3857"),state:Jo})||this;if(r.preemptive_=void 0===e.preemptive||e.preemptive,r.tileUrlFunction_=gc,r.template_=void 0,r.jsonp_=e.jsonp||!1,e.url)if(r.jsonp_)Au(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):pt(!1,51);return r}return eg(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,r,n){if(this.tileGrid){var i=this.tileGrid.getZForResolution(e,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,i);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,r,n)}else!0===n?setTimeout((function(){r(null)}),0):r(null)},e.prototype.handleTileJSONError=function(){this.setState(ta)},e.prototype.handleTileJSONResponse=function(t){var e,r=Gr("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Zr(r,n);e=Ae(t.bounds,i)}var o=t.minzoom||0,a=t.maxzoom||22,s=lc({extent:hc(n),maxZoom:a,minZoom:o});this.tileGrid=s,this.template_=t.template;var l=t.grids;if(l){if(this.tileUrlFunction_=fc(l,s),void 0!==t.attribution){var u=void 0!==e?e:r.getExtent();this.setAttributions((function(e){return Re(u,e.extent)?[t.attribution]:null}))}this.setState(Qo)}else this.setState(ta)},e.prototype.getTile=function(t,e,r,n,i){var o=cu(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=this.tileUrlFunction_(s,n,i),u=new rg(a,void 0!==l?Ji:ro,void 0!==l?l:"",this.tileGrid.getTileCoordExtent(a),this.preemptive_,this.jsonp_);return this.tileCache.set(o,u),u},e.prototype.useTile=function(t,e,r){var n=cu(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Bp),ig=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),og=function(t){function e(e){var r=this,n=e.projection||"EPSG:3857",i=e.extent||hc(n),o=e.tileGrid||lc({extent:i,maxResolution:e.maxResolution,maxZoom:void 0!==e.maxZoom?e.maxZoom:22,minZoom:e.minZoom,tileSize:e.tileSize||512});return(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,opaque:!1,projection:n,state:e.state,tileGrid:o,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:ag,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:void 0===e.zDirection?1:e.zDirection})||this).format_=e.format?e.format:null,r.loadingTiles_={},r.sourceTileCache=new yu(r.tileCache.highWaterMark),r.overlaps_=null==e.overlaps||e.overlaps,r.tileClass=e.tileClass?e.tileClass:Eu,r.tileGrids_={},r}return ig(e,t),e.prototype.getFeaturesInExtent=function(t){var e=[],r=this.tileCache;if(0===r.getCount())return e;var n=pu(r.peekFirstKey())[0],i=this.tileGrid;return r.forEach((function(r){if(r.tileCoord[0]===n&&r.getState()===to)for(var o=r.getSourceTiles(),a=0,s=o.length;a0&&g[0].tileCoord[0]===f)c=g,h=!0,p=f;else{c=[],p=f+1;do{--p,h=!0,l.forEachTileCoord(o,p,function(n){var i,o=this.tileUrlFunction(n,t,e);if(void 0!==o)if(this.sourceTileCache.containsKey(o)){var a=(i=this.sourceTileCache.get(o)).getState();if(a===to||a===eo||a===ro)return void c.push(i)}else p===f&&((i=new this.tileClass(n,Ji,o,this.format_,this.tileLoadFunction)).extent=l.getTileCoordExtent(n),i.projection=e,i.resolution=l.getResolution(n[0]),this.sourceTileCache.set(o,i),i.addEventListener(F,this.handleTileChange.bind(this)),i.load());h=h&&i&&i.getState()===to,i&&i.getState()!==ro&&r.getState()===Ji&&(r.loadingSourceTiles++,i.addEventListener(F,(function t(){var e=i.getState(),n=i.getKey();if(e===to||e===eo){e===to?(i.removeEventListener(F,t),r.loadingSourceTiles--,delete r.errorSourceTileKeys[n]):e===eo&&(r.errorSourceTileKeys[n]=!0);var o=Object.keys(r.errorSourceTileKeys).length;r.loadingSourceTiles-o==0&&(r.hifi=0===o,r.sourceZ=f,r.setState(to))}})))}.bind(this)),h||(c.length=0)}while(!h&&p>d)}return r.getState()===Ji&&r.setState(Qi),h&&(r.hifi=f===p,r.sourceZ=p,r.getState()0&&(r.tileUrlFunction=dc(o.map(r.createFromWMTSTemplate.bind(r)))),r}return ug(e,t),e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(dc(t.map(this.createFromWMTSTemplate.bind(this))),e)},e.prototype.getDimensions=function(){return this.dimensions_},e.prototype.getFormat=function(){return this.format_},e.prototype.getLayer=function(){return this.layer_},e.prototype.getMatrixSet=function(){return this.matrixSet_},e.prototype.getRequestEncoding=function(){return this.requestEncoding_},e.prototype.getStyle=function(){return this.style_},e.prototype.getVersion=function(){return this.version_},e.prototype.getKeyForDimensions_=function(){var t=0,e=[];for(var r in this.dimensions_)e[t++]=r+"-"+this.dimensions_[r];return e.join("/")},e.prototype.updateDimensions=function(t){O(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e.prototype.createFromWMTSTemplate=function(t){var e=this.requestEncoding_,r={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==sg&&O(r,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==sg?mc(t,r):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in r?r[e.toLowerCase()]:t}));var n=this.tileGrid,i=this.dimensions_;return function(r,o,a){if(r){var s={TileMatrix:n.getMatrixId(r[0]),TileCol:r[1],TileRow:r[2]};O(s,i);var l=t;return l=e==sg?mc(l,s):l.replace(/\{(\w+?)\}/g,(function(t,e){return s[e]}))}}},e}(Xp);var hg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pg="GENERATE_BUFFERS",fg=function(t){function e(e,r){var n=t.call(this,e)||this,i=r||{};return n.helper=new gh({postProcesses:i.postProcesses,uniforms:i.uniforms}),void 0!==i.className&&(n.helper.getCanvas().className=i.className),n}return hg(e,t),e.prototype.disposeInternal=function(){this.helper.dispose(),t.prototype.disposeInternal.call(this)},e.prototype.getShaderCompileErrors=function(){return this.helper.getShaderCompileErrors()},e.prototype.dispatchRenderEvent_=function(t,e){var r=this.getLayer();if(r.hasListener(t)){var n=new la(t,null,e,null);r.dispatchEvent(n)}},e.prototype.preRender=function(t){this.dispatchRenderEvent_(qo,t)},e.prototype.postRender=function(t){this.dispatchRenderEvent_(Xo,t)},e}(ld),dg=[],gg={vertexPosition:0,indexPosition:0};function yg(t,e,r,n,i){t[e+0]=r,t[e+1]=n,t[e+2]=i}function mg(t,e){var r=e||[];return r[0]=Math.floor(t/256/256/256)/255,r[1]=Math.floor(t/256/256)%256/255,r[2]=Math.floor(t/256)%256/255,r[3]=t%256/255,r}function vg(t){var e=0;return e+=Math.round(256*t[0]*256*256*255),e+=Math.round(256*t[1]*256*255),e+=Math.round(256*t[2]*255),e+=Math.round(255*t[3])}var _g=fg,bg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xg="renderOrder",wg=function(t){function e(e){var r=this,n=e||{},i=O({},n);return delete i.style,delete i.renderBuffer,delete i.updateWhileAnimating,delete i.updateWhileInteracting,(r=t.call(this,i)||this).declutter_=void 0!==n.declutter&&n.declutter,r.renderBuffer_=void 0!==n.renderBuffer?n.renderBuffer:100,r.style_=null,r.styleFunction_=void 0,r.setStyle(n.style),r.updateWhileAnimating_=void 0!==n.updateWhileAnimating&&n.updateWhileAnimating,r.updateWhileInteracting_=void 0!==n.updateWhileInteracting&&n.updateWhileInteracting,r}return bg(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(xg)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new Pp.a(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(xg,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:_p,this.styleFunction_=null===t?void 0:mp(this.style_),this.changed()},e}(na),Sg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Eg=function(t){function e(e,r){var n=this,i=r.uniforms||{},a=[1,0,0,1,0,0];i[ah]=a,(n=t.call(this,e,{className:r.className,uniforms:i,postProcesses:r.postProcesses})||this).sourceRevision_=-1,n.verticesBuffer_=new Qc(34962,35048),n.hitVerticesBuffer_=new Qc(34962,35048),n.indicesBuffer_=new Qc(34963,35048),n.program_=n.helper.getProgram(r.fragmentShader,r.vertexShader),n.hitDetectionEnabled_=!(!r.hitFragmentShader||!r.hitVertexShader),n.hitProgram_=n.hitDetectionEnabled_&&n.helper.getProgram(r.hitFragmentShader,r.hitVertexShader);var s=r.attributes?r.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:ph.FLOAT}})):[];n.attributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT}].concat(s),n.hitDetectionAttributes=[{name:"a_position",size:2,type:ph.FLOAT},{name:"a_index",size:1,type:ph.FLOAT},{name:"a_hitColor",size:4,type:ph.FLOAT},{name:"a_featureUid",size:1,type:ph.FLOAT}].concat(s),n.customAttributes=r.attributes?r.attributes:[],n.previousExtent_=[1/0,1/0,-1/0,-1/0],n.currentTransform_=a,n.renderTransform_=[1,0,0,1,0,0],n.invertRenderTransform_=[1,0,0,1,0,0],n.renderInstructions_=new Float32Array(0),n.hitRenderInstructions_=new Float32Array(0),n.hitRenderTarget_=n.hitDetectionEnabled_&&new mh(n.helper),n.worker_=new Worker(Hc),n.worker_.addEventListener("message",function(t){var e=t.data;if(e.type===pg){var r=e.projectionTransform;e.hitDetection?(this.hitVerticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.hitVerticesBuffer_)):(this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_)),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=r,jt(this.invertRenderTransform_,this.renderTransform_),e.hitDetection?this.hitRenderInstructions_=new Float32Array(t.data.renderInstructions):this.renderInstructions_=new Float32Array(t.data.renderInstructions),this.getLayer().changed()}}.bind(n)),n.featureCache_={},n.featureCount_=0;var l=n.getLayer().getSource();return n.sourceListenKeys_=[Z(l,ef,n.handleSourceFeatureAdded_,n),Z(l,rf,n.handleSourceFeatureChanged_,n),Z(l,of,n.handleSourceFeatureDelete_,n),Z(l,nf,n.handleSourceFeatureClear_,n)],l.forEachFeature(function(t){this.featureCache_[o(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.featureCount_++}.bind(n)),n}return Sg(e,t),e.prototype.handleSourceFeatureAdded_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++},e.prototype.handleSourceFeatureChanged_=function(t){var e=t.feature;this.featureCache_[o(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}},e.prototype.handleSourceFeatureDelete_=function(t){var e=t.feature;delete this.featureCache_[o(e)],this.featureCount_--},e.prototype.handleSourceFeatureClear_=function(){this.featureCache_={},this.featureCount_=0},e.prototype.renderFrame=function(t){this.preRender(t);var e=this.indicesBuffer_.getSize();this.helper.drawElements(0,e),this.helper.finalizeDraw(t);var r=this.helper.getCanvas(),n=t.layerStatesArray[t.layerIndex].opacity;return n!==parseFloat(r.style.opacity)&&(r.style.opacity=String(n)),this.hitDetectionEnabled_&&(this.renderHitDetection(t),this.hitRenderTarget_.clearCachedData()),this.postRender(t),r},e.prototype.prepareFrame=function(t){var e=this.getLayer(),r=e.getSource(),n=t.viewState,i=!t.viewHints[ns]&&!t.viewHints[is],o=!ue(this.previousExtent_,t.extent),a=this.sourceRevision_c&&this.instructions.push([Ig.CUSTOM,c,i,t,r,Nn])):l==bt.POINT&&(n=t.getFlatCoordinates(),this.coordinates.push(n[0],n[1]),i=this.coordinates.length,this.instructions.push([Ig.CUSTOM,c,i,t,r]));this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[Ig.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Ig.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var r,n,i=e.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=r.lineWidth,this.bufferedMaxExtent_=null)}else r.strokeStyle=void 0,r.lineCap=void 0,r.lineDash=null,r.lineDashOffset=void 0,r.lineJoin=void 0,r.lineWidth=void 0,r.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,r=[Ig.SET_FILL_STYLE,e];return"string"!=typeof e&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Ig.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var r=t.strokeStyle,n=t.lineCap,i=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,s=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=r||t.currentLineCap!=n||i!=t.currentLineDash&&!b(t.currentLineDash,i)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=s||t.currentMiterLimit!=l)&&(void 0!==r&&e.call(this,t),t.currentStrokeStyle=r,t.currentLineCap=n,t.currentLineDash=i,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=s,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Ig.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=$t(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Ht(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(ku),Fg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ag=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o.declutterImageWithText_=void 0,o}return Fg(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Ig.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Ig.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var r=t.getAnchor(),n=t.getSize(),i=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),a=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=r[0],this.anchorY_=r[1],this.hitDetectionImage_=i,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=a[0],this.originY_=a[1],this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterImageWithText_=e},e}(Mg),kg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jg=function(t){function e(e,r,n,i){return t.call(this,e,r,n,i)||this}return kg(e,t),e.prototype.drawFlatCoordinates_=function(t,e,r,n){var i=this.coordinates.length,o=this.appendFlatLineCoordinates(t,e,r,n,!1,!1),a=[Ig.MOVE_TO_LINE_TO,i,o];return this.instructions.push(a),this.hitDetectionInstructions.push(a),r},e.prototype.drawLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);var o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(Og),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Ig.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],Pg);for(var o=t.getEnds(),a=t.getFlatCoordinates(),s=t.getStride(),l=0,u=0,c=o.length;ut&&(m>y&&(y=m,d=v,g=o),m=0,v=o-i)),a=s,c=p,h=f),l=_,u=b}return(m+=s)>y?[v,o]:[d,g]}var zg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ug={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},Bg=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o.declutterImageWithText_=void 0,o}return zg(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var r=this.textFillState_,n=this.textStrokeState_,i=this.textState_;if(""!==this.text_&&i&&(r||n)){var o=this.coordinates,a=o.length,s=t.getType(),l=null,u=t.getStride();if(i.placement!==Ep||s!=bt.LINE_STRING&&s!=bt.MULTI_LINE_STRING&&s!=bt.POLYGON&&s!=bt.MULTI_POLYGON){var c=i.overflow?null:[];switch(s){case bt.POINT:case bt.MULTI_POINT:l=t.getFlatCoordinates();break;case bt.LINE_STRING:l=t.getFlatMidpoint();break;case bt.CIRCLE:l=t.getCenter();break;case bt.MULTI_LINE_STRING:l=t.getFlatMidpoints(),u=2;break;case bt.POLYGON:l=t.getFlatInteriorPoint(),i.overflow||c.push(l[2]/this.resolution),u=3;break;case bt.MULTI_POLYGON:var h=t.getFlatInteriorPoints();l=[];for(x=0,w=h.length;xP[2]}else T=b>C;var R,I=Math.PI,L=[],M=w+n===e;if(y=0,m=S,p=t[e=w],f=t[e+1],M){v();var F=Math.atan2(f-g,p-d);T&&(F+=F>0?-I:I);var A=(C+b)/2,k=(O+x)/2;return L[0]=[A,k,(E-o)/2,F,i],L}for(var j=0,N=i.length;j0?-I:I),void 0!==R){var G=D-R;if(G+=G>I?-2*I:G<-I?2*I:0,Math.abs(G)>a)return null}R=D;for(var z=j,U=0;jt?t-l:i,b=o+u>e?e-u:o,x=f[3]+_*h[0]+f[1],w=f[0]+b*h[1]+f[2],S=m-f[3],E=v-f[0];return(d||0!==c)&&(Zg[0]=S,$g[0]=S,Zg[1]=E,Kg[1]=E,Kg[0]=S+x,Hg[0]=Kg[0],Hg[1]=E+w,$g[1]=Hg[1]),0!==c?(It(y=kt([1,0,0,1,0,0],r,n,1,1,c,-r,-n),Zg),It(y,Kg),It(y,Hg),It(y,$g),ie(Math.min(Zg[0],Kg[0],Hg[0],$g[0]),Math.min(Zg[1],Kg[1],Hg[1],$g[1]),Math.max(Zg[0],Kg[0],Hg[0],$g[0]),Math.max(Zg[1],Kg[1],Hg[1],$g[1]),Xg)):ie(Math.min(S,S+x),Math.min(E,E+w),Math.max(S,S+x),Math.max(E,E+w),Xg),p&&(m=Math.round(m),v=Math.round(v)),{drawImageX:m,drawImageY:v,drawImageW:_,drawImageH:b,originX:l,originY:u,declutterBox:{minX:Xg[0],minY:Xg[1],maxX:Xg[2],maxY:Xg[3],value:g},canvasTransform:y,scale:h}},t.prototype.replayImageOrLabel_=function(t,e,r,n,i,o,a){var s=!(!o&&!a),l=n.declutterBox,u=t.canvas,c=a?a[2]*n.scale[0]/2:0;return l.minX-c<=u.width/e&&l.maxX+c>=0&&l.minY-c<=u.height/e&&l.maxY+c>=0&&(s&&this.replayTextBackground_(t,Zg,Kg,Hg,$g,o,a),Oa(t,n.canvasTransform,i,r,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=It(this.renderedTransform_,[0,0]),r=512*this.pixelRatio;t.save(),t.translate(e[0]%r,e[1]%r),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,r,n){var i=this.textStates[e],o=this.createLabel(t,e,n,r),a=this.strokeStates[r],s=this.pixelRatio,l=ty(t,i.textAlign||"center"),u=Ug[i.textBaseline||"middle"],c=a&&a.lineWidth?a.lineWidth:0;return{label:o,anchorX:l*(o.width/s-2*i.scale[0])+2*(.5-l)*c,anchorY:u*o.height/s+2*(.5-u)*c}},t.prototype.execute_=function(t,e,r,n,i,o,a,s){var l;this.pixelCoordinates_&&b(r,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=ln(this.coordinates,0,this.coordinates.length,2,r,this.pixelCoordinates_),Rt(this.renderedTransform_,r));for(var u,c,h,p,f,d,g,y,m,v,_,x,w,S,E,T,C=0,O=n.length,P=0,R=0,I=0,L=null,M=null,F=this.coordinateCache_,A=this.viewRotation_,k=Math.round(1e12*Math.atan2(-r[1],r[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:A},N=this.instructions!=n||this.overlaps?0:200;CN&&(this.fill_(t),R=0),I>N&&(t.stroke(),I=0),R||I||(t.beginPath(),p=NaN,f=NaN),++C;break;case Ig.CIRCLE:var G=l[P=D[1]],z=l[P+1],U=l[P+2]-G,B=l[P+3]-z,V=Math.sqrt(U*U+B*B);t.moveTo(G+V,z),t.arc(G,z,V,0,2*Math.PI,!0),++C;break;case Ig.CLOSE_PATH:t.closePath(),++C;break;case Ig.CUSTOM:P=D[1],u=D[2];var Y=D[3],W=D[4],q=6==D.length?D[5]:void 0;j.geometry=Y,j.feature=w,C in F||(F[C]=[]);var X=F[C];q?q(l,P,u,2,X):(X[0]=l[P],X[1]=l[P+1],X.length=2),W(X,j),++C;break;case Ig.DRAW_IMAGE:P=D[1],u=D[2],y=D[3],c=D[4],h=D[5];var Z=D[6],K=D[7],H=D[8],$=D[9],J=D[10],Q=D[11],tt=D[12],et=D[13],rt=D[14];if(!y&&D.length>=19){m=D[18],v=D[19],_=D[20],x=D[21];var nt=this.drawLabelWithPointPlacement_(m,v,_,x);y=nt.label,D[3]=y;var it=D[22];c=(nt.anchorX-it)*this.pixelRatio,D[4]=c;var ot=D[23];h=(nt.anchorY-ot)*this.pixelRatio,D[5]=h,Z=y.height,D[6]=Z,et=y.width,D[13]=et}var at=void 0;D.length>24&&(at=D[24]);var st=void 0,lt=void 0,ut=void 0;D.length>16?(st=D[15],lt=D[16],ut=D[17]):(st=fa,lt=!1,ut=!1),J&&k?Q+=A:J||k||(Q-=A);for(var ct=0;P0){if(!o||h!==zu&&h!==Vu||-1!==o.indexOf(t)){var u=(p[s]-3)/4,f=n-u%a,d=n-(u/a|0),g=i(t,e,f*f+d*d);if(g)return g}c.clearRect(0,0,a,a);break}}var g,y,m,v,_,b=Object.keys(this.executorsByZIndex_).map(Number);for(b.sort(d),g=b.length-1;g>=0;--g){var x=b[g].toString();for(m=this.executorsByZIndex_[x],y=ry.length-1;y>=0;--y)if(void 0!==(v=m[h=ry[y]])&&(_=v.executeHitDetection(c,s,r,f,u)))return _}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var r=e[0],n=e[1],i=e[2],o=e[3],a=[r,n,r,o,i,o,i,n];return ln(a,0,8,2,t,a),a},t.prototype.isEmpty=function(){return I(this.executorsByZIndex_)},t.prototype.execute=function(t,e,r,n,i,o,a){var s=Object.keys(this.executorsByZIndex_).map(Number);s.sort(d),this.maxExtent_&&(t.save(),this.clip(t,r));var l,u,c,h,p,f,g=o||ry;for(a&&s.reverse(),l=0,u=s.length;lr)break;var s=n[a];s||(s=[],n[a]=s),s.push(4*((t+i)*e+(t+o))+3),i>0&&s.push(4*((t-i)*e+(t+o))+3),o>0&&(s.push(4*((t+i)*e+(t-o))+3),i>0&&s.push(4*((t-i)*e+(t-o))+3))}for(var l=[],u=(i=0,n.length);i0&&(a.width=0),this.container;var u=Math.round(t.size[0]*r),c=Math.round(t.size[1]*r);a.width!=u||a.height!=c?(a.width=u,a.height=c,a.style.transform!==i&&(a.style.transform=i)):this.containerReused||o.clearRect(0,0,u,c),this.preRender(o,t);var h=t.viewState,p=h.projection,f=!1;if(n.extent&&this.clipping){var d=on(n.extent,p);(f=!te(d,t.extent)&&Re(d,t.extent))&&this.clipUnrotated(o,t,d)}this.renderWorlds(s,t),f&&o.restore(),this.postRender(o,t);var g=n.opacity,y=this.container;return g!==parseFloat(y.style.opacity)&&(y.style.opacity=1===g?"":String(g)),this.renderedRotation_!==h.rotation&&(this.renderedRotation_=h.rotation,this.hitDetectionImageData_=null),this.container},e.prototype.getFeatures=function(t){return new Promise(function(e){if(!this.hitDetectionImageData_&&!this.animatingOrInteracting_){var r=[this.context.canvas.width,this.context.canvas.height];It(this.pixelTransform,r);var n=this.renderedCenter_,i=this.renderedResolution_,o=this.renderedRotation_,a=this.renderedProjection_,s=this.renderedExtent_,l=this.getLayer(),u=[],c=r[0]/2,h=r[1]/2;u.push(this.getRenderTransform(n,i,o,.5,c,h,0).slice());var p=l.getSource(),f=a.getExtent();if(p.getWrapX()&&a.canWrapX()&&!te(f,s)){for(var d=s[0],g=Pe(f),y=0,m=void 0;df[2];)m=g*++y,u.push(this.getRenderTransform(n,i,o,.5,c,h,m).slice()),d-=g}this.hitDetectionImageData_=sy(r,u,this.renderedFeatures_,l.getStyleFunction(),s,i,o)}e(ly(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){var a=this;if(this.replayGroup_){var s,l=e.viewState.resolution,u=e.viewState.rotation,c=this.getLayer(),h={},p=function(t,e,r){var a=o(t),s=h[a];if(s){if(!0!==s&&rv[0]&&x[2]>v[2]&&m.push([x[0]-_,x[1],x[2]-_,x[3]])}if(!this.dirty_&&this.renderedResolution_==c&&this.renderedRevision_==p&&this.renderedRenderOrder_==d&&te(this.renderedExtent_,y))return this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var w,S=new Yg(Xu(c,h),y,c,h);this.getLayer().getDeclutter()&&(w=new Yg(Xu(c,h),y,c,h));var E,T=tn();if(T){for(var C=0,O=m.length;C0)e([]);else{var m=Ce(h.getTileCoordExtent(n.wrappedTileCoord)),v=[(p[0]-m[0])/c,(m[1]-p[1])/c],_=n.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]),b=n.hitDetectionImageData[a];if(!b&&!this.animatingOrInteracting_){var x=Is(h.getTileSize(h.getZForResolution(c))),w=[x[0]/2,x[1]/2],S=this.renderedRotation_;b=sy(x,[this.getRenderTransform(h.getTileCoordCenter(n.wrappedTileCoord),c,0,.5,w[0],w[1],0)],_,i.getStyleFunction(),h.getTileCoordExtent(n.wrappedTileCoord),n.getReplayState(i).renderedResolution,S),n.hitDetectionImageData[a]=b}e(ly(v,_,b))}}.bind(this))},e.prototype.handleFontsChanged=function(){P(this.renderTileImageQueue_);var t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.renderDeclutter=function(t){for(var e=t.viewHints,r=!(e[ns]||e[is]),n=this.renderedTiles,i=0,a=n.length;i=0;--u)l[u].execute(this.context,1,this.getTileRenderTransform(s,t),t.viewState.rotation,r,void 0,t.declutterTree)}},e.prototype.getTileRenderTransform=function(t,e){var r=e.pixelRatio,n=e.viewState,i=n.center,o=n.resolution,a=n.rotation,s=e.size,l=Math.round(s[0]*r),u=Math.round(s[1]*r),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),h=t.tileCoord,p=c.getTileCoordExtent(t.wrappedTileCoord),f=c.getTileCoordExtent(h,this.tmpExtent)[0]-p[0];return Ot(Mt(this.inversePixelTransform.slice(),1/r,1/r),this.getRenderTransform(i,o,a,r,l,u,f))},e.prototype.renderFrame=function(e,r){var n=e.viewHints,i=!(n[ns]||n[is]);this.renderQueuedTileImages_(i,e),t.prototype.renderFrame.call(this,e,r),this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;var a=this.getLayer(),s=a.getRenderMode();if(s===fy)return this.container;var l=a.getSource(),u=e.usedTiles[o(l)];for(var c in this.renderTileImageQueue_)u&&c in u||delete this.renderTileImageQueue_[c];for(var h=this.context,p=vy[s],f=e.viewState.rotation,d=this.renderedTiles,g=[],y=[],m=d.length-1;m>=0;--m)for(var v=d[m],_=this.getTileRenderTransform(v,e),b=v.executorGroups[o(a)],x=!1,w=0,S=b.length;w8){e.animate=!0;break}var n=this.renderTileImageQueue_[r];delete this.renderTileImageQueue_[r],this.renderTileImage_(n,e)}},e.prototype.renderFeature=function(t,e,r,n,i){if(!r)return!1;var o=!1;if(Array.isArray(r))for(var a=0,s=r.length;a1?a:2,x=o||new Array(b);for(g=0;g>1;i0&&y.length>0;)o=y.pop(),c=d.pop(),p=g.pop(),(l=o.toString())in m||(u.push(p[0],p[1]),m[l]=!0),a=y.pop(),h=d.pop(),f=g.pop(),ze((i=e(n=t(s=(o+a)/2)))[0],i[1],p[0],p[1],f[0],f[1])this.featurePool_.length;)s=new gt,this.featurePool_.push(s);var u=n.getFeaturesCollection();u.clear();var c,h,p=0;for(c=0,h=this.meridians_.length;cMath.PI/2);for(var y=Ku(t),m=h;m<=p;++m){var v=this.meridians_.length+this.parallels_.length,_=void 0,b=void 0,x=void 0,w=void 0;if(this.meridiansLabels_)for(b=0,x=this.meridiansLabels_.length;b=s?(t[0]=a[0],t[2]=a[2]):o=!0);var l=[Ne(e[0],this.minX_,this.maxX_),Ne(e[1],this.minY_,this.maxY_)],u=this.toLonLatTransform_(l);isNaN(u[1])&&(u[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);var c,h,p,f,d=Ne(u[0],this.minLon_,this.maxLon_),g=Ne(u[1],this.minLat_,this.maxLat_),y=this.maxLines_,m=t;o||(m=[Ne(t[0],this.minX_,this.maxX_),Ne(t[1],this.minY_,this.maxY_),Ne(t[2],this.minX_,this.maxX_),Ne(t[3],this.minY_,this.maxY_)]);var v=Ae(m,this.toLonLatTransform_,void 0,8),_=v[3],b=v[2],x=v[1],w=v[0];if(o||(Qt(m,this.bottomLeft_)&&(w=this.minLon_,x=this.minLat_),Qt(m,this.bottomRight_)&&(b=this.maxLon_,x=this.minLat_),Qt(m,this.topLeft_)&&(w=this.minLon_,_=this.maxLat_),Qt(m,this.topRight_)&&(b=this.maxLon_,_=this.maxLat_),_=Ne(_,g,this.maxLat_),b=Ne(b,d,this.maxLon_),x=Ne(x,this.minLat_,g),w=Ne(w,this.minLon_,d)),f=Ne(d=Math.floor(d/i)*i,this.minLon_,this.maxLon_),h=this.addMeridian_(f,x,_,n,t,0),c=0,o)for(;(f-=i)>=w&&c++n[o]&&(i=o,o=1);var a=Math.max(e[1],n[i]),s=Math.min(e[3],n[o]),l=Ne(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,a,s),u=[n[i-1]+(n[o-1]-n[i-1])*(l-n[i])/(n[o]-n[i]),l],c=this.meridiansLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getMeridians=function(){return this.meridians_},e.prototype.getParallel_=function(t,e,r,n,i){var o=Fy(t,e,r,this.projection_,n),a=this.parallels_[i];return a?(a.setFlatCoordinates(yt,o),a.changed()):a=new Py(o,yt),a},e.prototype.getParallelPoint_=function(t,e,r){var n=t.getFlatCoordinates(),i=0,o=n.length-2;n[i]>n[o]&&(i=o,o=0);var a=Math.max(e[0],n[i]),s=Math.min(e[2],n[o]),l=Ne(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,a,s),u=[l,n[i+1]+(n[o+1]-n[i+1])*(l-n[i])/(n[o]-n[i])],c=this.parallelsLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getParallels=function(){return this.parallels_},e.prototype.updateProjectionInfo_=function(t){var e=Gr("EPSG:4326"),r=t.getWorldExtent();this.maxLat_=r[3],this.maxLon_=r[2],this.minLat_=r[1],this.minLon_=r[0];var n=Kr(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t},e}(Iy),Dy=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gy="blur",zy="gradient",Uy="radius",By=["#00f","#0ff","#0f0","#ff0","#f00"];var Vy=function(t){function e(e){var r=this,n=e||{},i=O({},n);delete i.gradient,delete i.radius,delete i.blur,delete i.weight,(r=t.call(this,i)||this).gradient_=null,r.addEventListener(it(zy),r.handleGradientChanged_),r.setGradient(n.gradient?n.gradient:By),r.setBlur(void 0!==n.blur?n.blur:15),r.setRadius(void 0!==n.radius?n.radius:8);var o=n.weight?n.weight:"weight";return r.weightFunction_="string"==typeof o?function(t){return t.get(o)}:o,r.setRenderOrder(null),r}return Dy(e,t),e.prototype.getBlur=function(){return this.get(Gy)},e.prototype.getGradient=function(){return this.get(zy)},e.prototype.getRadius=function(){return this.get(Uy)},e.prototype.handleGradientChanged_=function(){this.gradient_=function(t){for(var e=uo(1,256),r=e.createLinearGradient(0,0,1,256),n=1/(t.length-1),i=0,o=t.length;i>3)?r.readString():2===t?r.readFloat():3===t?r.readDouble():4===t?r.readVarint64():5===t?r.readVarint():6===t?r.readSVarint():7===t?r.readBoolean():null;e.values.push(n)}}function im(t,e,r){if(1==t)e.id=r.readVarint();else if(2==t)for(var n=r.readVarint()+r.pos;r.pos>3}a--,1===o||2===o?(s+=t.readSVarint(),l+=t.readSVarint(),1===o&&u>c&&(n.push(u),c=u),r.push(s,l),u+=2):7===o?u>c&&(r.push(r[c],r[c+1]),u+=2):pt(!1,59)}u>c&&(n.push(u),c=u)},e.prototype.createFeature_=function(t,e,r){var n,i=e.type;if(0===i)return null;var o,a=e.properties;this.idProperty_?(o=a[this.idProperty_],delete a[this.idProperty_]):o=e.id,a[this.layerName_]=e.layer.name;var s=[],l=[];this.readRawGeometry_(t,e,s,l);var u=function(t,e){var r;1===t?r=1===e?bt.POINT:bt.MULTI_POINT:2===t?r=1===e?bt.LINE_STRING:bt.MULTI_LINE_STRING:3===t&&(r=bt.POLYGON);return r}(i,l.length);if(this.featureClass_===Cy)(n=new this.featureClass_(u,s,l,a,o)).transform(r.dataProjection);else{var c=void 0;if(u==bt.POLYGON){for(var h=[],p=0,f=0,d=0,g=l.length;d1?new Jy(s,yt,h):new fi(s,yt,l)}else c=u===bt.POINT?new qn(s,yt):u===bt.LINE_STRING?new Py(s,yt):u===bt.POLYGON?new fi(s,yt,l):u===bt.MULTI_POINT?new Hy(s,yt):u===bt.MULTI_LINE_STRING?new Zy(s,yt,l):null;n=new(0,this.featureClass_),this.geometryName_&&n.setGeometryName(this.geometryName_);var m=Wy(c,!1,r);n.setGeometry(m),n.setId(o),n.setProperties(a,!0)}return n},e.prototype.getType=function(){return Cu},e.prototype.readFeatures=function(t,e){var r=this.layers_,n=this.adaptOptions(e),i=Gr(n.dataProjection);i.setWorldExtent(n.extent),n.dataProjection=i;var o=new tm.a(t),a=o.readFields(rm,{}),s=[];for(var l in a)if(!r||-1!=r.indexOf(l)){var u=a[l],c=u?[0,0,u.extent,u.extent]:null;i.setExtent(c);for(var h=0,p=u.length;h=.05){for(var r="",n=t.split("\n"),i=ym.slice(0,Math.round(e/.1)),o=0,a=n.length;o0&&(r+="\n"),r+=n[o].split("").join(i);return r}return t}function vm(){return gm||(gm=dm(1,1).getContext("2d")),gm}function _m(t,e){return vm().measureText(t).width+(t.length-1)*e}var bm={};ga&&Z(ga,k,(function(){bm={}}));var xm,wm,Sm=hm.e.isFunction,Em=hm.e.convertFunction,Tm=hm.c.isExpression,Cm=hm.c.createPropertyExpression,Om={Point:1,MultiPoint:1,LineString:2,MultiLineString:2,Polygon:3,MultiPolygon:3},Pm={center:[.5,.5],left:[0,.5],right:[1,.5],top:[.5,0],bottom:[.5,1],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},Rm={},Im={zoom:0},Lm={};function Mm(t,e,r,n,i){var o=t.id;Lm[o]||(Lm[o]={});var a=Lm[o];if(!a[r]){var s=(t[e]||Rm)[r],l=hm.f[e+"_"+t.type][r];void 0===s&&(s=l.default);var u=Tm(s);if(!u&&Sm(s)&&(s=Em(s,l),u=!0),u){var c=function(t,e){var r=Cm(t,e);if("error"===r.result)throw new Error(r.value.map((function(t){return t.key+": "+t.message})).join(", "));return r.value}(s,l);a[r]=c.evaluate.bind(c)}else"color"==l.type&&(s=hm.a.parse(s)),a[r]=function(){return s}}return Im.zoom=n,a[r](Im,i)}var Fm={};function Am(t,e){if(t){if(0===t.a||0===e)return;var r=t.a;return e=void 0===e?1:e,"rgba("+Math.round(255*t.r/r)+","+Math.round(255*t.g/r)+","+Math.round(255*t.b/r)+","+r*e+")"}return t}var km=/^([^]*)\{(.*)\}([^]*)$/;function jm(t,e){var r;do{if(r=t.match(km)){var n=e[r[2]]||"";t=r[1]+n+r[3]}}while(r);return t}var Nm=!1;var Dm=function(t,e,r,n,i,o,a){if(void 0===n&&(n=fm),"string"==typeof e&&(e=JSON.parse(e)),8!=e.version)throw new Error("glStyle version 8 required.");var s,l;if(o)if("undefined"!=typeof Image){var u=new Image;u.crossOrigin="anonymous",u.onload=function(){s=u,l=[u.width,u.height],t.changed(),u.onload=null},u.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var c=self;c.postMessage({action:"loadImage",src:o}),c.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(s=t.data.image,l=[s.width,s.height])}))}for(var h,p=Object(hm.b)(e.layers),f={},d=[],g=0,y=p.length;g=y.maxzoom)return"continue";var b=y.filter;if(!b||function(t,e,r,n){return t in Fm||(Fm[t]=Object(hm.d)(e).filter),Im.zoom=n,Fm[t](Im,r)}(m,b,p,u)){c=y;var x=void 0,w=void 0,P=void 0,R=void 0,I=void 0,L=void 0,M=g.index;if(3==h&&("fill"==y.type||"fill-extrusion"==y.type))if(w=Mm(y,"paint",y.type+"-opacity",u,p),y.type+"-pattern"in _){var F=Mm(y,"paint",y.type+"-pattern",u,p);if(F){var A="string"==typeof F?jm(F,r):F.toString();if(s&&i&&i[A]){++d,(L=O[d])&&L.getFill()&&!L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep})),P=L.getFill(),L.setZIndex(M);var k=C[ut=A+"."+w];if(!k)(pt=(ht=dm((ct=i[A]).width,ct.height)).getContext("2d")).globalAlpha=w,pt.drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height),k=pt.createPattern(ht,"repeat"),C[ut]=k;P.setColor(k)}}}else(x=Am(Mm(y,"paint",y.type+"-color",u,p),w))&&(y.type+"-outline-color"in _&&(I=Am(Mm(y,"paint",y.type+"-outline-color",u,p),w)),I||(I=x),++d,(L=O[d])&&L.getFill()&&L.getStroke()&&!L.getText()||(L=O[d]=new wp({fill:new ep,stroke:new gp})),(P=L.getFill()).setColor(x),(R=L.getStroke()).setColor(I),R.setWidth(1),L.setZIndex(M));if(1!=h&&"line"==y.type){x=!("line-pattern"in _)&&"line-color"in _?Am(Mm(y,"paint","line-color",u,p),Mm(y,"paint","line-opacity",u,p)):void 0;var j=Mm(y,"paint","line-width",u,p);x&&j>0&&(++d,(L=O[d])&&L.getStroke()&&!L.getFill()&&!L.getText()||(L=O[d]=new wp({stroke:new gp})),(R=L.getStroke()).setLineCap(Mm(y,"layout","line-cap",u,p)),R.setLineJoin(Mm(y,"layout","line-join",u,p)),R.setMiterLimit(Mm(y,"layout","line-miter-limit",u,p)),R.setColor(x),R.setWidth(j),R.setLineDash(_["line-dasharray"]?Mm(y,"paint","line-dasharray",u,p).map((function(t){return t*j})):null),L.setZIndex(M))}var N=!1,D=null,G=0,z=void 0,U=void 0,B=void 0;if((1==h||2==h)&&"icon-image"in v){var V=Mm(y,"layout","icon-image",u,p);if(V){z="string"==typeof V?jm(V,r):V.toString();var Y=void 0;if(s&&i&&i[z]){var W=Mm(y,"layout","icon-rotation-alignment",u,p);if(2==h){var q=t.getGeometry();if(q.getFlatMidpoint||q.getFlatMidpoints){var X=q.getExtent();if(Math.sqrt(Math.max(Math.pow((X[2]-X[0])/e,2),Math.pow((X[3]-X[1])/e,2)))>150){var Z="MultiLineString"===q.getType()?q.getFlatMidpoints():q.getFlatMidpoint();if(wm||(wm=new Cy("Point",xm=[NaN,NaN],[],{},null)),Y=wm,xm[0]=Z[0],xm[1]=Z[1],"line"===(Mt=Mm(y,"layout","symbol-placement",u,p))&&"map"===W)for(var K=q.getStride(),H=q.getFlatCoordinates(),$=0,J=H.length-K;$=nt&&Z[0]<=ot&&Z[1]>=it&&Z[1]<=at){G=Math.atan2(tt-rt,et-Q);break}}}}}if(2!==h||Y){++d,(L=O[d])&&L.getImage()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setGeometry(Y);var st=Mm(y,"layout","icon-size",u,p),lt=void 0!==_["icon-color"]?Mm(y,"paint","icon-color",u,p):null,ut=z+"."+st;if(null!==lt&&(ut+="."+lt),!(U=T[ut])){var ct=i[z];if(null!==lt){var ht,pt;(pt=(ht=dm(ct.width,ct.height)).getContext("2d")).drawImage(s,ct.x,ct.y,ct.width,ct.height,0,0,ct.width,ct.height);for(var ft=pt.getImageData(0,0,ht.width,ht.height),dt=0,gt=ft.data.length;dt0?new gp({width:bt,color:vt}):void 0,fill:_t?new ep({color:_t}):void 0})),L.setImage(U),D=L.getText(),L.setText(void 0),L.setGeometry(void 0),L.setZIndex(M),N=!0}var wt=void 0;if("text-field"in v)wt=jm(Mm(y,"layout","text-field",u,p).toString(),r).trim(),w=Mm(y,"paint","text-opacity",u,p);if(wt&&w&&!B){N||(++d,(L=O[d])&&L.getText()&&!L.getFill()&&!L.getStroke()||(L=O[d]=new wp),L.setImage(void 0),L.setGeometry(void 0)),L.getText()||L.setText(D||new Tp({padding:[2,2,2,2]})),D=L.getText();var St=Math.round(Mm(y,"layout","text-size",u,p)),Et=Mm(y,"layout","text-font",u,p),Tt=Mm(y,"layout","text-line-height",u,p),Ct=cm()(a?a(Et):Et,St,Tt),Ot=v["text-transform"];"uppercase"==Ot?wt=wt.toUpperCase():"lowercase"==Ot&&(wt=wt.toLowerCase());var Pt=Mm(y,"layout","text-max-width",u,p),Rt=Mm(y,"layout","text-letter-spacing",u,p),It=2==h?mm(wt,Rt):function t(e,r,n,i){if(-1!==e.indexOf("\n")){for(var o=e.split("\n"),a=[],s=0,l=o.length;s1){var p=vm();p.font=r;var f=p.measureText("M").width*n,d="";for(a=[],s=0,l=h.length;s1;++s){var m=a[s];if(_m(m,i)<.35*f){var v=s>0?_m(a[s-1],i):1/0,_=s.7*f&&_m(x,i)<.6*f){var w=b.split(" "),S=w.pop();_m(S,i)<.2*f&&(a[s]=w.join(" "),a[s+1]=S+" "+x),l-=1}}c=a.join("\n")}else c=e;c=mm(c,i),bm[u]=c}return c}(wt,Ct,Pt,Rt);D.setText(It),D.setFont(Ct),D.setRotation(pm(Mm(y,"layout","text-rotate",u,p)));var Lt=Mm(y,"layout","text-anchor",u,p),Mt=N||1==h?"point":Mm(y,"layout","symbol-placement",u,p);D.setPlacement(Mt);var Ft=Mm(y,"paint","text-halo-width",u,p),At=Mm(y,"layout","text-offset",u,p),kt=Mm(y,"paint","text-translate",u,p),jt=0,Nt=0;if("point"==Mt){var Dt="center";-1!==Lt.indexOf("left")?(Dt="left",Nt=Ft):-1!==Lt.indexOf("right")&&(Dt="right",Nt=-Ft),D.setTextAlign(Dt);var Gt=Mm(y,"layout","text-rotation-alignment",u,p);D.setRotateWithView("map"==Gt)}else D.setMaxAngle(pm(Mm(y,"layout","text-max-angle",u,p))*wt.length/It.length),D.setTextAlign(),D.setRotateWithView(!1);var zt="middle";0==Lt.indexOf("bottom")?(zt="bottom",jt=-Ft-.5*(Tt-1)*St):0==Lt.indexOf("top")&&(zt="top",jt=Ft+.5*(Tt-1)*St),D.setTextBaseline(zt),D.setOffsetX(At[0]*St+Nt+kt[0]),D.setOffsetY(At[1]*St+jt+kt[1]),E.setColor(Am(Mm(y,"paint","text-color",u,p),w)),D.setFill(E);var Ut=Am(Mm(y,"paint","text-halo-color",u,p),w);if(Ut){S.setColor(Ut),Ft*=2;var Bt=.5*St;S.setWidth(Ft<=Bt?Ft:Bt),D.setStroke(S)}else D.setStroke(void 0);var Vt=Mm(y,"layout","text-padding",u,p),Yt=D.getPadding();Vt!==Yt[0]&&(Yt[0]=Yt[1]=Yt[2]=Yt[3]=Vt),L.setZIndex(M)}}},y=0,m=o.length;y-1?(O.length=d+1,Nm&&("function"==typeof t.set?t.set("mapbox-layer",c):t.getProperties()["mapbox-layer"]=c),O):void 0}};return t.setStyle(P),t.set("mapbox-source",h),t.set("mapbox-layers",d),P},Gm=r(6),zm=r.n(Gm),Um=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Bm(t){for(var e=[],r=0,n=t.length;r2?n[2]:""):t+r}function sv(t,e,r,n,i){return new Promise((function(o,a){if("object"!=typeof e&&(e=JSON.parse(e)),8!=e.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof Iy||t instanceof lm))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var s,l,u;function c(){u||e.sprite&&!s?u?(t.setStyle(u),o()):a(new Error("Something went wrong trying to apply style.")):(u=Dm(t,e,r,i,s,l,nv),t.getStyle()?o():a(new Error("Nothing to show for source ["+r+"]")))}if(e.sprite){var h=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",p=av(e.sprite,n,h+".json");fetch(p,{credentials:"same-origin"}).then((function(t){return t.ok||""===h?t:(p=av(e.sprite,n,".json"),fetch(p,{credentials:"same-origin"}))})).then((function(t){if(t.ok)return t.json();a(new Error("Problem fetching sprite from "+p+": "+t.statusText))})).then((function(t){if(void 0===t)return a(new Error("No sprites found."));s=t,l=av(e.sprite,n,h+".png"),c()})).catch((function(t){a(new Error("Sprites cannot be loaded: "+p+": "+t.message))}))}else c()}))}new $m;var lv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function uv(t){return 0!==t.indexOf("mapbox://")?"":t.slice("mapbox://".length)}function cv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("sprites/"))throw new Error("unexpected sprites url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("sprites/".length)+"/sprite?access_token="+e}function hv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("fonts/"))throw new Error("unexpected fonts url: "+t);return"https://api.mapbox.com/fonts/v1/"+r.slice("fonts/".length)+"/0-255.pbf?access_token="+e}function pv(t,e){var r=uv(t);if(!r)return t;if(0!==r.indexOf("styles/"))throw new Error("unexpected style url: "+t);return"https://api.mapbox.com/styles/v1/"+r.slice("styles/".length)+"?&access_token="+e}function fv(t,e){var r=uv(t);return r?"https://{a-d}.tiles.mapbox.com/v4/"+r+"/{z}/{x}/{y}.vector.pbf?access_token="+e:t}var dv=function(t){function e(e){var r=t.call(this,A)||this;return r.error=e,r}return lv(e,t),e}(c),gv="vector",yv=function(t){function e(e){var r=this,n=!("declutter"in e)||e.declutter,i=new og({state:Jo,format:new am});return(r=t.call(this,{source:i,declutter:n,className:e.className,opacity:e.opacity,visible:e.visible,zIndex:e.zIndex,minResolution:e.minResolution,maxResolution:e.maxResolution,minZoom:e.minZoom,maxZoom:e.maxZoom,renderOrder:e.renderOrder,renderBuffer:e.renderBuffer,renderMode:e.renderMode,map:e.map,updateWhileAnimating:e.updateWhileAnimating,updateWhileInteracting:e.updateWhileInteracting,preload:e.preload,useInterimTilesOnError:e.useInterimTilesOnError})||this).sourceId=e.source,r.layers=e.layers,r.accessToken=e.accessToken,r.fetchStyle(e.styleUrl),r}return lv(e,t),e.prototype.fetchStyle=function(t){var e=this,r=pv(t,this.accessToken);fetch(r).then((function(t){if(!t.ok)throw new Error("unexpected response when fetching style: "+t.status);return t.json()})).then((function(t){e.onStyleLoad(t)})).catch((function(t){e.handleError(t)}))},e.prototype.onStyleLoad=function(t){var e,r,n=this;if(this.layers){for(var i={},o=0;o0){this.source_&&(this.source_.clear(),this.source_.addFeatures(h)),this.dispatchEvent(new Sv(wv,t,h,o));break}}},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[Z(e,U,this.handleDrop,this),Z(e,G,this.handleStop,this),Z(e,z,this.handleStop,this),Z(e,U,this.handleStop,this)]}},e.prototype.setActive=function(e){!this.getActive()&&e&&this.registerListeners_(),this.getActive()&&!e&&this.unregisterListeners_(),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,r){try{return t.readFeatures(e,r)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(H),this.dropListenKeys_=null)},e.prototype.handleDrop=function(t){for(var e=t.dataTransfer.files,r=0,n=e.length;r1?1:-1;return e.endInteraction(this.duration_,r),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!cl(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}($s),Ov=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Pv=function(t){function e(e,r,n){var i=t.call(this)||this;if(void 0!==n&&void 0===r)i.setFlatCoordinates(n,e);else{var o=r||0;i.setCenterAndRadius(e,o,n)}return i}return Ov(e,t),e.prototype.clone=function(){var t=new e(this.flatCoordinates.slice(),void 0,this.layout);return t.applyProperties(this),t},e.prototype.closestPointXY=function(t,e,r,n){var i=this.flatCoordinates,o=t-i[0],a=e-i[1],s=o*o+a*a;if(s=e[0]||(t[1]<=e[1]&&t[3]>=e[1]||me(t,this.intersectsCoordinate.bind(this)))}return!1},e.prototype.setCenter=function(t){var e=this.stride,r=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+r;for(var i=1;i=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,r=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Ga.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e.coordinate),n=!1):this.freehand_&&e.type===Ga.POINTERDOWN?n=!1:r&&this.getPointerCount()<2?(n=e.type===Ga.POINTERMOVE)&&this.freehand_?(this.handlePointerMove_(e),this.shouldHandle_&&e.originalEvent.preventDefault()):("mouse"===e.originalEvent.pointerType||e.type===Ga.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Ga.DBLCLICK&&(n=!1),t.prototype.handleEvent.call(this,e)&&n},e.prototype.handleDownEvent=function(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(function(){this.handlePointerMove_(new Da(Ga.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)},e.prototype.handleUpEvent=function(t){var e=!0;if(0===this.getPointerCount())if(this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t),this.shouldHandle_){switch(!0){case!this.finishCoordinate_:if(this.startDrawing_(t.coordinate),this.mode_!==Lv)break;case this.freehand_||this.atFinish_(t.pixel)&&this.finishCondition_(t):this.finishDrawing();break;case!this.freehand_:this.addToDrawing_(t.coordinate)}e=!1}else this.freehand_&&this.abortDrawing();return!e&&this.stopClick_&&t.originalEvent.stopPropagation(),e},e.prototype.handlePointerMove_=function(t){if(this.pointerType_=t.originalEvent.pointerType,this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){var e=this.downPx_,r=t.pixel,n=e[0]-r[0],i=e[1]-r[1],o=n*n+i*i;if(this.shouldHandle_=this.freehand_?o>this.squaredClickTolerance_:o<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?this.modifyDrawing_(t.coordinate):this.createOrUpdateSketchPoint_(t)},e.prototype.atFinish_=function(t){var e=!1;if(this.sketchFeature_){var r=!1,n=[this.finishCoordinate_],i=this.mode_;if(i===Lv)e=!0;else if(i===Av)e=2===this.sketchCoords_.length;else if(i===Mv)r=this.sketchCoords_.length>this.minPoints_;else if(i===Fv){var o=this.sketchCoords_;r=o[0].length>this.minPoints_,n=[o[0][0],o[0][o[0].length-2]]}if(r)for(var a=this.getMap(),s=0,l=n.length;s=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),this.geometryFunction_(r,n,i)):o===Fv&&((r=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),e&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,n,i)),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry(),r=this.getMap().getView().getProjection(),n=this.mode_;if(n===Mv||n===Av){if((t=this.sketchCoords_).splice(-2,1),t.length>=2){this.finishCoordinate_=t[t.length-2].slice();var i=this.finishCoordinate_.slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}this.geometryFunction_(t,e,r),e.getType()===bt.POLYGON&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if(n===Fv){(t=this.sketchCoords_[0]).splice(-2,1);var o=this.sketchLine_.getGeometry();if(t.length>=2){i=t[t.length-2].slice();t[t.length-1]=i,this.sketchPoint_.setGeometry(new qn(i))}o.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,r)}1===t.length&&this.abortDrawing(),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,r=t.getGeometry(),n=this.getMap().getView().getProjection();this.mode_===Mv?(e.pop(),this.geometryFunction_(e,r,n)):this.mode_===Fv&&(e[0].pop(),this.geometryFunction_(e,r,n),e=r.getCoordinates()),this.type_===bt.MULTI_POINT?t.setGeometry(new Hy([e])):this.type_===bt.MULTI_LINE_STRING?t.setGeometry(new Zy([e])):this.type_===bt.MULTI_POLYGON&&t.setGeometry(new Jy([e])),this.dispatchEvent(new Dv(jv,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}},e.prototype.abortDrawing_=function(){this.finishCoordinate_=null;var t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),t},e.prototype.abortDrawing=function(){var t=this.abortDrawing_();t&&this.dispatchEvent(new Dv(Nv,t))},e.prototype.appendCoordinates=function(t){var e,r=this.mode_,n=!this.sketchFeature_;if(n&&this.startDrawing_(t[0]),r===Mv||r===Av)e=this.sketchCoords_;else{if(r!==Fv)return;e=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}n&&e.shift(),e.pop();for(var i=0;ih?o[1]:o[0]),a}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,r=t.map,n=this.snapToVertex_(e,r);n||(n=r.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(gi(t)):e.setGeometry(void 0):(e=new gt(t?gi(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e},e.prototype.createOrUpdatePointerFeature_=function(t){var e=this.vertexFeature_;e?e.getGeometry().setCoordinates(t):(e=new gt(new qn(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.originalEvent||!this.condition_(e)||(e.type!=Ga.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,r=t.map,n=this.getExtentInternal(),i=this.snapToVertex_(e,r),o=function(t){var e=null,r=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?r=n[3]:t[1]==n[3]&&(r=n[1]),null!==e&&null!==r?[e,r]:null};if(i&&n){var a=i[0]==n[0]||i[0]==n[2]?i[0]:null,s=i[1]==n[1]||i[1]==n[3]?i[1]:null;null!==a&&null!==s?this.pointerHandler_=Yv(o(i)):null!==a?this.pointerHandler_=Wv(o([a,n[1]]),o([a,n[3]])):null!==s&&(this.pointerHandler_=Wv(o([n[0],s]),o([n[2],s])))}else i=r.getCoordinateFromPixelInternal(e),this.setExtent([i[0],i[1],i[0],i[1]]),this.pointerHandler_=Yv(i);return!0},e.prototype.handleDragEvent=function(t){if(this.pointerHandler_){var e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}},e.prototype.handleUpEvent=function(t){this.pointerHandler_=null;var e=this.getExtentInternal();return e&&0!==ve(e)||this.setExtent(null),!1},e.prototype.setMap=function(e){this.extentOverlay_.setMap(e),this.vertexOverlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getExtent=function(){return nn(this.getExtentInternal(),this.getMap().getView().getProjection())},e.prototype.getExtentInternal=function(){return this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new Bv(this.extent_))},e}($s),Xv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Zv=[0,0,0,0],Kv=[],Hv="modifystart",$v="modifyend",Jv=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.features=r,i.mapBrowserEvent=n,i}return Xv(e,t),e}(c);function Qv(t,e){return t.index-e.index}function t_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE){var i=n;if(1===e.index){var o=tn();o&&(i=i.clone().transform(o,r));var a=Rr(i.getCenter(),rn(t,r)),s=Math.sqrt(a)-i.getRadius();return s*s}}var l=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),Lr(l,Kv)}function e_(t,e,r){var n=e.geometry;if(n.getType()===bt.CIRCLE&&1===e.index){var i=n,o=tn();return o&&(i=i.clone().transform(o,r)),en(i.getClosestPoint(rn(t,r)),r)}var a=rn(t,r);return Kv[0]=rn(e.segment[0],r),Kv[1]=rn(e.segment[1],r),en(Sr(a,Kv),r)}var r_=function(t){function e(e){var r,n,i=t.call(this,e)||this;if(i.boundHandleFeatureChange_=i.handleFeatureChange_.bind(i),i.condition_=e.condition?e.condition:hl,i.defaultDeleteCondition_=function(t){return Qs(t)&&al(t)},i.deleteCondition_=e.deleteCondition?e.deleteCondition:i.defaultDeleteCondition_,i.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:nl,i.vertexFeature_=null,i.vertexSegments_=null,i.lastPixel_=[0,0],i.ignoreNextSingleClick_=!1,i.featuresBeingModified_=null,i.rBush_=new Rp,i.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,i.snappedToVertex_=!1,i.changingFeature_=!1,i.dragSegments_=[],i.overlay_=new Iy({source:new hf({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:(r=bp(),function(t,e){return r[bt.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),i.SEGMENT_WRITERS_={Point:i.writePointGeometry_.bind(i),LineString:i.writeLineStringGeometry_.bind(i),LinearRing:i.writeLineStringGeometry_.bind(i),Polygon:i.writePolygonGeometry_.bind(i),MultiPoint:i.writeMultiPointGeometry_.bind(i),MultiLineString:i.writeMultiLineStringGeometry_.bind(i),MultiPolygon:i.writeMultiPolygonGeometry_.bind(i),Circle:i.writeCircleGeometry_.bind(i),GeometryCollection:i.writeGeometryCollectionGeometry_.bind(i)},i.source_=null,i.hitDetection_=null,e.features?n=e.features:e.source&&(i.source_=e.source,n=new ht(i.source_.getFeatures()),i.source_.addEventListener(ef,i.handleSourceAdd_.bind(i)),i.source_.addEventListener(of,i.handleSourceRemove_.bind(i))),!n)throw new Error("The modify interaction requires features, a source or a layer");return e.hitDetection&&(i.hitDetection_=e.hitDetection),i.features_=n,i.features_.forEach(i.addFeature_.bind(i)),i.features_.addEventListener(at,i.handleFeatureAdd_.bind(i)),i.features_.addEventListener(st,i.handleFeatureRemove_.bind(i)),i.lastPointerEvent_=null,i.delta_=[0,0],i}return Xv(e,t),e.prototype.addFeature_=function(t){var e=t.getGeometry();if(e){var r=this.SEGMENT_WRITERS_[e.getType()];r&&r(t,e)}var n=this.getMap();n&&n.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,n),t.addEventListener(F,this.boundHandleFeatureChange_)},e.prototype.willModifyFeatures_=function(t,e){if(!this.featuresBeingModified_){this.featuresBeingModified_=new ht;for(var r=this.featuresBeingModified_.getArray(),n=0,i=e.length;n=0;--n){for(var i=r[n],o=this.dragSegments_.length-1;o>=0;--o)this.dragSegments_[o][0]===i&&this.dragSegments_.splice(o,1);e.remove(i)}},e.prototype.setActive=function(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.overlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleSourceAdd_=function(t){t.feature&&this.features_.push(t.feature)},e.prototype.handleSourceRemove_=function(t){t.feature&&this.features_.remove(t.feature)},e.prototype.handleFeatureAdd_=function(t){this.addFeature_(t.element)},e.prototype.handleFeatureChange_=function(t){if(!this.changingFeature_){var e=t.target;this.removeFeature_(e),this.addFeature_(e)}},e.prototype.handleFeatureRemove_=function(t){var e=t.element;this.removeFeature_(e)},e.prototype.writePointGeometry_=function(t,e){var r=e.getCoordinates(),n={feature:t,geometry:e,segment:[r,r]};this.rBush_.insert(e.getExtent(),n)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var r=e.getCoordinates(),n=0,i=r.length;n=0;--y)this.insertVertex_(i[y],a)}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var r=this.dragSegments_[e][0],n=r.geometry;if(n.getType()===bt.CIRCLE){var i=n.getCenter(),o=r.featureSegments[0],a=r.featureSegments[1];o.segment[0]=i,o.segment[1]=i,a.segment[0]=i,a.segment[1]=i,this.rBush_.update(ae(i),o);var s=n,l=tn();if(l){var u=t.map.getView().getProjection();s=yi(s=s.clone().transform(l,u)).transform(u,l)}this.rBush_.update(s.getExtent(),a)}else this.rBush_.update(Kt(r.segment),r)}return this.featuresBeingModified_&&(this.dispatchEvent(new Jv($v,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)},e.prototype.handlePointerAtPixel_=function(t,e,r){var n,i,a=this,s=r||e.getCoordinateFromPixel(t),l=e.getView().getProjection();if(this.hitDetection_){var u="object"==typeof this.hitDetection_?function(t){return t===a.hitDetection_}:void 0;e.forEachFeatureAtPixel(t,(function(t,e,r){if((r=r||t.getGeometry()).getType()===bt.POINT){i=r;var o=r.getCoordinates();n=[{feature:t,geometry:r,segment:[o,o]}]}return!0}),{layerFilter:u})}if(!n){var c=nn(Ht(on(ae(s,Zv),l),e.getView().getResolution()*this.pixelTolerance_,Zv),l);n=this.rBush_.getInExtent(c)}if(n&&n.length>0){var h=n.sort((function(t,e){return t_(s,t,l)-t_(s,e,l)}))[0],p=h.segment,f=e_(s,h,l),d=e.getPixelFromCoordinate(f),g=Ir(t,d);if(i||g<=this.pixelTolerance_){var y={};if(y[o(p)]=!0,this.delta_[0]=f[0]-s[0],this.delta_[1]=f[1]-s[1],h.geometry.getType()===bt.CIRCLE&&1===h.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);else{var m=e.getPixelFromCoordinate(p[0]),v=e.getPixelFromCoordinate(p[1]),_=Rr(d,m),b=Rr(d,v);g=Math.sqrt(Math.min(_,b)),this.snappedToVertex_=g<=this.pixelTolerance_,this.snappedToVertex_&&(f=_>b?p[1]:p[0]),this.createOrUpdateVertexFeature_(f,[h.feature],[h.geometry]);var x={};x[o(h.geometry)]=!0;for(var w=1,S=n.length;w=0;--i)h=o((c=(r=p[i])[0]).feature),c.depth&&(h+="-"+c.depth.join("-")),h in f||(f[h]={}),0===r[1]?(f[h].right=c,f[h].index=c.index):1==r[1]&&(f[h].left=c,f[h].index=c.index+1);for(h in f){switch(u=f[h].right,s=f[h].left,(l=(a=f[h].index)-1)<0&&(l=0),t=e=(n=(c=void 0!==s?s:u).geometry).getCoordinates(),d=!1,n.getType()){case bt.MULTI_LINE_STRING:e[c.depth[0]].length>2&&(e[c.depth[0]].splice(a,1),d=!0);break;case bt.LINE_STRING:e.length>2&&(e.splice(a,1),d=!0);break;case bt.MULTI_POLYGON:t=t[c.depth[1]];case bt.POLYGON:(t=t[c.depth[0]]).length>4&&(a==t.length-1&&(a=0),t.splice(a,1),d=!0,0===a&&(t.pop(),t.push(t[0]),l=t.length-1))}if(d){this.setGeometryCoordinates_(n,e);var g=[];if(void 0!==s&&(this.rBush_.remove(s),g.push(s.segment[0])),void 0!==u&&(this.rBush_.remove(u),g.push(u.segment[1])),void 0!==s&&void 0!==u){var y={depth:c.depth,feature:c.feature,geometry:c.geometry,index:l,segment:g};this.rBush_.insert(Kt(y.segment),y)}this.updateSegmentIndices_(n,a,c.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),p.length=0}}return d},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,r,n){this.rBush_.forEachInExtent(t.getExtent(),(function(i){i.geometry===t&&(void 0===r||void 0===i.depth||b(i.depth,r))&&i.index>e&&(i.index+=n)}))},e}($s),n_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),i_="select",o_=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.selected=r,o.deselected=n,o.mapBrowserEvent=i,o}return n_(e,t),e}(c),a_={};var s_=function(t){function e(e){var r,n,i=t.call(this)||this,o=e||{};if(i.boundAddFeature_=i.addFeature_.bind(i),i.boundRemoveFeature_=i.removeFeature_.bind(i),i.condition_=o.condition?o.condition:al,i.addCondition_=o.addCondition?o.addCondition:ol,i.removeCondition_=o.removeCondition?o.removeCondition:ol,i.toggleCondition_=o.toggleCondition?o.toggleCondition:ll,i.multi_=!!o.multi&&o.multi,i.filter_=o.filter?o.filter:S,i.hitTolerance_=o.hitTolerance?o.hitTolerance:0,i.style_=void 0!==o.style?o.style:(v((r=bp())[bt.POLYGON],r[bt.LINE_STRING]),v(r[bt.GEOMETRY_COLLECTION],r[bt.LINE_STRING]),function(t){return t.getGeometry()?r[t.getGeometry().getType()]:null}),i.features_=o.features||new ht,o.layers)if("function"==typeof o.layers)n=o.layers;else{var a=o.layers;n=function(t){return g(a,t)}}else n=S;return i.layerFilter_=n,i.featureLayerAssociation_={},i}return n_(e,t),e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[o(t)]=e},e.prototype.getFeatures=function(){return this.features_},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[o(t)]},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),t.prototype.setMap.call(this,e),e?(this.features_.addEventListener(at,this.boundAddFeature_),this.features_.addEventListener(st,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(at,this.boundAddFeature_),this.features_.removeEventListener(st,this.boundRemoveFeature_))},e.prototype.addFeature_=function(t){var e=t.element;this.style_&&this.applySelectedStyle_(e)},e.prototype.removeFeature_=function(t){var e=t.element;this.style_&&this.restorePreviousStyle_(e)},e.prototype.getStyle=function(){return this.style_},e.prototype.applySelectedStyle_=function(t){var e=o(t);e in a_||(a_[e]=t.getStyle()),t.setStyle(this.style_)},e.prototype.restorePreviousStyle_=function(t){for(var r=this.getMap().getInteractions().getArray(),n=r.length-1;n>=0;--n){var i=r[n];if(i!==this&&i instanceof e&&i.getStyle()&&-1!==i.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(i.getStyle())}var a=o(t);t.setStyle(a_[a]),delete a_[a]},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[o(t)]},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),r=this.removeCondition_(t),n=this.toggleCondition_(t),i=!e&&!r&&!n,o=t.map,a=this.getFeatures(),s=[],l=[];if(i){P(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return l.push(t),this.addFeatureLayerAssociation_(t,e),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var u=a.getLength()-1;u>=0;--u){var c=a.item(u),h=l.indexOf(c);h>-1?l.splice(h,1):(a.remove(c),s.push(c))}0!==l.length&&a.extend(l)}else{o.forEachFeatureAtPixel(t.pixel,function(t,i){if(this.filter_(t,i))return!e&&!n||g(a.getArray(),t)?(r||n)&&g(a.getArray(),t)&&(s.push(t),this.removeFeatureLayerAssociation_(t)):(l.push(t),this.addFeatureLayerAssociation_(t,i)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var p=s.length-1;p>=0;--p)a.remove(s[p]);a.extend(l)}return(l.length>0||s.length>0)&&this.dispatchEvent(new o_(i_,l,s,t)),!0},e}(qs),l_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function u_(t){return t.feature?t.feature:t.element?t.element:void 0}var c_=[],h_=function(t){function e(e){var r=this,n=e||{},i=n;return i.handleDownEvent||(i.handleDownEvent=S),i.stopDown||(i.stopDown=E),(r=t.call(this,i)||this).source_=n.source?n.source:null,r.vertex_=void 0===n.vertex||n.vertex,r.edge_=void 0===n.edge||n.edge,r.features_=n.features?n.features:null,r.featuresListenerKeys_=[],r.featureChangeListenerKeys_={},r.indexedFeaturesExtents_={},r.pendingFeatures_={},r.pixelTolerance_=void 0!==n.pixelTolerance?n.pixelTolerance:10,r.rBush_=new Rp,r.SEGMENT_WRITERS_={Point:r.writePointGeometry_.bind(r),LineString:r.writeLineStringGeometry_.bind(r),LinearRing:r.writeLineStringGeometry_.bind(r),Polygon:r.writePolygonGeometry_.bind(r),MultiPoint:r.writeMultiPointGeometry_.bind(r),MultiLineString:r.writeMultiLineStringGeometry_.bind(r),MultiPolygon:r.writeMultiPolygonGeometry_.bind(r),GeometryCollection:r.writeGeometryCollectionGeometry_.bind(r),Circle:r.writeCircleGeometry_.bind(r)},r}return l_(e,t),e.prototype.addFeature=function(t,e){var r=void 0===e||e,n=o(t),i=t.getGeometry();if(i){var a=this.SEGMENT_WRITERS_[i.getType()];a&&(this.indexedFeaturesExtents_[n]=i.getExtent([1/0,1/0,-1/0,-1/0]),a(t,i))}r&&(this.featureChangeListenerKeys_[n]=Z(t,F,this.handleFeatureChange_,this))},e.prototype.forEachFeatureAdd_=function(t){this.addFeature(t)},e.prototype.forEachFeatureRemove_=function(t){this.removeFeature(t)},e.prototype.getFeatures_=function(){var t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t},e.prototype.handleEvent=function(e){var r=this.snapTo(e.pixel,e.coordinate,e.map);return r.snapped&&(e.coordinate=r.vertex.slice(0,2),e.pixel=r.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=u_(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=u_(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var r=o(e);r in this.pendingFeatures_||(this.pendingFeatures_[r]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=R(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var r=void 0===e||e,n=o(t),i=this.indexedFeaturesExtents_[n];if(i){var a=this.rBush_,s=[];a.forEachInExtent(i,(function(e){t===e.feature&&s.push(e)}));for(var l=s.length-1;l>=0;--l)a.remove(s[l])}r&&(H(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])},e.prototype.setMap=function(e){var r=this.getMap(),n=this.featuresListenerKeys_,i=this.getFeatures_();r&&(n.forEach(H),n.length=0,i.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?n.push(Z(this.features_,at,this.handleFeatureAdd_,this),Z(this.features_,st,this.handleFeatureRemove_,this)):this.source_&&n.push(Z(this.source_,ef,this.handleFeatureAdd_,this),Z(this.source_,of,this.handleFeatureRemove_,this)),i.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,r){var n=Kt([r.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),r.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_])]),i=this.rBush_.getInExtent(n);this.vertex_&&!this.edge_&&(i=i.filter((function(t){return t.feature.getGeometry().getType()!==bt.CIRCLE})));var o=!1,a=null,s=null;if(0===i.length)return{snapped:o,vertex:a,vertexPixel:s};for(var l,u=r.getView().getProjection(),c=rn(e,u),h=1/0,p=0;p_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}else if(this.edge_){var b=l.feature.getGeometry().getType()===bt.CIRCLE;if(b){var x=l.feature.getGeometry(),w=tn();w&&(x=x.clone().transform(w,u)),a=en(wr(c,x),u)}else c_[0]=rn(g[0],u),c_[1]=rn(g[1],u),a=en(Sr(c,c_),u);if(Ir(t,s=r.getPixelFromCoordinate(a))<=this.pixelTolerance_&&(o=!0,this.vertex_&&!b)){y=r.getPixelFromCoordinate(g[0]),m=r.getPixelFromCoordinate(g[1]),v=Rr(s,y),_=Rr(s,m);Math.sqrt(Math.min(v,_))<=this.pixelTolerance_&&(a=v>_?g[1]:g[0],s=r.getPixelFromCoordinate(a))}}return o&&(s=[Math.round(s[0]),Math.round(s[1])]),{snapped:o,vertex:a,vertexPixel:s}},e.prototype.updateFeature_=function(t){this.removeFeature(t,!1),this.addFeature(t,!1)},e.prototype.writeCircleGeometry_=function(t,e){var r=this.getMap().getView().getProjection(),n=e,i=tn();i&&(n=n.clone().transform(i,r));var o=yi(n);i&&o.transform(r,i);for(var a=o.getCoordinates()[0],s=0,l=a.length-1;s=0;r--){var u=o[r][0];if(te(new Yn(u).getExtent(),new Yn(s).getExtent())){o[r].push(s),l=!0;break}}l||o.push([s.reverse()])}return o}(o.rings,a);1===s.length?(i=bt.POLYGON,t=O({},t,((r={}).rings=s[0],r))):(i=bt.MULTI_POLYGON,t=O({},t,((n={}).rings=s,n)))}return Wy((0,b_[i])(t),!1,e)}function S_(t){var e=yt;return!0===t.hasZ&&!0===t.hasM?e=_t:!0===t.hasZ?e=mt:!0===t.hasM&&(e=vt),e}function E_(t){var e=t.getLayout();return{hasZ:e===mt||e===_t,hasM:e===vt||e===_t}}function T_(t,e){return(0,x_[t.getType()])(Wy(t,!0,e),e)}x_[bt.POINT]=function(t,e){var r,n=t.getCoordinates(),i=t.getLayout();i===mt?r={x:n[0],y:n[1],z:n[2]}:i===vt?r={x:n[0],y:n[1],m:n[2]}:i===_t?r={x:n[0],y:n[1],z:n[2],m:n[3]}:i===yt?r={x:n[0],y:n[1]}:pt(!1,34);return r},x_[bt.LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:[t.getCoordinates()]}},x_[bt.POLYGON]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,rings:t.getCoordinates(!1)}},x_[bt.MULTI_POINT]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,points:t.getCoordinates()}},x_[bt.MULTI_LINE_STRING]=function(t,e){var r=E_(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:t.getCoordinates()}},x_[bt.MULTI_POLYGON]=function(t,e){for(var r=E_(t),n=t.getCoordinates(!1),i=[],o=0;o=0;a--)i.push(n[o][a]);return{hasZ:r.hasZ,hasM:r.hasM,rings:i}};var C_=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).geometryName_=n.geometryName,r}return __(e,t),e.prototype.readFeatureFromObject=function(t,e,r){var n=t,i=w_(n.geometry,e),o=new gt;if(this.geometryName_&&o.setGeometryName(this.geometryName_),o.setGeometry(i),n.attributes){o.setProperties(n.attributes,!0);var a=n.attributes[r];void 0!==a&&o.setId(a)}return o},e.prototype.readFeaturesFromObject=function(t,e){var r=e||{};if(t.features){for(var n=[],i=t.features,o=0,a=i.length;o0?r[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readFeaturesFromDocument(r,e)}return Cc(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var r=[],n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&v(r,this.readFeaturesFromNode(n,e));return r},e.prototype.readFeaturesFromNode=function(t,e){return n()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var r=Pc(t);return this.readGeometryFromDocument(r,e)}return Cc(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}return null},e.prototype.readGeometryFromDocument=function(t,e){return null},e.prototype.readGeometryFromNode=function(t,e){return null},e.prototype.readProjection=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readProjectionFromDocument(e)}return Cc(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},e.prototype.readProjectionFromDocument=function(t){return this.dataProjection},e.prototype.readProjectionFromNode=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){var r=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var r=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var r=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeGeometryNode=function(t,e){return null},e}(Yy),R_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),I_="http://www.opengis.net/gml",L_=/^[\s\xa0]*$/,M_=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureType=n.featureType,r.featureNS=n.featureNS,r.srsName=n.srsName,r.schemaLocation="",r.FEATURE_COLLECTION_PARSERS={},r.FEATURE_COLLECTION_PARSERS[r.namespace]={featureMember:Ic(r.readFeaturesInternal),featureMembers:Lc(r.readFeaturesInternal)},r}return R_(e,t),e.prototype.readFeaturesInternal=function(t,e){var r=t.localName,n=null;if("FeatureCollection"==r)n=Uc([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==r||"featureMember"==r||"member"==r){var i=e[0],o=i.featureType,a=i.featureNS;if(!o&&t.childNodes){o=[],a={};for(var s=0,l=t.childNodes.length;s0){i[s]={_content_:i[s]};for(var u=0;u0:h===bt.POINT||h===bt.MULTI_POINT}}s&&(l=o.get("name"),(s=s&&!!l)&&l.search(/&[^&]+;/)>-1&&(Tx||(Tx=document.createElement("textarea")),Tx.innerHTML=l,l=Tx.value));var p=r;if(t?p=t:e&&(p=function t(e,r,n){return Array.isArray(e)?e:"string"==typeof e?t(n[e],r,n):r}(e,r,n)),s){var f=function(t,e){var r=[0,0],n="start",i=t.getImage();if(i){var o=i.getImageSize();if(null===o&&(o=Kb),2==o.length){var a=i.getScaleArray();r[0]=a[0]*o[0]/2,r[1]=-a[1]*o[1]/2,n="left"}}var s=t.getText();s?((s=s.clone()).setFont(s.getFont()||Sx.getFont()),s.setScale(s.getScale()||Sx.getScale()),s.setFill(s.getFill()||Sx.getFill()),s.setStroke(s.getStroke()||xx)):s=Sx.clone();return s.setText(e),s.setOffsetX(r[0]),s.setOffsetY(r[1]),s.setTextAlign(n),new wp({image:i,text:s})}(p[0],l);return u.length>0?(f.setGeometry(new Vm(u)),[f,new wp({geometry:p[0].getGeometry(),image:null,fill:p[0].getFill(),stroke:p[0].getStroke(),text:null})].concat(p.slice(1))):f}return p}}(r.Style,r.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(s)}return delete r.Style,n.setProperties(r,!0),n}},e.prototype.readSharedStyle_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=nw.call(this,t,e);if(n){var i=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readSharedStyleMap_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=kx.call(this,t,e);if(n){var i,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readFeatureFromNode=function(t,e){if(!g(cx,t.namespaceURI))return null;var r=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return r||null},e.prototype.readFeaturesFromNode=function(t,e){if(!g(cx,t.namespaceURI))return[];var r,n=t.localName;if("Document"==n||"Folder"==n)return(r=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]))||[];if("Placemark"==n){var i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){r=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var a=this.readFeaturesFromNode(o,e);a&&v(r,a)}return r}return[]},e.prototype.readName=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readNameFromDocument(e)}return Cc(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},e.prototype.readNameFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){var r=this.readNameFromNode(e);if(r)return r}},e.prototype.readNameFromNode=function(t){for(var e=t.firstElementChild;e;e=e.nextElementSibling)if(g(cx,e.namespaceURI)&&"name"==e.localName)return U_(e);for(e=t.firstElementChild;e;e=e.nextElementSibling){var r=e.localName;if(g(cx,e.namespaceURI)&&("Document"==r||"Folder"==r||"Placemark"==r||"kml"==r)){var n=this.readNameFromNode(e);if(n)return n}}},e.prototype.readNetworkLinks=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readNetworkLinksFromDocument(r))}else Cc(t)?v(e,this.readNetworkLinksFromDocument(t)):v(e,this.readNetworkLinksFromNode(t));return e},e.prototype.readNetworkLinksFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readNetworkLinksFromNode(r));return e},e.prototype.readNetworkLinksFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"NetworkLink"==r.localName){var n=Uc({},fx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readNetworkLinksFromNode(r))}return e},e.prototype.readRegion=function(t){var e=[];if("string"==typeof t){var r=Pc(t);v(e,this.readRegionFromDocument(r))}else Cc(t)?v(e,this.readRegionFromDocument(t)):v(e,this.readRegionFromNode(t));return e},e.prototype.readRegionFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&v(e,this.readRegionFromNode(r));return e},e.prototype.readRegionFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(g(cx,r.namespaceURI)&&"Region"==r.localName){var n=Uc({},gx,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!g(cx,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||v(e,this.readRegionFromNode(r))}return e},e.prototype.writeFeaturesNode=function(t,e){e=this.adaptOptions(e);var r=Sc(cx[4],"kml"),n="http://www.w3.org/2000/xmlns/";r.setAttributeNS(n,"xmlns:gx",ux[0]),r.setAttributeNS(n,"xmlns:xsi",wc),r.setAttributeNS(wc,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var i={node:r},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var a=yx[r.namespaceURI],s=Dc(o,a);return Vc(i,mx,Nc,s,[e],a,this),r},e}(P_);function Rx(t){var e=Ec(t,!1),r=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(r){var n=r[1];return[parseInt(n.substr(6,2),16),parseInt(n.substr(4,2),16),parseInt(n.substr(2,2),16),parseInt(n.substr(0,2),16)/255]}}function Ix(t){var e=Ec(t,!1),r=[];e=e.replace(/\s*,\s*/g,",");for(var n,i=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;n=i.exec(e);){var o=parseFloat(n[1]),a=parseFloat(n[2]),s=n[3]?parseFloat(n[3]):0;r.push(o,a,s),e=e.substr(n[0].length)}if(""===e)return r}function Lx(t){var e=Ec(t,!1).trim(),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Mx(t){var e=Ec(t,!1).trim().replace(/^(?!.*#)/,"#"),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function Fx(t){return N_(t)}var Ax=Gc(cx,{Pair:function(t,e){var r=Uc({},uw,t,e,this);if(!r)return;var n=r.key;if(n&&"normal"==n){var i=r.styleUrl;i&&(e[e.length-1]=i);var o=r.Style;o&&(e[e.length-1]=o)}}});function kx(t,e){return Uc(void 0,Ax,t,e,this)}var jx=Gc(cx,{Icon:Fc((function(t,e){var r=Uc({},Wx,t,e);return r||null})),color:Fc(Rx),heading:Fc(N_),hotSpot:Fc((function(t){var e,r=t.getAttribute("xunits"),n=t.getAttribute("yunits");return e="insetPixels"!==r?"insetPixels"!==n?ip:ap:"insetPixels"!==n?op:sp,{x:parseFloat(t.getAttribute("x")),xunits:hx[r],y:parseFloat(t.getAttribute("y")),yunits:hx[n],origin:e}})),scale:Fc(Fx)});var Nx=Gc(cx,{color:Fc(Rx),scale:Fc(Fx)});var Dx=Gc(cx,{color:Fc(Rx),width:Fc(N_)});var Gx=Gc(cx,{color:Fc(Rx),fill:Fc(A_),outline:Fc(A_)});var zx=Gc(cx,{coordinates:Lc(Ix)});function Ux(t,e){return Uc(null,zx,t,e)}var Bx=Gc(ux,{Track:Ic(Yx)});var Vx=Gc(cx,{when:function(t,e){var r=e[e.length-1].whens,n=Ec(t,!1),i=Date.parse(n);r.push(isNaN(i)?0:i)}},Gc(ux,{coord:function(t,e){var r=e[e.length-1].flatCoordinates,n=Ec(t,!1),i=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(i){var o=parseFloat(i[1]),a=parseFloat(i[2]),s=parseFloat(i[3]);r.push(o,a,s,0)}else r.push(0,0,0,0)}}));function Yx(t,e){var r=Uc({flatCoordinates:[],whens:[]},Vx,t,e);if(r){for(var n=r.flatCoordinates,i=r.whens,o=0,a=Math.min(n.length,i.length);o0,c=l.href;c?n=c:u&&(n=Hb);var h,p=ip,f=r.hotSpot;f?(i=[f.x,f.y],o=f.xunits,a=f.yunits,p=f.origin):n===Hb?(i=qb,o=Xb,a=Zb):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n)&&(i=[.5,0],o=rp,a=rp);var d,g=l.x,y=l.y;void 0!==g&&void 0!==y&&(h=[g,y]);var m,v=l.w,_=l.h;void 0!==v&&void 0!==_&&(d=[v,_]);var b=r.heading;void 0!==b&&(m=Ye(b));var x=r.scale,w=r.color;if(u){n==Hb&&(d=Kb,void 0===x&&(x=$b));var S=new dp({anchor:i,anchorOrigin:p,anchorXUnits:o,anchorYUnits:a,crossOrigin:this.crossOrigin_,offset:h,offsetOrigin:ip,rotation:m,scale:x,size:d,src:this.iconUrlFunction_(n),color:w});s.imageStyle=S}else s.imageStyle=_x}},LabelStyle:function(t,e){var r=Uc({},Nx,t,e);if(r){var n=e[e.length-1],i=new Tp({fill:new ep({color:"color"in r?r.color:Wb}),scale:r.scale});n.textStyle=i}},LineStyle:function(t,e){var r=Uc({},Dx,t,e);if(r){var n=e[e.length-1],i=new gp({color:"color"in r?r.color:Wb,width:"width"in r?r.width:1});n.strokeStyle=i}},PolyStyle:function(t,e){var r=Uc({},Gx,t,e);if(r){var n=e[e.length-1],i=new ep({color:"color"in r?r.color:Wb});n.fillStyle=i;var o=r.fill;void 0!==o&&(n.fill=o);var a=r.outline;void 0!==a&&(n.outline=a)}}});function nw(t,e){var r=Uc({},rw,t,e,this);if(!r)return null;var n,i="fillStyle"in r?r.fillStyle:vx,o=r.fill;void 0===o||o||(i=null),"imageStyle"in r?r.imageStyle!=_x&&(n=r.imageStyle):n=bx;var a="textStyle"in r?r.textStyle:Sx,s="strokeStyle"in r?r.strokeStyle:wx,l=r.outline;return void 0===l||l?[new wp({fill:i,image:n,stroke:s,text:a,zIndex:void 0})]:[new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e!==bt.POLYGON&&e!==bt.MULTI_POLYGON}))):r!==bt.POLYGON&&r!==bt.MULTI_POLYGON?e:void 0},fill:i,image:n,stroke:s,text:a,zIndex:void 0}),new wp({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===bt.GEOMETRY_COLLECTION?new Vm(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e===bt.POLYGON||e===bt.MULTI_POLYGON}))):r===bt.POLYGON||r===bt.MULTI_POLYGON?e:void 0},fill:i,stroke:null,zIndex:void 0})]}function iw(t,e){var r,n,i,o=e.length,a=new Array(e.length),s=new Array(e.length),l=new Array(e.length);r=!1,n=!1,i=!1;for(var u=0;u0){var m=Dc(i,a);Vc(n,Gw,Uw,[{names:a,values:m}],r)}var v=r[0],_=e.getGeometry();_&&(_=Wy(_,!0,v)),Vc(n,Gw,Iw,[_],r)}var Vw=Gc(cx,["extrude","tessellate","altitudeMode","coordinates"]),Yw=Gc(cx,{extrude:Ac(B_),tessellate:Ac(B_),altitudeMode:Ac(X_),coordinates:Ac((function(t,e,r){var n,i=r[r.length-1],o=i.layout,a=i.stride;o==yt||o==vt?n=2:o==mt||o==_t?n=3:pt(!1,34);var s=e.length,l="";if(s>0){l+=e[0];for(var u=1;u>1):i>>1}return e}function NS(t){for(var e="",r=0,n=t.length;r=32;)e=63+(32|31&t),r+=String.fromCharCode(e),t>>=5;return e=t+63,r+=String.fromCharCode(e)}var zS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.dataProjection=Gr("EPSG:4326"),r.factor_=n.factor?n.factor:1e5,r.geometryLayout_=n.geometryLayout?n.geometryLayout:yt,r}return IS(e,t),e.prototype.readFeatureFromText=function(t,e){var r=this.readGeometryFromText(t,e);return new gt(r)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var r=yn(this.geometryLayout_),n=MS(t,r,this.factor_);v_(n,0,n.length,r,n);var i=Nn(n,0,n.length,r);return Wy(new Py(i,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var r=t.getGeometry();return r?this.writeGeometryText(r,e):(pt(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var r=(t=Wy(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return v_(r,0,r.length,n,r),LS(r,n,this.factor_)},e}(Jb),US=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BS=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.layerName_=n.layerName,r.layers_=n.layers?n.layers:null,r.dataProjection=Gr(n.dataProjection?n.dataProjection:"EPSG:4326"),r}return US(e,t),e.prototype.readFeaturesFromObject=function(t,e){if("Topology"==t.type){var r=t,n=void 0,i=null,o=null;r.transform&&(i=(n=r.transform).scale,o=n.translate);var a=r.arcs;n&&function(t,e,r){for(var n=0,i=t.length;n0&&i.pop(),n=r>=0?e[r]:e[~r].slice().reverse(),i.push.apply(i,n);for(var s=0,l=i.length;s=2,57),n}return $S(e,t),e}(HS),QS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),tE=function(t){function e(e){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return QS(e,t),e}(JS),eE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rE=function(t){function e(e,r,n){var i=t.call(this,"BBOX")||this;if(i.geometryName=e,i.extent=r,4!==r.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return i.srsName=n,i}return eE(e,t),e}(HS),nE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iE=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.geometryName=r||"the_geom",o.geometry=n,o.srsName=i,o}return nE(e,t),e}(HS),oE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),aE=function(t){function e(e,r,n){return t.call(this,"Contains",e,r,n)||this}return oE(e,t),e}(iE),sE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),lE=function(t){function e(e,r,n,i,o){var a=t.call(this,"DWithin",e,r,o)||this;return a.distance=n,a.unit=i,a}return sE(e,t),e}(iE),uE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),cE=function(t){function e(e,r,n){return t.call(this,"Disjoint",e,r,n)||this}return uE(e,t),e}(iE),hE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pE=function(t){function e(e,r){var n=t.call(this,e)||this;return n.propertyName=r,n}return hE(e,t),e}(HS),fE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),dE=function(t){function e(e,r,n){var i=t.call(this,"During",e)||this;return i.begin=r,i.end=n,i}return fE(e,t),e}(pE),gE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),yE=function(t){function e(e,r,n,i){var o=t.call(this,e,r)||this;return o.expression=n,o.matchCase=i,o}return gE(e,t),e}(pE),mE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vE=function(t){function e(e,r,n){return t.call(this,"PropertyIsEqualTo",e,r,n)||this}return mE(e,t),e}(yE),_E=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThan",e,r)||this}return _E(e,t),e}(yE),xE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),wE=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThanOrEqualTo",e,r)||this}return xE(e,t),e}(yE),SE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),EE=function(t){function e(e,r,n){return t.call(this,"Intersects",e,r,n)||this}return SE(e,t),e}(iE),TE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),CE=function(t){function e(e,r,n){var i=t.call(this,"PropertyIsBetween",e)||this;return i.lowerBoundary=r,i.upperBoundary=n,i}return TE(e,t),e}(pE),OE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),PE=function(t){function e(e,r,n,i,o,a){var s=t.call(this,"PropertyIsLike",e)||this;return s.pattern=r,s.wildCard=void 0!==n?n:"*",s.singleChar=void 0!==i?i:".",s.escapeChar=void 0!==o?o:"!",s.matchCase=a,s}return OE(e,t),e}(pE),RE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),IE=function(t){function e(e){return t.call(this,"PropertyIsNull",e)||this}return RE(e,t),e}(pE),LE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ME=function(t){function e(e,r){return t.call(this,"PropertyIsLessThan",e,r)||this}return LE(e,t),e}(yE),FE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),AE=function(t){function e(e,r){return t.call(this,"PropertyIsLessThanOrEqualTo",e,r)||this}return FE(e,t),e}(yE),kE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jE=function(t){function e(e){var r=t.call(this,"Not")||this;return r.condition=e,r}return kE(e,t),e}(HS),NE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),DE=function(t){function e(e,r,n){return t.call(this,"PropertyIsNotEqualTo",e,r,n)||this}return NE(e,t),e}(yE),GE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zE=function(t){function e(e){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return GE(e,t),e}(JS),UE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BE=function(t){function e(e){var r=t.call(this,"ResourceId")||this;return r.rid=e,r}return UE(e,t),e}(HS),VE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),YE=function(t){function e(e,r,n){return t.call(this,"Within",e,r,n)||this}return VE(e,t),e}(iE);function WE(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(tE,e))}function qE(t,e,r){return new rE(t,e,r)}var XE=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ZE={"http://www.opengis.net/gml":{boundedBy:Fc(F_.prototype.readGeometryElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:Ic(F_.prototype.readFeaturesInternal)}},KE={"http://www.opengis.net/wfs":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)},"http://www.opengis.net/wfs/2.0":{totalInserted:Fc(G_),totalUpdated:Fc(G_),totalDeleted:Fc(G_)}},HE={"http://www.opengis.net/wfs":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:Fc(sT,"transactionSummary"),InsertResults:Fc(hT,"insertIds")}},$E={"http://www.opengis.net/wfs":{PropertyName:Ac(X_)},"http://www.opengis.net/wfs/2.0":{PropertyName:Ac(X_)}},JE={"http://www.opengis.net/wfs":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)},"http://www.opengis.net/wfs/2.0":{Insert:Ac(pT),Update:Ac(yT),Delete:Ac(gT),Property:Ac(mT),Native:Ac(vT)}},QE="http://www.w3.org/2000/xmlns/",tT={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},eT={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},rT={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},nT={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},iT={"2.0.0":ab,"1.1.0":eb,"1.0.0":$_},oT=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.version_=n.version?n.version:"1.1.0",r.featureType_=n.featureType,r.featureNS_=n.featureNS,r.gmlFormat_=n.gmlFormat?n.gmlFormat:new iT[r.version_],r.schemaLocation_=n.schemaLocation?n.schemaLocation:nT[r.version_],r}return XE(e,t),e.prototype.getFeatureType=function(){return this.featureType_},e.prototype.setFeatureType=function(t){this.featureType_=t},e.prototype.readFeaturesFromNode=function(t,e){var r={node:t};O(r,{featureType:this.featureType_,featureNS:this.featureNS_}),O(r,this.getReadOptions(t,e||{}));var n=[r],i=Uc([],"2.0.0"===this.version_?ZE:this.gmlFormat_.FEATURE_COLLECTION_PARSERS,t,n,this.gmlFormat_);return i||(i=[]),i},e.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readTransactionResponseFromDocument(e)}return Cc(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},e.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var e=Pc(t);return this.readFeatureCollectionMetadataFromDocument(e)}return Cc(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},e.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(e)},e.prototype.readFeatureCollectionMetadataFromNode=function(t){var e={},r=z_(t.getAttribute("numberOfFeatures"));return e.numberOfFeatures=r,Uc(e,ZE,t,[],this.gmlFormat_)},e.prototype.readTransactionResponseFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(e)},e.prototype.readTransactionResponseFromNode=function(t){return Uc({},HE,t,[])},e.prototype.writeGetFeature=function(t){var e=this,r=Sc(eT[this.version_],"GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",this.version_),t.handle&&r.setAttribute("handle",t.handle),t.outputFormat&&r.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&r.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&r.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&r.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&r.setAttribute("count",String(t.count)),void 0!==t.viewParams&&r.setAttribute("viewParams",t.viewParams),r.setAttributeNS(wc,"xsi:schemaLocation",this.schemaLocation_);var n={node:r};if(O(n,{version:this.version_,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.featureNS_,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),pt(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var i=t.filter;t.bbox&&(pt(t.geometryName,12),i=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,i)),O(n,{geometryName:t.geometryName,filter:i}),jT(r,t.featureTypes,[n])}else t.featureTypes.forEach((function(i){var o=e.combineBboxAndFilter(i.geometryName,i.bbox,t.srsName,t.filter);O(n,{geometryName:i.geometryName,filter:o}),jT(r,[i.name],[n])}));return r},e.prototype.combineBboxAndFilter=function(t,e,r,n){var i=qE(t,e,r);return n?WE(n,i):i},e.prototype.writeTransaction=function(t,e,r,n){var i,o=[],a=n.version?n.version:this.version_,s=Sc(eT[a],"Transaction");s.setAttribute("service","WFS"),s.setAttribute("version",a),n&&(i=n.gmlOptions?n.gmlOptions:{},n.handle&&s.setAttribute("handle",n.handle)),s.setAttributeNS(wc,"xsi:schemaLocation",nT[a]);var l=function(t,e,r,n){var i,o=n.featurePrefix?n.featurePrefix:"feature";"1.0.0"===r?i=2:"1.1.0"===r?i=3:"2.0.0"===r&&(i=3.2);return O({node:t},{version:r,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:o,gmlVersion:i,hasZ:n.hasZ,srsName:n.srsName},e)}(s,i,a,n);return t&&aT("Insert",t,o,l),e&&aT("Update",e,o,l),r&&aT("Delete",r,o,l),n.nativeElements&&aT("Native",n.nativeElements,o,l),s},e.prototype.readProjectionFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null},e.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){var r=[{}];return this.gmlFormat_.readGeometryElement(e,r),Gr(r.pop().srsName)}return null},e}(P_);function aT(t,e,r,n){Vc(n,JE,jc(t),e,r)}function sT(t,e){return Uc({},KE,t,e)}var lT={"http://www.opengis.net/ogc":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:Ic((function(t,e){return t.getAttribute("fid")}))}};function uT(t,e){zc(lT,t,e)}var cT={"http://www.opengis.net/wfs":{Feature:uT},"http://www.opengis.net/wfs/2.0":{Feature:uT}};function hT(t,e){return Uc([],cT,t,e)}function pT(t,e,r){var n=r[r.length-1],i=n.featureType,o=n.featureNS,a=n.gmlVersion,s=Sc(o,i);t.appendChild(s),2===a?$_.prototype.writeFeatureElement(s,e,r):3===a?eb.prototype.writeFeatureElement(s,e,r):ab.prototype.writeFeatureElement(s,e,r)}function fT(t,e,r){var n=r[r.length-1].version,i=tT[n],o=Sc(i,"Filter"),a=Sc(i,"FeatureId");o.appendChild(a),a.setAttribute("fid",e),t.appendChild(o)}function dT(t,e){var r=(t=t||"feature")+":";return 0===e.indexOf(r)?e:r+e}function gT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),26);var i=n.featureType,o=n.featurePrefix,a=n.featureNS,s=dT(o,i);t.setAttribute("typeName",s),t.setAttributeNS(QE,"xmlns:"+o,a);var l=e.getId();void 0!==l&&fT(t,l,r)}function yT(t,e,r){var n=r[r.length-1];pt(void 0!==e.getId(),27);var i=n.version,o=n.featureType,a=n.featurePrefix,s=n.featureNS,l=dT(a,o),u=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(QE,"xmlns:"+a,s);var c=e.getId();if(void 0!==c){for(var h=e.getKeys(),p=[],f=0,d=h.length;f="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},t.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},t.prototype.nextToken=function(){var t,e=this.nextChar_(),r=this.index_,n=e;if("("==e)t=BT;else if(","==e)t=WT;else if(")"==e)t=VT;else if(this.isNumeric_(e)||"-"==e)t=YT,n=this.readNumber_();else if(this.isAlpha_(e))t=UT,n=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=qT}return{position:r,value:n,type:t}},t.prototype.readNumber_=function(){var t,e=this.index_,r=!1,n=!1;do{"."==t?r=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,r)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},t.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()},t}(),HT=function(){function t(t){this.lexer_=t,this.token_,this.layout_=yt}return t.prototype.consume_=function(){this.token_=this.lexer_.nextToken()},t.prototype.isTokenType=function(t){return this.token_.type==t},t.prototype.match=function(t){var e=this.isTokenType(t);return e&&this.consume_(),e},t.prototype.parse=function(){return this.consume_(),this.parseGeometry_()},t.prototype.parseGeometryLayout_=function(){var t=yt,e=this.token_;if(this.isTokenType(UT)){var r=e.value;"Z"===r?t=mt:"M"===r?t=vt:"ZM"===r&&(t=_t),t!==yt&&this.consume_()}return t},t.prototype.parseGeometryCollectionText_=function(){if(this.match(BT)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(WT));if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePointText_=function(){if(this.match(BT)){var t=this.parsePoint_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return null;throw new Error(this.formatErrorMessage_())},t.prototype.parseLineStringText_=function(){if(this.match(BT)){var t=this.parsePointList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePolygonText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPointText_=function(){if(this.match(BT)){var t=void 0;if(t=this.token_.type==BT?this.parsePointTextList_():this.parsePointList_(),this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiLineStringText_=function(){if(this.match(BT)){var t=this.parseLineStringTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPolygonText_=function(){if(this.match(BT)){var t=this.parsePolygonTextList_();if(this.match(VT))return t}else if(this.isEmptyGeometry_())return[];throw new Error(this.formatErrorMessage_())},t.prototype.parsePoint_=function(){for(var t=[],e=this.layout_.length,r=0;r0&&(e+=" "+n)}return 0===r.length?e+" EMPTY":e+"("+r+")"}var nC=$T,iC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),oC=[null,"http://www.opengis.net/wms"],aC=Gc(oC,{Service:Fc((function(t,e){return Uc({},uC,t,e)})),Capability:Fc((function(t,e){return Uc({},sC,t,e)}))}),sC=Gc(oC,{Request:Fc((function(t,e){return Uc({},mC,t,e)})),Exception:Fc((function(t,e){return Uc([],fC,t,e)})),Layer:Fc((function(t,e){var r=Uc({},dC,t,e);if(void 0===r.Layer)return Object.assign(r,EC(t,e));return r}))}),lC=function(t){function e(){var e=t.call(this)||this;return e.version=void 0,e}return iC(e,t),e.prototype.readFromNode=function(t){this.version=t.getAttribute("version").trim();var e=Uc({version:this.version},aC,t,[]);return e||null},e}(cS),uC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),OnlineResource:Fc(hS),ContactInformation:Fc((function(t,e){return Uc({},cC,t,e)})),Fees:Fc(U_),AccessConstraints:Fc(U_),LayerLimit:Fc(G_),MaxWidth:Fc(G_),MaxHeight:Fc(G_)}),cC=Gc(oC,{ContactPersonPrimary:Fc((function(t,e){return Uc({},hC,t,e)})),ContactPosition:Fc(U_),ContactAddress:Fc((function(t,e){return Uc({},pC,t,e)})),ContactVoiceTelephone:Fc(U_),ContactFacsimileTelephone:Fc(U_),ContactElectronicMailAddress:Fc(U_)}),hC=Gc(oC,{ContactPerson:Fc(U_),ContactOrganization:Fc(U_)}),pC=Gc(oC,{AddressType:Fc(U_),Address:Fc(U_),City:Fc(U_),StateOrProvince:Fc(U_),PostCode:Fc(U_),Country:Fc(U_)}),fC=Gc(oC,{Format:Ic(U_)}),dC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),KeywordList:Fc(PC),CRS:Mc(U_),EX_GeographicBoundingBox:Fc((function(t,e){var r=Uc({},yC,t,e);if(!r)return;var n=r.westBoundLongitude,i=r.southBoundLatitude,o=r.eastBoundLongitude,a=r.northBoundLatitude;if(void 0===n||void 0===i||void 0===o||void 0===a)return;return[n,i,o,a]})),BoundingBox:Mc((function(t,e){var r=[D_(t.getAttribute("minx")),D_(t.getAttribute("miny")),D_(t.getAttribute("maxx")),D_(t.getAttribute("maxy"))],n=[D_(t.getAttribute("resx")),D_(t.getAttribute("resy"))];return{crs:t.getAttribute("CRS"),extent:r,res:n}})),Dimension:Mc((function(t,e){return{name:t.getAttribute("name"),units:t.getAttribute("units"),unitSymbol:t.getAttribute("unitSymbol"),default:t.getAttribute("default"),multipleValues:k_(t.getAttribute("multipleValues")),nearestValue:k_(t.getAttribute("nearestValue")),current:k_(t.getAttribute("current")),values:U_(t)}})),Attribution:Fc((function(t,e){return Uc({},gC,t,e)})),AuthorityURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.name=t.getAttribute("name"),r;return})),Identifier:Mc(U_),MetadataURL:Mc((function(t,e){var r=TC(t,e);if(r)return r.type=t.getAttribute("type"),r;return})),DataURL:Mc(TC),FeatureListURL:Mc(TC),Style:Mc((function(t,e){return Uc({},xC,t,e)})),MinScaleDenominator:Fc(N_),MaxScaleDenominator:Fc(N_),Layer:Mc(EC)}),gC=Gc(oC,{Title:Fc(U_),OnlineResource:Fc(hS),LogoURL:Fc(OC)}),yC=Gc(oC,{westBoundLongitude:Fc(N_),eastBoundLongitude:Fc(N_),southBoundLatitude:Fc(N_),northBoundLatitude:Fc(N_)}),mC=Gc(oC,{GetCapabilities:Fc(CC),GetMap:Fc(CC),GetFeatureInfo:Fc(CC)}),vC=Gc(oC,{Format:Mc(U_),DCPType:Mc((function(t,e){return Uc({},_C,t,e)}))}),_C=Gc(oC,{HTTP:Fc((function(t,e){return Uc({},bC,t,e)}))}),bC=Gc(oC,{Get:Fc(TC),Post:Fc(TC)}),xC=Gc(oC,{Name:Fc(U_),Title:Fc(U_),Abstract:Fc(U_),LegendURL:Mc(OC),StyleSheetURL:Fc(TC),StyleURL:Fc(TC)}),wC=Gc(oC,{Format:Fc(U_),OnlineResource:Fc(hS)}),SC=Gc(oC,{Keyword:Ic(U_)});function EC(t,e){var r=e[e.length-1],n=Uc({},dC,t,e);if(n){var i=k_(t.getAttribute("queryable"));void 0===i&&(i=r.queryable),n.queryable=void 0!==i&&i;var o=z_(t.getAttribute("cascaded"));void 0===o&&(o=r.cascaded),n.cascaded=o;var a=k_(t.getAttribute("opaque"));void 0===a&&(a=r.opaque),n.opaque=void 0!==a&&a;var s=k_(t.getAttribute("noSubsets"));void 0===s&&(s=r.noSubsets),n.noSubsets=void 0!==s&&s;var l=D_(t.getAttribute("fixedWidth"));l||(l=r.fixedWidth),n.fixedWidth=l;var u=D_(t.getAttribute("fixedHeight"));u||(u=r.fixedHeight),n.fixedHeight=u;["Style","CRS","AuthorityURL"].forEach((function(t){if(t in r){var e=n[t]||[];n[t]=e.concat(r[t])}}));return["EX_GeographicBoundingBox","BoundingBox","Dimension","Attribution","MinScaleDenominator","MaxScaleDenominator"].forEach((function(t){if(!(t in n)){var e=r[t];n[t]=e}})),n}}function TC(t,e){return Uc({},wC,t,e)}function CC(t,e){return Uc({},vC,t,e)}function OC(t,e){var r=TC(t,e);if(r){var n=[z_(t.getAttribute("width")),z_(t.getAttribute("height"))];return r.size=n,r}}function PC(t,e){return Uc([],SC,t,e)}var RC=lC,IC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),LC=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureNS_="http://mapserver.gis.umn.edu/mapserver",r.gmlFormat_=new $_,r.layers_=n.layers?n.layers:null,r}return IC(e,t),e.prototype.getLayers=function(){return this.layers_},e.prototype.setLayers=function(t){this.layers_=t},e.prototype.readFeatures_=function(t,e){t.setAttribute("namespaceURI",this.featureNS_);var r=t.localName,n=[];if(0===t.childNodes.length)return n;if("msGMLOutput"==r)for(var i=0,o=t.childNodes.length;i.75*c||u>.75*h?this.resetExtent_():te(o,n)||this.recenter_()}}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getSize(),n=t.getView().calculateExtentInternal(r),i=e.getView(),o=Math.log(7.5)/Math.LN2;Me(n,1/(.1*Math.pow(2,o/2))),i.fitInternal(gi(n))},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getView();e.getView().setCenterInternal(r.getCenterInternal())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView(),i=e.getView(),o=this.rotateWithView_?0:-n.getRotation(),a=this.boxOverlay_,s=this.boxOverlay_.getElement(),l=n.getCenterInternal(),u=n.getResolution(),c=i.getResolution(),h=r[0]*u/c,p=r[1]*u/c;if(a.setPosition(l),s){s.style.width=h+"px",s.style.height=p+"px";var f="rotate("+o+"rad)";s.style.transform=f}}},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle("ol-collapsed"),this.collapsed_?po(this.collapseLabel_,this.label_):po(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),K(t,qa,(function(t){this.updateBox_()}),this)}},e.prototype.getCollapsible=function(){return this.collapsible_},e.prototype.setCollapsible=function(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())},e.prototype.setCollapsed=function(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()},e.prototype.getCollapsed=function(){return this.collapsed_},e.prototype.getRotateWithView=function(){return this.rotateWithView_},e.prototype.setRotateWithView=function(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))},e.prototype.getOverviewMap=function(){return this.ovmap_},e.prototype.render=function(t){this.validateExtent_(),this.updateBox_()},e}(As),lO=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),uO="degrees",cO="imperial",hO="nautical",pO="metric",fO="us",dO=[1,2,5],gO=function(t){function e(e){var r=this,n=e||{},i=void 0!==n.className?n.className:n.bar?"ol-scale-bar":"ol-scale-line";return(r=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).innerElement_=document.createElement("div"),r.innerElement_.className=i+"-inner",r.element.className=i+" ol-unselectable",r.element.appendChild(r.innerElement_),r.viewState_=null,r.minWidth_=void 0!==n.minWidth?n.minWidth:64,r.renderedVisible_=!1,r.renderedWidth_=void 0,r.renderedHTML_="",r.addEventListener(it("units"),r.handleUnitsChanged_),r.setUnits(n.units||pO),r.scaleBar_=n.bar||!1,r.scaleBarSteps_=n.steps||4,r.scaleBarText_=n.text||!1,r.dpi_=n.dpi||void 0,r}return lO(e,t),e.prototype.getUnits=function(){return this.get("units")},e.prototype.handleUnitsChanged_=function(){this.updateElement_()},e.prototype.setUnits=function(t){this.set("units",t)},e.prototype.setDpi=function(t){this.dpi_=t},e.prototype.updateElement_=function(){var t=this.viewState_;if(t){var e=t.center,r=t.projection,n=this.getUnits(),i=n==uO?St.DEGREES:St.METERS,o=zr(r,t.resolution,e,i),a=this.minWidth_*(this.dpi_||25.4/.28)/(25.4/.28),s=a*o,l="";if(n==uO){var u=wt[St.DEGREES];(s*=u)=a)break;++d}f=this.scaleBar_?this.createScaleBar(h,c,l):c.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=f&&(this.innerElement_.innerHTML=f,this.renderedHTML_=f),this.renderedWidth_!=h&&(this.innerElement_.style.width=h+"px",this.renderedWidth_=h),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,r){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),i=[],o=t/this.scaleBarSteps_,a="#ffffff",s=0;s
    '+this.createMarker("relative",s)+(s%2==0||2===this.scaleBarSteps_?this.createStepText(s,t,!1,e,r):"")+"