{"version":3,"file":"esri-leaflet-debug.js","sources":["../src/Support.js","../src/Options.js","../src/Request.js","../node_modules/@terraformer/arcgis/dist/t-arcgis.esm.js","../src/Util.js","../src/Tasks/Task.js","../src/Tasks/Query.js","../src/Tasks/Find.js","../src/Tasks/Identify.js","../src/Tasks/IdentifyFeatures.js","../src/Tasks/IdentifyImage.js","../src/Services/Service.js","../src/Services/MapService.js","../src/Services/ImageService.js","../src/Services/FeatureLayerService.js","../src/Layers/BasemapLayer.js","../src/Layers/TiledMapLayer.js","../src/Layers/RasterLayer.js","../src/Layers/ImageMapLayer.js","../src/Layers/DynamicMapLayer.js","../src/Layers/FeatureLayer/FeatureGrid.js","../node_modules/tiny-binary-search/index.js","../src/Layers/FeatureLayer/FeatureManager.js","../src/Layers/FeatureLayer/FeatureLayer.js","../src/EsriLeaflet.js"],"sourcesContent":["export var cors = ((window.XMLHttpRequest && 'withCredentials' in new window.XMLHttpRequest()));\r\nexport var pointerEvents = document.documentElement.style.pointerEvents === '';\r\n\r\nexport var Support = {\r\n cors: cors,\r\n pointerEvents: pointerEvents\r\n};\r\n\r\nexport default Support;\r\n","export var options = {\r\n attributionWidthOffset: 55\r\n};\r\n\r\nexport default options;\r\n","import { Util, DomUtil } from 'leaflet';\r\nimport { Support } from './Support';\r\n\r\nvar callbacks = 0;\r\n\r\nfunction serialize (params) {\r\n var data = '';\r\n\r\n params.f = params.f || 'json';\r\n\r\n for (var key in params) {\r\n if (Object.prototype.hasOwnProperty.call(params, key)) {\r\n var param = params[key];\r\n var type = Object.prototype.toString.call(param);\r\n var value;\r\n\r\n if (data.length) {\r\n data += '&';\r\n }\r\n\r\n if (type === '[object Array]') {\r\n value = (Object.prototype.toString.call(param[0]) === '[object Object]') ? JSON.stringify(param) : param.join(',');\r\n } else if (type === '[object Object]') {\r\n value = JSON.stringify(param);\r\n } else if (type === '[object Date]') {\r\n value = param.valueOf();\r\n } else {\r\n value = param;\r\n }\r\n\r\n data += encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n }\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction createRequest (callback, context) {\r\n var httpRequest = new window.XMLHttpRequest();\r\n\r\n httpRequest.onerror = function (e) {\r\n httpRequest.onreadystatechange = Util.falseFn;\r\n\r\n callback.call(context, {\r\n error: {\r\n code: 500,\r\n message: 'XMLHttpRequest error'\r\n }\r\n }, null);\r\n };\r\n\r\n httpRequest.onreadystatechange = function () {\r\n var response;\r\n var error;\r\n\r\n if (httpRequest.readyState === 4) {\r\n try {\r\n response = JSON.parse(httpRequest.responseText);\r\n } catch (e) {\r\n response = null;\r\n error = {\r\n code: 500,\r\n message: 'Could not parse response as JSON. This could also be caused by a CORS or XMLHttpRequest error.'\r\n };\r\n }\r\n\r\n if (!error && response.error) {\r\n error = response.error;\r\n response = null;\r\n }\r\n\r\n httpRequest.onerror = Util.falseFn;\r\n\r\n callback.call(context, error, response);\r\n }\r\n };\r\n\r\n httpRequest.ontimeout = function () {\r\n this.onerror();\r\n };\r\n\r\n return httpRequest;\r\n}\r\n\r\nfunction xmlHttpPost (url, params, callback, context) {\r\n var httpRequest = createRequest(callback, context);\r\n httpRequest.open('POST', url);\r\n\r\n if (typeof context !== 'undefined' && context !== null) {\r\n if (typeof context.options !== 'undefined') {\r\n httpRequest.timeout = context.options.timeout;\r\n }\r\n }\r\n httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n httpRequest.send(serialize(params));\r\n\r\n return httpRequest;\r\n}\r\n\r\nfunction xmlHttpGet (url, params, callback, context) {\r\n var httpRequest = createRequest(callback, context);\r\n httpRequest.open('GET', url + '?' + serialize(params), true);\r\n\r\n if (typeof context !== 'undefined' && context !== null) {\r\n if (typeof context.options !== 'undefined') {\r\n httpRequest.timeout = context.options.timeout;\r\n if (context.options.withCredentials) {\r\n httpRequest.withCredentials = true;\r\n }\r\n }\r\n }\r\n httpRequest.send(null);\r\n\r\n return httpRequest;\r\n}\r\n\r\n// AJAX handlers for CORS (modern browsers) or JSONP (older browsers)\r\nexport function request (url, params, callback, context) {\r\n var paramString = serialize(params);\r\n var httpRequest = createRequest(callback, context);\r\n var requestLength = (url + '?' + paramString).length;\r\n\r\n // ie10/11 require the request be opened before a timeout is applied\r\n if (requestLength <= 2000 && Support.cors) {\r\n httpRequest.open('GET', url + '?' + paramString);\r\n } else if (requestLength > 2000 && Support.cors) {\r\n httpRequest.open('POST', url);\r\n httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\r\n }\r\n\r\n if (typeof context !== 'undefined' && context !== null) {\r\n if (typeof context.options !== 'undefined') {\r\n httpRequest.timeout = context.options.timeout;\r\n if (context.options.withCredentials) {\r\n httpRequest.withCredentials = true;\r\n }\r\n }\r\n }\r\n\r\n // request is less than 2000 characters and the browser supports CORS, make GET request with XMLHttpRequest\r\n if (requestLength <= 2000 && Support.cors) {\r\n httpRequest.send(null);\r\n\r\n // request is more than 2000 characters and the browser supports CORS, make POST request with XMLHttpRequest\r\n } else if (requestLength > 2000 && Support.cors) {\r\n httpRequest.send(paramString);\r\n\r\n // request is less than 2000 characters and the browser does not support CORS, make a JSONP request\r\n } else if (requestLength <= 2000 && !Support.cors) {\r\n return jsonp(url, params, callback, context);\r\n\r\n // request is longer then 2000 characters and the browser does not support CORS, log a warning\r\n } else {\r\n warn('a request to ' + url + ' was longer then 2000 characters and this browser cannot make a cross-domain post request. Please use a proxy https://developers.arcgis.com/esri-leaflet/api-reference/request/');\r\n return;\r\n }\r\n\r\n return httpRequest;\r\n}\r\n\r\nexport function jsonp (url, params, callback, context) {\r\n window._EsriLeafletCallbacks = window._EsriLeafletCallbacks || {};\r\n var callbackId = 'c' + callbacks;\r\n params.callback = 'window._EsriLeafletCallbacks.' + callbackId;\r\n\r\n window._EsriLeafletCallbacks[callbackId] = function (response) {\r\n if (window._EsriLeafletCallbacks[callbackId] !== true) {\r\n var error;\r\n var responseType = Object.prototype.toString.call(response);\r\n\r\n if (!(responseType === '[object Object]' || responseType === '[object Array]')) {\r\n error = {\r\n error: {\r\n code: 500,\r\n message: 'Expected array or object as JSONP response'\r\n }\r\n };\r\n response = null;\r\n }\r\n\r\n if (!error && response.error) {\r\n error = response;\r\n response = null;\r\n }\r\n\r\n callback.call(context, error, response);\r\n window._EsriLeafletCallbacks[callbackId] = true;\r\n }\r\n };\r\n\r\n var script = DomUtil.create('script', null, document.body);\r\n script.type = 'text/javascript';\r\n script.src = url + '?' + serialize(params);\r\n script.id = callbackId;\r\n script.onerror = function (error) {\r\n if (error && window._EsriLeafletCallbacks[callbackId] !== true) {\r\n // Can't get true error code: it can be 404, or 401, or 500\r\n var err = {\r\n error: {\r\n code: 500,\r\n message: 'An unknown error occurred'\r\n }\r\n };\r\n\r\n callback.call(context, err);\r\n window._EsriLeafletCallbacks[callbackId] = true;\r\n }\r\n };\r\n DomUtil.addClass(script, 'esri-leaflet-jsonp');\r\n\r\n callbacks++;\r\n\r\n return {\r\n id: callbackId,\r\n url: script.src,\r\n abort: function () {\r\n window._EsriLeafletCallbacks._callback[callbackId]({\r\n code: 0,\r\n message: 'Request aborted.'\r\n });\r\n }\r\n };\r\n}\r\n\r\nvar get = ((Support.cors) ? xmlHttpGet : jsonp);\r\nget.CORS = xmlHttpGet;\r\nget.JSONP = jsonp;\r\n\r\nexport function warn () {\r\n if (console && console.warn) {\r\n console.warn.apply(console, arguments);\r\n }\r\n}\r\n\r\n// choose the correct AJAX handler depending on CORS support\r\nexport { get };\r\n\r\n// always use XMLHttpRequest for posts\r\nexport { xmlHttpPost as post };\r\n\r\n// export the Request object to call the different handlers for debugging\r\nexport var Request = {\r\n request: request,\r\n get: get,\r\n post: xmlHttpPost\r\n};\r\n\r\nexport default Request;\r\n","/* @preserve\n* @terraformer/arcgis - v2.0.7 - MIT\n* Copyright (c) 2012-2021 Environmental Systems Research Institute, Inc.\n* Thu Jul 22 2021 13:58:30 GMT-0700 (Pacific Daylight Time)\n*/\n/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n\nvar edgeIntersectsEdge = function edgeIntersectsEdge(a1, a2, b1, b2) {\n var uaT = (b2[0] - b1[0]) * (a1[1] - b1[1]) - (b2[1] - b1[1]) * (a1[0] - b1[0]);\n var ubT = (a2[0] - a1[0]) * (a1[1] - b1[1]) - (a2[1] - a1[1]) * (a1[0] - b1[0]);\n var uB = (b2[1] - b1[1]) * (a2[0] - a1[0]) - (b2[0] - b1[0]) * (a2[1] - a1[1]);\n\n if (uB !== 0) {\n var ua = uaT / uB;\n var ub = ubT / uB;\n\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n return true;\n }\n }\n\n return false;\n};\nvar coordinatesContainPoint = function coordinatesContainPoint(coordinates, point) {\n var contains = false;\n\n for (var i = -1, l = coordinates.length, j = l - 1; ++i < l; j = i) {\n if ((coordinates[i][1] <= point[1] && point[1] < coordinates[j][1] || coordinates[j][1] <= point[1] && point[1] < coordinates[i][1]) && point[0] < (coordinates[j][0] - coordinates[i][0]) * (point[1] - coordinates[i][1]) / (coordinates[j][1] - coordinates[i][1]) + coordinates[i][0]) {\n contains = !contains;\n }\n }\n\n return contains;\n};\nvar pointsEqual = function pointsEqual(a, b) {\n for (var i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n\n return true;\n};\nvar arrayIntersectsArray = function arrayIntersectsArray(a, b) {\n for (var i = 0; i < a.length - 1; i++) {\n for (var j = 0; j < b.length - 1; j++) {\n if (edgeIntersectsEdge(a[i], a[i + 1], b[j], b[j + 1])) {\n return true;\n }\n }\n }\n\n return false;\n};\n\n/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n\nvar closeRing = function closeRing(coordinates) {\n if (!pointsEqual(coordinates[0], coordinates[coordinates.length - 1])) {\n coordinates.push(coordinates[0]);\n }\n\n return coordinates;\n}; // determine if polygon ring coordinates are clockwise. clockwise signifies outer ring, counter-clockwise an inner ring\n// or hole. this logic was found at http://stackoverflow.com/questions/1165647/how-to-determine-if-a-list-of-polygon-\n// points-are-in-clockwise-order\n\nvar ringIsClockwise = function ringIsClockwise(ringToTest) {\n var total = 0;\n var i = 0;\n var rLength = ringToTest.length;\n var pt1 = ringToTest[i];\n var pt2;\n\n for (i; i < rLength - 1; i++) {\n pt2 = ringToTest[i + 1];\n total += (pt2[0] - pt1[0]) * (pt2[1] + pt1[1]);\n pt1 = pt2;\n }\n\n return total >= 0;\n}; // This function ensures that rings are oriented in the right directions\n// from http://jsperf.com/cloning-an-object/2\n\nvar shallowClone = function shallowClone(obj) {\n var target = {};\n\n for (var i in obj) {\n // both arcgis attributes and geojson props are just hardcoded keys\n if (obj.hasOwnProperty(i)) {\n // eslint-disable-line no-prototype-builtins\n target[i] = obj[i];\n }\n }\n\n return target;\n};\n\n/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n\nvar coordinatesContainCoordinates = function coordinatesContainCoordinates(outer, inner) {\n var intersects = arrayIntersectsArray(outer, inner);\n var contains = coordinatesContainPoint(outer, inner[0]);\n\n if (!intersects && contains) {\n return true;\n }\n\n return false;\n}; // do any polygons in this array contain any other polygons in this array?\n// used for checking for holes in arcgis rings\n\n\nvar convertRingsToGeoJSON = function convertRingsToGeoJSON(rings) {\n var outerRings = [];\n var holes = [];\n var x; // iterator\n\n var outerRing; // current outer ring being evaluated\n\n var hole; // current hole being evaluated\n // for each ring\n\n for (var r = 0; r < rings.length; r++) {\n var ring = closeRing(rings[r].slice(0));\n\n if (ring.length < 4) {\n continue;\n } // is this ring an outer ring? is it clockwise?\n\n\n if (ringIsClockwise(ring)) {\n var polygon = [ring.slice().reverse()]; // wind outer rings counterclockwise for RFC 7946 compliance\n\n outerRings.push(polygon); // push to outer rings\n } else {\n holes.push(ring.slice().reverse()); // wind inner rings clockwise for RFC 7946 compliance\n }\n }\n\n var uncontainedHoles = []; // while there are holes left...\n\n while (holes.length) {\n // pop a hole off out stack\n hole = holes.pop(); // loop over all outer rings and see if they contain our hole.\n\n var contained = false;\n\n for (x = outerRings.length - 1; x >= 0; x--) {\n outerRing = outerRings[x][0];\n\n if (coordinatesContainCoordinates(outerRing, hole)) {\n // the hole is contained push it into our polygon\n outerRings[x].push(hole);\n contained = true;\n break;\n }\n } // ring is not contained in any outer ring\n // sometimes this happens https://github.com/Esri/esri-leaflet/issues/320\n\n\n if (!contained) {\n uncontainedHoles.push(hole);\n }\n } // if we couldn't match any holes using contains we can try intersects...\n\n\n while (uncontainedHoles.length) {\n // pop a hole off out stack\n hole = uncontainedHoles.pop(); // loop over all outer rings and see if any intersect our hole.\n\n var intersects = false;\n\n for (x = outerRings.length - 1; x >= 0; x--) {\n outerRing = outerRings[x][0];\n\n if (arrayIntersectsArray(outerRing, hole)) {\n // the hole is contained push it into our polygon\n outerRings[x].push(hole);\n intersects = true;\n break;\n }\n }\n\n if (!intersects) {\n outerRings.push([hole.reverse()]);\n }\n }\n\n if (outerRings.length === 1) {\n return {\n type: 'Polygon',\n coordinates: outerRings[0]\n };\n } else {\n return {\n type: 'MultiPolygon',\n coordinates: outerRings\n };\n }\n};\n\nvar getId = function getId(attributes, idAttribute) {\n var keys = idAttribute ? [idAttribute, 'OBJECTID', 'FID'] : ['OBJECTID', 'FID'];\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key in attributes && (typeof attributes[key] === 'string' || typeof attributes[key] === 'number')) {\n return attributes[key];\n }\n }\n\n throw Error('No valid id attribute found');\n};\n\nvar arcgisToGeoJSON = function arcgisToGeoJSON(arcgis, idAttribute) {\n var geojson = {};\n\n if (arcgis.features) {\n geojson.type = 'FeatureCollection';\n geojson.features = [];\n\n for (var i = 0; i < arcgis.features.length; i++) {\n geojson.features.push(arcgisToGeoJSON(arcgis.features[i], idAttribute));\n }\n }\n\n if (typeof arcgis.x === 'number' && typeof arcgis.y === 'number') {\n geojson.type = 'Point';\n geojson.coordinates = [arcgis.x, arcgis.y];\n\n if (typeof arcgis.z === 'number') {\n geojson.coordinates.push(arcgis.z);\n }\n }\n\n if (arcgis.points) {\n geojson.type = 'MultiPoint';\n geojson.coordinates = arcgis.points.slice(0);\n }\n\n if (arcgis.paths) {\n if (arcgis.paths.length === 1) {\n geojson.type = 'LineString';\n geojson.coordinates = arcgis.paths[0].slice(0);\n } else {\n geojson.type = 'MultiLineString';\n geojson.coordinates = arcgis.paths.slice(0);\n }\n }\n\n if (arcgis.rings) {\n geojson = convertRingsToGeoJSON(arcgis.rings.slice(0));\n }\n\n if (typeof arcgis.xmin === 'number' && typeof arcgis.ymin === 'number' && typeof arcgis.xmax === 'number' && typeof arcgis.ymax === 'number') {\n geojson.type = 'Polygon';\n geojson.coordinates = [[[arcgis.xmax, arcgis.ymax], [arcgis.xmin, arcgis.ymax], [arcgis.xmin, arcgis.ymin], [arcgis.xmax, arcgis.ymin], [arcgis.xmax, arcgis.ymax]]];\n }\n\n if (arcgis.geometry || arcgis.attributes) {\n geojson.type = 'Feature';\n geojson.geometry = arcgis.geometry ? arcgisToGeoJSON(arcgis.geometry) : null;\n geojson.properties = arcgis.attributes ? shallowClone(arcgis.attributes) : null;\n\n if (arcgis.attributes) {\n try {\n geojson.id = getId(arcgis.attributes, idAttribute);\n } catch (err) {// don't set an id\n }\n }\n } // if no valid geometry was encountered\n\n\n if (JSON.stringify(geojson.geometry) === JSON.stringify({})) {\n geojson.geometry = null;\n }\n\n if (arcgis.spatialReference && arcgis.spatialReference.wkid && arcgis.spatialReference.wkid !== 4326) {\n console.warn('Object converted in non-standard crs - ' + JSON.stringify(arcgis.spatialReference));\n }\n\n return geojson;\n};\n\n/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n// outer rings are clockwise, holes are counterclockwise\n// used for converting GeoJSON Polygons to ArcGIS Polygons\n\nvar orientRings = function orientRings(poly) {\n var output = [];\n var polygon = poly.slice(0);\n var outerRing = closeRing(polygon.shift().slice(0));\n\n if (outerRing.length >= 4) {\n if (!ringIsClockwise(outerRing)) {\n outerRing.reverse();\n }\n\n output.push(outerRing);\n\n for (var i = 0; i < polygon.length; i++) {\n var hole = closeRing(polygon[i].slice(0));\n\n if (hole.length >= 4) {\n if (ringIsClockwise(hole)) {\n hole.reverse();\n }\n\n output.push(hole);\n }\n }\n }\n\n return output;\n}; // This function flattens holes in multipolygons to one array of polygons\n// used for converting GeoJSON Polygons to ArcGIS Polygons\n\n\nvar flattenMultiPolygonRings = function flattenMultiPolygonRings(rings) {\n var output = [];\n\n for (var i = 0; i < rings.length; i++) {\n var polygon = orientRings(rings[i]);\n\n for (var x = polygon.length - 1; x >= 0; x--) {\n var ring = polygon[x].slice(0);\n output.push(ring);\n }\n }\n\n return output;\n};\n\nvar geojsonToArcGIS = function geojsonToArcGIS(geojson, idAttribute) {\n idAttribute = idAttribute || 'OBJECTID';\n var spatialReference = {\n wkid: 4326\n };\n var result = {};\n var i;\n\n switch (geojson.type) {\n case 'Point':\n result.x = geojson.coordinates[0];\n result.y = geojson.coordinates[1];\n\n if (geojson.coordinates[2]) {\n result.z = geojson.coordinates[2];\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'MultiPoint':\n result.points = geojson.coordinates.slice(0);\n\n if (geojson.coordinates[0][2]) {\n result.hasZ = true;\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'LineString':\n result.paths = [geojson.coordinates.slice(0)];\n\n if (geojson.coordinates[0][2]) {\n result.hasZ = true;\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'MultiLineString':\n result.paths = geojson.coordinates.slice(0);\n\n if (geojson.coordinates[0][0][2]) {\n result.hasZ = true;\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'Polygon':\n result.rings = orientRings(geojson.coordinates.slice(0));\n\n if (geojson.coordinates[0][0][2]) {\n result.hasZ = true;\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'MultiPolygon':\n result.rings = flattenMultiPolygonRings(geojson.coordinates.slice(0));\n\n if (geojson.coordinates[0][0][0][2]) {\n result.hasZ = true;\n }\n\n result.spatialReference = spatialReference;\n break;\n\n case 'Feature':\n if (geojson.geometry) {\n result.geometry = geojsonToArcGIS(geojson.geometry, idAttribute);\n }\n\n result.attributes = geojson.properties ? shallowClone(geojson.properties) : {};\n\n if (geojson.id) {\n result.attributes[idAttribute] = geojson.id;\n }\n\n break;\n\n case 'FeatureCollection':\n result = [];\n\n for (i = 0; i < geojson.features.length; i++) {\n result.push(geojsonToArcGIS(geojson.features[i], idAttribute));\n }\n\n break;\n\n case 'GeometryCollection':\n result = [];\n\n for (i = 0; i < geojson.geometries.length; i++) {\n result.push(geojsonToArcGIS(geojson.geometries[i], idAttribute));\n }\n\n break;\n }\n\n return result;\n};\n\n/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.\n * Apache-2.0 */\n\nexport { arcgisToGeoJSON, geojsonToArcGIS };\n","import { latLng, latLngBounds, LatLng, LatLngBounds, Util, DomUtil, GeoJSON } from 'leaflet';\r\nimport { request, warn } from './Request';\r\nimport { options } from './Options';\r\nimport { Support } from './Support';\r\n\r\nimport {\r\n geojsonToArcGIS as g2a,\r\n arcgisToGeoJSON as a2g\r\n} from '@terraformer/arcgis';\r\n\r\nvar BASE_LEAFLET_ATTRIBUTION_STRING = 'Leaflet';\r\nvar POWERED_BY_ESRI_ATTRIBUTION_STRING = 'Powered by Esri';\r\n\r\nexport function geojsonToArcGIS (geojson, idAttr) {\r\n return g2a(geojson, idAttr);\r\n}\r\n\r\nexport function arcgisToGeoJSON (arcgis, idAttr) {\r\n return a2g(arcgis, idAttr);\r\n}\r\n\r\n// convert an extent (ArcGIS) to LatLngBounds (Leaflet)\r\nexport function extentToBounds (extent) {\r\n // \"NaN\" coordinates from ArcGIS Server indicate a null geometry\r\n if (extent.xmin !== 'NaN' && extent.ymin !== 'NaN' && extent.xmax !== 'NaN' && extent.ymax !== 'NaN') {\r\n var sw = latLng(extent.ymin, extent.xmin);\r\n var ne = latLng(extent.ymax, extent.xmax);\r\n return latLngBounds(sw, ne);\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\n// convert an LatLngBounds (Leaflet) to extent (ArcGIS)\r\nexport function boundsToExtent (bounds) {\r\n bounds = latLngBounds(bounds);\r\n return {\r\n xmin: bounds.getSouthWest().lng,\r\n ymin: bounds.getSouthWest().lat,\r\n xmax: bounds.getNorthEast().lng,\r\n ymax: bounds.getNorthEast().lat,\r\n spatialReference: {\r\n wkid: 4326\r\n }\r\n };\r\n}\r\n\r\nvar knownFieldNames = /^(OBJECTID|FID|OID|ID)$/i;\r\n\r\n// Attempts to find the ID Field from response\r\nexport function _findIdAttributeFromResponse (response) {\r\n var result;\r\n\r\n if (response.objectIdFieldName) {\r\n // Find Id Field directly\r\n result = response.objectIdFieldName;\r\n } else if (response.fields) {\r\n // Find ID Field based on field type\r\n for (var j = 0; j <= response.fields.length - 1; j++) {\r\n if (response.fields[j].type === 'esriFieldTypeOID') {\r\n result = response.fields[j].name;\r\n break;\r\n }\r\n }\r\n if (!result) {\r\n // If no field was marked as being the esriFieldTypeOID try well known field names\r\n for (j = 0; j <= response.fields.length - 1; j++) {\r\n if (response.fields[j].name.match(knownFieldNames)) {\r\n result = response.fields[j].name;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return result;\r\n}\r\n\r\n// This is the 'last' resort, find the Id field from the specified feature\r\nexport function _findIdAttributeFromFeature (feature) {\r\n for (var key in feature.attributes) {\r\n if (key.match(knownFieldNames)) {\r\n return key;\r\n }\r\n }\r\n}\r\n\r\nexport function responseToFeatureCollection (response, idAttribute) {\r\n var objectIdField;\r\n var features = response.features || response.results;\r\n var count = features && features.length;\r\n\r\n if (idAttribute) {\r\n objectIdField = idAttribute;\r\n } else {\r\n objectIdField = _findIdAttributeFromResponse(response);\r\n }\r\n\r\n var featureCollection = {\r\n type: 'FeatureCollection',\r\n features: []\r\n };\r\n\r\n if (count) {\r\n for (var i = features.length - 1; i >= 0; i--) {\r\n var feature = arcgisToGeoJSON(features[i], objectIdField || _findIdAttributeFromFeature(features[i]));\r\n featureCollection.features.push(feature);\r\n }\r\n }\r\n\r\n return featureCollection;\r\n}\r\n\r\n// trim url whitespace and add a trailing slash if needed\r\nexport function cleanUrl (url) {\r\n // trim leading and trailing spaces, but not spaces inside the url\r\n url = Util.trim(url);\r\n\r\n // add a trailing slash to the url if the user omitted it\r\n if (url[url.length - 1] !== '/') {\r\n url += '/';\r\n }\r\n\r\n return url;\r\n}\r\n\r\n/* Extract url params if any and store them in requestParams attribute.\r\n Return the options params updated */\r\nexport function getUrlParams (options) {\r\n if (options.url.indexOf('?') !== -1) {\r\n options.requestParams = options.requestParams || {};\r\n var queryString = options.url.substring(options.url.indexOf('?') + 1);\r\n options.url = options.url.split('?')[0];\r\n options.requestParams = JSON.parse('{\"' + decodeURI(queryString).replace(/\"/g, '\\\\\"').replace(/&/g, '\",\"').replace(/=/g, '\":\"') + '\"}');\r\n }\r\n options.url = cleanUrl(options.url.split('?')[0]);\r\n return options;\r\n}\r\n\r\nexport function isArcgisOnline (url) {\r\n /* hosted feature services support geojson as an output format\r\n utility.arcgis.com services are proxied from a variety of ArcGIS Server vintages, and may not */\r\n return (/^(?!.*utility\\.arcgis\\.com).*\\.arcgis\\.com.*FeatureServer/i).test(url);\r\n}\r\n\r\nexport function geojsonTypeToArcGIS (geoJsonType) {\r\n var arcgisGeometryType;\r\n switch (geoJsonType) {\r\n case 'Point':\r\n arcgisGeometryType = 'esriGeometryPoint';\r\n break;\r\n case 'MultiPoint':\r\n arcgisGeometryType = 'esriGeometryMultipoint';\r\n break;\r\n case 'LineString':\r\n arcgisGeometryType = 'esriGeometryPolyline';\r\n break;\r\n case 'MultiLineString':\r\n arcgisGeometryType = 'esriGeometryPolyline';\r\n break;\r\n case 'Polygon':\r\n arcgisGeometryType = 'esriGeometryPolygon';\r\n break;\r\n case 'MultiPolygon':\r\n arcgisGeometryType = 'esriGeometryPolygon';\r\n break;\r\n }\r\n\r\n return arcgisGeometryType;\r\n}\r\n\r\nexport function calcAttributionWidth (map) {\r\n // either crop at 55px or user defined buffer\r\n return (map.getSize().x - options.attributionWidthOffset) + 'px';\r\n}\r\n\r\nexport function setEsriAttribution (map) {\r\n if (!map.attributionControl) {\r\n return;\r\n }\r\n\r\n if (!map.attributionControl._esriAttributionLayerCount) {\r\n map.attributionControl._esriAttributionLayerCount = 0;\r\n }\r\n\r\n if (map.attributionControl._esriAttributionLayerCount === 0) {\r\n // Dynamically creating the CSS rules, only run this once per page load:\r\n if (!map.attributionControl._esriAttributionAddedOnce) {\r\n var hoverAttributionStyle = document.createElement('style');\r\n hoverAttributionStyle.type = 'text/css';\r\n hoverAttributionStyle.innerHTML = '.esri-truncated-attribution:hover {' +\r\n 'white-space: normal;' +\r\n '}';\r\n document.getElementsByTagName('head')[0].appendChild(hoverAttributionStyle);\r\n\r\n // define a new css class in JS to trim attribution into a single line\r\n var attributionStyle = document.createElement('style');\r\n attributionStyle.type = 'text/css';\r\n attributionStyle.innerHTML = '.esri-truncated-attribution {' +\r\n 'vertical-align: -3px;' +\r\n 'white-space: nowrap;' +\r\n 'overflow: hidden;' +\r\n 'text-overflow: ellipsis;' +\r\n 'display: inline-block;' +\r\n 'transition: 0s white-space;' +\r\n 'transition-delay: 1s;' +\r\n 'max-width: ' + calcAttributionWidth(map) + ';' +\r\n '}';\r\n document.getElementsByTagName('head')[0].appendChild(attributionStyle);\r\n\r\n // update the width used to truncate when the map itself is resized\r\n map.on('resize', function (e) {\r\n if (map.attributionControl) {\r\n map.attributionControl._container.style.maxWidth = calcAttributionWidth(e.target);\r\n }\r\n });\r\n\r\n map.attributionControl._esriAttributionAddedOnce = true;\r\n }\r\n\r\n map.attributionControl.setPrefix(BASE_LEAFLET_ATTRIBUTION_STRING + ' | ' + POWERED_BY_ESRI_ATTRIBUTION_STRING);\r\n DomUtil.addClass(map.attributionControl._container, 'esri-truncated-attribution:hover');\r\n DomUtil.addClass(map.attributionControl._container, 'esri-truncated-attribution');\r\n }\r\n\r\n // Track the number of esri-leaflet layers that are on the map so we can know when we can remove the attribution (below in removeEsriAttribution)\r\n map.attributionControl._esriAttributionLayerCount = map.attributionControl._esriAttributionLayerCount + 1;\r\n}\r\n\r\nexport function removeEsriAttribution (map) {\r\n if (!map.attributionControl) {\r\n return;\r\n }\r\n\r\n // Only remove the attribution if we're about to remove the LAST esri-leaflet layer (_esriAttributionLayerCount)\r\n if (map.attributionControl._esriAttributionLayerCount && map.attributionControl._esriAttributionLayerCount === 1) {\r\n map.attributionControl.setPrefix(BASE_LEAFLET_ATTRIBUTION_STRING);\r\n DomUtil.removeClass(map.attributionControl._container, 'esri-truncated-attribution:hover');\r\n DomUtil.removeClass(map.attributionControl._container, 'esri-truncated-attribution');\r\n }\r\n map.attributionControl._esriAttributionLayerCount = map.attributionControl._esriAttributionLayerCount - 1;\r\n}\r\n\r\nexport function _setGeometry (geometry) {\r\n var params = {\r\n geometry: null,\r\n geometryType: null\r\n };\r\n\r\n // convert bounds to extent and finish\r\n if (geometry instanceof LatLngBounds) {\r\n // set geometry + geometryType\r\n params.geometry = boundsToExtent(geometry);\r\n params.geometryType = 'esriGeometryEnvelope';\r\n return params;\r\n }\r\n\r\n // convert L.Marker > L.LatLng\r\n if (geometry.getLatLng) {\r\n geometry = geometry.getLatLng();\r\n }\r\n\r\n // convert L.LatLng to a geojson point and continue;\r\n if (geometry instanceof LatLng) {\r\n geometry = {\r\n type: 'Point',\r\n coordinates: [geometry.lng, geometry.lat]\r\n };\r\n }\r\n\r\n // handle L.GeoJSON, pull out the first geometry\r\n if (geometry instanceof GeoJSON) {\r\n // reassign geometry to the GeoJSON value (we are assuming that only one feature is present)\r\n geometry = geometry.getLayers()[0].feature.geometry;\r\n params.geometry = geojsonToArcGIS(geometry);\r\n params.geometryType = geojsonTypeToArcGIS(geometry.type);\r\n }\r\n\r\n // Handle L.Polyline and L.Polygon\r\n if (geometry.toGeoJSON) {\r\n geometry = geometry.toGeoJSON();\r\n }\r\n\r\n // handle GeoJSON feature by pulling out the geometry\r\n if (geometry.type === 'Feature') {\r\n // get the geometry of the geojson feature\r\n geometry = geometry.geometry;\r\n }\r\n\r\n // confirm that our GeoJSON is a point, line or polygon\r\n if (geometry.type === 'Point' || geometry.type === 'LineString' || geometry.type === 'Polygon' || geometry.type === 'MultiPolygon') {\r\n params.geometry = geojsonToArcGIS(geometry);\r\n params.geometryType = geojsonTypeToArcGIS(geometry.type);\r\n return params;\r\n }\r\n\r\n // warn the user if we havn't found an appropriate object\r\n warn('invalid geometry passed to spatial query. Should be L.LatLng, L.LatLngBounds, L.Marker or a GeoJSON Point, Line, Polygon or MultiPolygon object');\r\n}\r\n\r\nexport function _getAttributionData (url, map) {\r\n if (Support.cors) {\r\n request(url, {}, Util.bind(function (error, attributions) {\r\n if (error) { return; }\r\n map._esriAttributions = [];\r\n for (var c = 0; c < attributions.contributors.length; c++) {\r\n var contributor = attributions.contributors[c];\r\n\r\n for (var i = 0; i < contributor.coverageAreas.length; i++) {\r\n var coverageArea = contributor.coverageAreas[i];\r\n var southWest = latLng(coverageArea.bbox[0], coverageArea.bbox[1]);\r\n var northEast = latLng(coverageArea.bbox[2], coverageArea.bbox[3]);\r\n map._esriAttributions.push({\r\n attribution: contributor.attribution,\r\n score: coverageArea.score,\r\n bounds: latLngBounds(southWest, northEast),\r\n minZoom: coverageArea.zoomMin,\r\n maxZoom: coverageArea.zoomMax\r\n });\r\n }\r\n }\r\n\r\n map._esriAttributions.sort(function (a, b) {\r\n return b.score - a.score;\r\n });\r\n\r\n // pass the same argument as the map's 'moveend' event\r\n var obj = { target: map };\r\n _updateMapAttribution(obj);\r\n }, this));\r\n }\r\n}\r\n\r\nexport function _updateMapAttribution (evt) {\r\n var map = evt.target;\r\n var oldAttributions = map._esriAttributions;\r\n\r\n if (!map || !map.attributionControl) return;\r\n\r\n var attributionElement = map.attributionControl._container.querySelector('.esri-dynamic-attribution');\r\n\r\n if (attributionElement && oldAttributions) {\r\n var newAttributions = '';\r\n var bounds = map.getBounds();\r\n var wrappedBounds = latLngBounds(\r\n bounds.getSouthWest().wrap(),\r\n bounds.getNorthEast().wrap()\r\n );\r\n var zoom = map.getZoom();\r\n\r\n for (var i = 0; i < oldAttributions.length; i++) {\r\n var attribution = oldAttributions[i];\r\n var text = attribution.attribution;\r\n\r\n if (!newAttributions.match(text) && attribution.bounds.intersects(wrappedBounds) && zoom >= attribution.minZoom && zoom <= attribution.maxZoom) {\r\n newAttributions += (', ' + text);\r\n }\r\n }\r\n\r\n newAttributions = newAttributions.substr(2);\r\n attributionElement.innerHTML = newAttributions;\r\n attributionElement.style.maxWidth = calcAttributionWidth(map);\r\n\r\n map.fire('attributionupdated', {\r\n attribution: newAttributions\r\n });\r\n }\r\n}\r\n\r\n// for backwards compatibility\r\nexport { warn };\r\n\r\nexport var EsriUtil = {\r\n warn: warn,\r\n cleanUrl: cleanUrl,\r\n getUrlParams: getUrlParams,\r\n isArcgisOnline: isArcgisOnline,\r\n geojsonTypeToArcGIS: geojsonTypeToArcGIS,\r\n responseToFeatureCollection: responseToFeatureCollection,\r\n geojsonToArcGIS: geojsonToArcGIS,\r\n arcgisToGeoJSON: arcgisToGeoJSON,\r\n boundsToExtent: boundsToExtent,\r\n extentToBounds: extentToBounds,\r\n calcAttributionWidth: calcAttributionWidth,\r\n setEsriAttribution: setEsriAttribution,\r\n _setGeometry: _setGeometry,\r\n _getAttributionData: _getAttributionData,\r\n _updateMapAttribution: _updateMapAttribution,\r\n _findIdAttributeFromFeature: _findIdAttributeFromFeature,\r\n _findIdAttributeFromResponse: _findIdAttributeFromResponse\r\n};\r\n\r\nexport default EsriUtil;\r\n","import { Class, Util } from 'leaflet';\r\nimport { cors } from '../Support';\r\nimport { cleanUrl, getUrlParams } from '../Util';\r\nimport Request from '../Request';\r\n\r\nexport var Task = Class.extend({\r\n\r\n options: {\r\n proxy: false,\r\n useCors: cors\r\n },\r\n\r\n // Generate a method for each methodName:paramName in the setters for this task.\r\n generateSetter: function (param, context) {\r\n return Util.bind(function (value) {\r\n this.params[param] = value;\r\n return this;\r\n }, context);\r\n },\r\n\r\n initialize: function (endpoint) {\r\n // endpoint can be either a url (and options) for an ArcGIS Rest Service or an instance of EsriLeaflet.Service\r\n if (endpoint.request && endpoint.options) {\r\n this._service = endpoint;\r\n Util.setOptions(this, endpoint.options);\r\n } else {\r\n Util.setOptions(this, endpoint);\r\n this.options.url = cleanUrl(endpoint.url);\r\n }\r\n\r\n // clone default params into this object\r\n this.params = Util.extend({}, this.params || {});\r\n\r\n // generate setter methods based on the setters object implimented a child class\r\n if (this.setters) {\r\n for (var setter in this.setters) {\r\n var param = this.setters[setter];\r\n this[setter] = this.generateSetter(param, this);\r\n }\r\n }\r\n },\r\n\r\n token: function (token) {\r\n if (this._service) {\r\n this._service.authenticate(token);\r\n } else {\r\n this.params.token = token;\r\n }\r\n return this;\r\n },\r\n\r\n apikey: function (apikey) {\r\n return this.token(apikey);\r\n },\r\n\r\n // ArcGIS Server Find/Identify 10.5+\r\n format: function (boolean) {\r\n // use double negative to expose a more intuitive positive method name\r\n this.params.returnUnformattedValues = !boolean;\r\n return this;\r\n },\r\n\r\n request: function (callback, context) {\r\n if (this.options.requestParams) {\r\n Util.extend(this.params, this.options.requestParams);\r\n }\r\n if (this._service) {\r\n return this._service.request(this.path, this.params, callback, context);\r\n }\r\n\r\n return this._request('request', this.path, this.params, callback, context);\r\n },\r\n\r\n _request: function (method, path, params, callback, context) {\r\n var url = (this.options.proxy) ? this.options.proxy + '?' + this.options.url + path : this.options.url + path;\r\n\r\n if ((method === 'get' || method === 'request') && !this.options.useCors) {\r\n return Request.get.JSONP(url, params, callback, context);\r\n }\r\n\r\n return Request[method](url, params, callback, context);\r\n }\r\n});\r\n\r\nexport function task (options) {\r\n options = getUrlParams(options);\r\n return new Task(options);\r\n}\r\n\r\nexport default task;\r\n","import { point, latLng } from 'leaflet';\r\nimport { Task } from './Task';\r\nimport {\r\n warn,\r\n responseToFeatureCollection,\r\n isArcgisOnline,\r\n extentToBounds,\r\n _setGeometry\r\n} from '../Util';\r\n\r\nexport var Query = Task.extend({\r\n setters: {\r\n offset: 'resultOffset',\r\n limit: 'resultRecordCount',\r\n fields: 'outFields',\r\n precision: 'geometryPrecision',\r\n featureIds: 'objectIds',\r\n returnGeometry: 'returnGeometry',\r\n returnM: 'returnM',\r\n transform: 'datumTransformation',\r\n token: 'token'\r\n },\r\n\r\n path: 'query',\r\n\r\n params: {\r\n returnGeometry: true,\r\n where: '1=1',\r\n outSR: 4326,\r\n outFields: '*'\r\n },\r\n\r\n // Returns a feature if its shape is wholly contained within the search geometry. Valid for all shape type combinations.\r\n within: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelContains'; // to the REST api this reads geometry **contains** layer\r\n return this;\r\n },\r\n\r\n // Returns a feature if any spatial relationship is found. Applies to all shape type combinations.\r\n intersects: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelIntersects';\r\n return this;\r\n },\r\n\r\n // Returns a feature if its shape wholly contains the search geometry. Valid for all shape type combinations.\r\n contains: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelWithin'; // to the REST api this reads geometry **within** layer\r\n return this;\r\n },\r\n\r\n // Returns a feature if the intersection of the interiors of the two shapes is not empty and has a lower dimension than the maximum dimension of the two shapes. Two lines that share an endpoint in common do not cross. Valid for Line/Line, Line/Area, Multi-point/Area, and Multi-point/Line shape type combinations.\r\n crosses: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelCrosses';\r\n return this;\r\n },\r\n\r\n // Returns a feature if the two shapes share a common boundary. However, the intersection of the interiors of the two shapes must be empty. In the Point/Line case, the point may touch an endpoint only of the line. Applies to all combinations except Point/Point.\r\n touches: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelTouches';\r\n return this;\r\n },\r\n\r\n // Returns a feature if the intersection of the two shapes results in an object of the same dimension, but different from both of the shapes. Applies to Area/Area, Line/Line, and Multi-point/Multi-point shape type combinations.\r\n overlaps: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelOverlaps';\r\n return this;\r\n },\r\n\r\n // Returns a feature if the envelope of the two shapes intersects.\r\n bboxIntersects: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelEnvelopeIntersects';\r\n return this;\r\n },\r\n\r\n // if someone can help decipher the ArcObjects explanation and translate to plain speak, we should mention this method in the doc\r\n indexIntersects: function (geometry) {\r\n this._setGeometryParams(geometry);\r\n this.params.spatialRel = 'esriSpatialRelIndexIntersects'; // Returns a feature if the envelope of the query geometry intersects the index entry for the target geometry\r\n return this;\r\n },\r\n\r\n // only valid for Feature Services running on ArcGIS Server 10.3+ or ArcGIS Online\r\n nearby: function (latlng, radius) {\r\n latlng = latLng(latlng);\r\n this.params.geometry = [latlng.lng, latlng.lat];\r\n this.params.geometryType = 'esriGeometryPoint';\r\n this.params.spatialRel = 'esriSpatialRelIntersects';\r\n this.params.units = 'esriSRUnit_Meter';\r\n this.params.distance = radius;\r\n this.params.inSR = 4326;\r\n return this;\r\n },\r\n\r\n where: function (string) {\r\n // instead of converting double-quotes to single quotes, pass as is, and provide a more informative message if a 400 is encountered\r\n this.params.where = string;\r\n return this;\r\n },\r\n\r\n between: function (start, end) {\r\n this.params.time = [start.valueOf(), end.valueOf()];\r\n return this;\r\n },\r\n\r\n simplify: function (map, factor) {\r\n var mapWidth = Math.abs(map.getBounds().getWest() - map.getBounds().getEast());\r\n this.params.maxAllowableOffset = (mapWidth / map.getSize().y) * factor;\r\n return this;\r\n },\r\n\r\n orderBy: function (fieldName, order) {\r\n order = order || 'ASC';\r\n this.params.orderByFields = (this.params.orderByFields) ? this.params.orderByFields + ',' : '';\r\n this.params.orderByFields += ([fieldName, order]).join(' ');\r\n return this;\r\n },\r\n\r\n run: function (callback, context) {\r\n this._cleanParams();\r\n\r\n // services hosted on ArcGIS Online and ArcGIS Server 10.3.1+ support requesting geojson directly\r\n if (this.options.isModern || (isArcgisOnline(this.options.url) && this.options.isModern === undefined)) {\r\n this.params.f = 'geojson';\r\n\r\n return this.request(function (error, response) {\r\n this._trapSQLerrors(error);\r\n callback.call(context, error, response, response);\r\n }, this);\r\n\r\n // otherwise convert it in the callback then pass it on\r\n } else {\r\n return this.request(function (error, response) {\r\n this._trapSQLerrors(error);\r\n callback.call(context, error, (response && responseToFeatureCollection(response)), response);\r\n }, this);\r\n }\r\n },\r\n\r\n count: function (callback, context) {\r\n this._cleanParams();\r\n this.params.returnCountOnly = true;\r\n return this.request(function (error, response) {\r\n callback.call(this, error, (response && response.count), response);\r\n }, context);\r\n },\r\n\r\n ids: function (callback, context) {\r\n this._cleanParams();\r\n this.params.returnIdsOnly = true;\r\n return this.request(function (error, response) {\r\n callback.call(this, error, (response && response.objectIds), response);\r\n }, context);\r\n },\r\n\r\n // only valid for Feature Services running on ArcGIS Server 10.3+ or ArcGIS Online\r\n bounds: function (callback, context) {\r\n this._cleanParams();\r\n this.params.returnExtentOnly = true;\r\n return this.request(function (error, response) {\r\n if (response && response.extent && extentToBounds(response.extent)) {\r\n callback.call(context, error, extentToBounds(response.extent), response);\r\n } else {\r\n error = {\r\n message: 'Invalid Bounds'\r\n };\r\n callback.call(context, error, null, response);\r\n }\r\n }, context);\r\n },\r\n\r\n distinct: function () {\r\n // geometry must be omitted for queries requesting distinct values\r\n this.params.returnGeometry = false;\r\n this.params.returnDistinctValues = true;\r\n return this;\r\n },\r\n\r\n // only valid for image services\r\n pixelSize: function (rawPoint) {\r\n var castPoint = point(rawPoint);\r\n this.params.pixelSize = [castPoint.x, castPoint.y];\r\n return this;\r\n },\r\n\r\n // only valid for map services\r\n layer: function (layer) {\r\n this.path = layer + '/query';\r\n return this;\r\n },\r\n\r\n _trapSQLerrors: function (error) {\r\n if (error) {\r\n if (error.code === '400') {\r\n warn('one common syntax error in query requests is encasing string values in double quotes instead of single quotes');\r\n }\r\n }\r\n },\r\n\r\n _cleanParams: function () {\r\n delete this.params.returnIdsOnly;\r\n delete this.params.returnExtentOnly;\r\n delete this.params.returnCountOnly;\r\n },\r\n\r\n _setGeometryParams: function (geometry) {\r\n this.params.inSR = 4326;\r\n var converted = _setGeometry(geometry);\r\n this.params.geometry = converted.geometry;\r\n this.params.geometryType = converted.geometryType;\r\n }\r\n\r\n});\r\n\r\nexport function query (options) {\r\n return new Query(options);\r\n}\r\n\r\nexport default query;\r\n","import { Task } from './Task';\r\nimport { responseToFeatureCollection } from '../Util';\r\n\r\nexport var Find = Task.extend({\r\n setters: {\r\n // method name > param name\r\n contains: 'contains',\r\n text: 'searchText',\r\n fields: 'searchFields', // denote an array or single string\r\n spatialReference: 'sr',\r\n sr: 'sr',\r\n layers: 'layers',\r\n returnGeometry: 'returnGeometry',\r\n maxAllowableOffset: 'maxAllowableOffset',\r\n precision: 'geometryPrecision',\r\n dynamicLayers: 'dynamicLayers',\r\n returnZ: 'returnZ',\r\n returnM: 'returnM',\r\n gdbVersion: 'gdbVersion',\r\n // skipped implementing this (for now) because the REST service implementation isnt consistent between operations\r\n // 'transform': 'datumTransformations',\r\n token: 'token'\r\n },\r\n\r\n path: 'find',\r\n\r\n params: {\r\n sr: 4326,\r\n contains: true,\r\n returnGeometry: true,\r\n returnZ: true,\r\n returnM: false\r\n },\r\n\r\n layerDefs: function (id, where) {\r\n this.params.layerDefs = (this.params.layerDefs) ? this.params.layerDefs + ';' : '';\r\n this.params.layerDefs += ([id, where]).join(':');\r\n return this;\r\n },\r\n\r\n simplify: function (map, factor) {\r\n var mapWidth = Math.abs(map.getBounds().getWest() - map.getBounds().getEast());\r\n this.params.maxAllowableOffset = (mapWidth / map.getSize().y) * factor;\r\n return this;\r\n },\r\n\r\n run: function (callback, context) {\r\n return this.request(function (error, response) {\r\n callback.call(context, error, (response && responseToFeatureCollection(response)), response);\r\n }, context);\r\n }\r\n});\r\n\r\nexport function find (options) {\r\n return new Find(options);\r\n}\r\n\r\nexport default find;\r\n","import { Task } from './Task';\r\n\r\nexport var Identify = Task.extend({\r\n path: 'identify',\r\n\r\n between: function (start, end) {\r\n this.params.time = [start.valueOf(), end.valueOf()];\r\n return this;\r\n }\r\n});\r\n\r\nexport function identify (options) {\r\n return new Identify(options);\r\n}\r\n\r\nexport default identify;\r\n","import { latLng } from 'leaflet';\r\nimport { Identify } from './Identify';\r\nimport { responseToFeatureCollection,\r\n boundsToExtent,\r\n _setGeometry\r\n} from '../Util';\r\n\r\nexport var IdentifyFeatures = Identify.extend({\r\n setters: {\r\n layers: 'layers',\r\n precision: 'geometryPrecision',\r\n tolerance: 'tolerance',\r\n // skipped implementing this (for now) because the REST service implementation isnt consistent between operations.\r\n // 'transform': 'datumTransformations'\r\n returnGeometry: 'returnGeometry'\r\n },\r\n\r\n params: {\r\n sr: 4326,\r\n layers: 'all',\r\n tolerance: 3,\r\n returnGeometry: true\r\n },\r\n\r\n on: function (map) {\r\n var extent = boundsToExtent(map.getBounds());\r\n var size = map.getSize();\r\n this.params.imageDisplay = [size.x, size.y, 96];\r\n this.params.mapExtent = [extent.xmin, extent.ymin, extent.xmax, extent.ymax];\r\n return this;\r\n },\r\n\r\n at: function (geometry) {\r\n // cast lat, long pairs in raw array form manually\r\n if (geometry.length === 2) {\r\n geometry = latLng(geometry);\r\n }\r\n this._setGeometryParams(geometry);\r\n return this;\r\n },\r\n\r\n layerDef: function (id, where) {\r\n this.params.layerDefs = (this.params.layerDefs) ? this.params.layerDefs + ';' : '';\r\n this.params.layerDefs += ([id, where]).join(':');\r\n return this;\r\n },\r\n\r\n simplify: function (map, factor) {\r\n var mapWidth = Math.abs(map.getBounds().getWest() - map.getBounds().getEast());\r\n this.params.maxAllowableOffset = (mapWidth / map.getSize().y) * factor;\r\n return this;\r\n },\r\n\r\n run: function (callback, context) {\r\n return this.request(function (error, response) {\r\n // immediately invoke with an error\r\n if (error) {\r\n callback.call(context, error, undefined, response);\r\n\r\n // ok no error lets just assume we have features...\r\n } else {\r\n var featureCollection = responseToFeatureCollection(response);\r\n response.results = response.results.reverse();\r\n for (var i = 0; i < featureCollection.features.length; i++) {\r\n var feature = featureCollection.features[i];\r\n feature.layerId = response.results[i].layerId;\r\n }\r\n callback.call(context, undefined, featureCollection, response);\r\n }\r\n });\r\n },\r\n\r\n _setGeometryParams: function (geometry) {\r\n var converted = _setGeometry(geometry);\r\n this.params.geometry = converted.geometry;\r\n this.params.geometryType = converted.geometryType;\r\n }\r\n});\r\n\r\nexport function identifyFeatures (options) {\r\n return new IdentifyFeatures(options);\r\n}\r\n\r\nexport default identifyFeatures;\r\n","import { latLng } from 'leaflet';\r\nimport { Identify } from './Identify';\r\nimport { responseToFeatureCollection } from '../Util';\r\n\r\nexport var IdentifyImage = Identify.extend({\r\n setters: {\r\n setMosaicRule: 'mosaicRule',\r\n setRenderingRule: 'renderingRule',\r\n setPixelSize: 'pixelSize',\r\n returnCatalogItems: 'returnCatalogItems',\r\n returnGeometry: 'returnGeometry'\r\n },\r\n\r\n params: {\r\n returnGeometry: false\r\n },\r\n\r\n at: function (latlng) {\r\n latlng = latLng(latlng);\r\n this.params.geometry = JSON.stringify({\r\n x: latlng.lng,\r\n y: latlng.lat,\r\n spatialReference: {\r\n wkid: 4326\r\n }\r\n });\r\n this.params.geometryType = 'esriGeometryPoint';\r\n return this;\r\n },\r\n\r\n getMosaicRule: function () {\r\n return this.params.mosaicRule;\r\n },\r\n\r\n getRenderingRule: function () {\r\n return this.params.renderingRule;\r\n },\r\n\r\n getPixelSize: function () {\r\n return this.params.pixelSize;\r\n },\r\n\r\n run: function (callback, context) {\r\n return this.request(function (error, response) {\r\n callback.call(context, error, (response && this._responseToGeoJSON(response)), response);\r\n }, this);\r\n },\r\n\r\n // get pixel data and return as geoJSON point\r\n // populate catalog items (if any)\r\n // merging in any catalogItemVisibilities as a propery of each feature\r\n _responseToGeoJSON: function (response) {\r\n var location = response.location;\r\n var catalogItems = response.catalogItems;\r\n var catalogItemVisibilities = response.catalogItemVisibilities;\r\n var geoJSON = {\r\n pixel: {\r\n type: 'Feature',\r\n geometry: {\r\n type: 'Point',\r\n coordinates: [location.x, location.y]\r\n },\r\n crs: {\r\n type: 'EPSG',\r\n properties: {\r\n code: location.spatialReference.wkid\r\n }\r\n },\r\n properties: {\r\n OBJECTID: response.objectId,\r\n name: response.name,\r\n value: response.value\r\n },\r\n id: response.objectId\r\n }\r\n };\r\n\r\n if (response.properties && response.properties.Values) {\r\n geoJSON.pixel.properties.values = response.properties.Values;\r\n }\r\n\r\n if (catalogItems && catalogItems.features) {\r\n geoJSON.catalogItems = responseToFeatureCollection(catalogItems);\r\n if (catalogItemVisibilities && catalogItemVisibilities.length === geoJSON.catalogItems.features.length) {\r\n for (var i = catalogItemVisibilities.length - 1; i >= 0; i--) {\r\n geoJSON.catalogItems.features[i].properties.catalogItemVisibility = catalogItemVisibilities[i];\r\n }\r\n }\r\n }\r\n return geoJSON;\r\n }\r\n\r\n});\r\n\r\nexport function identifyImage (params) {\r\n return new IdentifyImage(params);\r\n}\r\n\r\nexport default identifyImage;\r\n","import { Util, Evented } from 'leaflet';\r\nimport { cors } from '../Support';\r\nimport { cleanUrl, getUrlParams } from '../Util';\r\nimport Request from '../Request';\r\n\r\nexport var Service = Evented.extend({\r\n\r\n options: {\r\n proxy: false,\r\n useCors: cors,\r\n timeout: 0\r\n },\r\n\r\n initialize: function (options) {\r\n options = options || {};\r\n this._requestQueue = [];\r\n this._authenticating = false;\r\n Util.setOptions(this, options);\r\n this.options.url = cleanUrl(this.options.url);\r\n },\r\n\r\n get: function (path, params, callback, context) {\r\n return this._request('get', path, params, callback, context);\r\n },\r\n\r\n post: function (path, params, callback, context) {\r\n return this._request('post', path, params, callback, context);\r\n },\r\n\r\n request: function (path, params, callback, context) {\r\n return this._request('request', path, params, callback, context);\r\n },\r\n\r\n metadata: function (callback, context) {\r\n return this._request('get', '', {}, callback, context);\r\n },\r\n\r\n authenticate: function (token) {\r\n this._authenticating = false;\r\n this.options.token = token;\r\n this._runQueue();\r\n return this;\r\n },\r\n\r\n getTimeout: function () {\r\n return this.options.timeout;\r\n },\r\n\r\n setTimeout: function (timeout) {\r\n this.options.timeout = timeout;\r\n },\r\n\r\n _request: function (method, path, params, callback, context) {\r\n this.fire('requeststart', {\r\n url: this.options.url + path,\r\n params: params,\r\n method: method\r\n }, true);\r\n\r\n var wrappedCallback = this._createServiceCallback(method, path, params, callback, context);\r\n\r\n if (this.options.token) {\r\n params.token = this.options.token;\r\n }\r\n if (this.options.requestParams) {\r\n Util.extend(params, this.options.requestParams);\r\n }\r\n if (this._authenticating) {\r\n this._requestQueue.push([method, path, params, callback, context]);\r\n } else {\r\n var url = (this.options.proxy) ? this.options.proxy + '?' + this.options.url + path : this.options.url + path;\r\n\r\n if ((method === 'get' || method === 'request') && !this.options.useCors) {\r\n return Request.get.JSONP(url, params, wrappedCallback, context);\r\n } else {\r\n return Request[method](url, params, wrappedCallback, context);\r\n }\r\n }\r\n },\r\n\r\n _createServiceCallback: function (method, path, params, callback, context) {\r\n return Util.bind(function (error, response) {\r\n if (error && (error.code === 499 || error.code === 498)) {\r\n this._authenticating = true;\r\n\r\n this._requestQueue.push([method, path, params, callback, context]);\r\n\r\n // fire an event for users to handle and re-authenticate\r\n this.fire('authenticationrequired', {\r\n authenticate: Util.bind(this.authenticate, this)\r\n }, true);\r\n\r\n // if the user has access to a callback they can handle the auth error\r\n error.authenticate = Util.bind(this.authenticate, this);\r\n }\r\n\r\n callback.call(context, error, response);\r\n\r\n if (error) {\r\n this.fire('requesterror', {\r\n url: this.options.url + path,\r\n params: params,\r\n message: error.message,\r\n code: error.code,\r\n method: method\r\n }, true);\r\n } else {\r\n this.fire('requestsuccess', {\r\n url: this.options.url + path,\r\n params: params,\r\n response: response,\r\n method: method\r\n }, true);\r\n }\r\n\r\n this.fire('requestend', {\r\n url: this.options.url + path,\r\n params: params,\r\n method: method\r\n }, true);\r\n }, this);\r\n },\r\n\r\n _runQueue: function () {\r\n for (var i = this._requestQueue.length - 1; i >= 0; i--) {\r\n var request = this._requestQueue[i];\r\n var method = request.shift();\r\n this[method].apply(this, request);\r\n }\r\n this._requestQueue = [];\r\n }\r\n});\r\n\r\nexport function service (options) {\r\n options = getUrlParams(options);\r\n return new Service(options);\r\n}\r\n\r\nexport default service;\r\n","import { Service } from './Service';\r\nimport identifyFeatures from '../Tasks/IdentifyFeatures';\r\nimport query from '../Tasks/Query';\r\nimport find from '../Tasks/Find';\r\n\r\nexport var MapService = Service.extend({\r\n\r\n identify: function () {\r\n return identifyFeatures(this);\r\n },\r\n\r\n find: function () {\r\n return find(this);\r\n },\r\n\r\n query: function () {\r\n return query(this);\r\n }\r\n\r\n});\r\n\r\nexport function mapService (options) {\r\n return new MapService(options);\r\n}\r\n\r\nexport default mapService;\r\n","import { Service } from './Service';\r\nimport identifyImage from '../Tasks/IdentifyImage';\r\nimport query from '../Tasks/Query';\r\n\r\nexport var ImageService = Service.extend({\r\n\r\n query: function () {\r\n return query(this);\r\n },\r\n\r\n identify: function () {\r\n return identifyImage(this);\r\n }\r\n});\r\n\r\nexport function imageService (options) {\r\n return new ImageService(options);\r\n}\r\n\r\nexport default imageService;\r\n","import { Service } from './Service';\r\nimport query from '../Tasks/Query';\r\nimport { geojsonToArcGIS } from '../Util';\r\n\r\nexport var FeatureLayerService = Service.extend({\r\n\r\n options: {\r\n idAttribute: 'OBJECTID'\r\n },\r\n\r\n query: function () {\r\n return query(this);\r\n },\r\n\r\n addFeature: function (feature, callback, context) {\r\n this.addFeatures(feature, callback, context);\r\n },\r\n\r\n addFeatures: function (features, callback, context) {\r\n var featuresArray = features.features ? features.features : [features];\r\n for (var i = featuresArray.length - 1; i >= 0; i--) {\r\n delete featuresArray[i].id;\r\n }\r\n features = geojsonToArcGIS(features);\r\n features = featuresArray.length > 1 ? features : [features];\r\n return this.post('addFeatures', {\r\n features: features\r\n }, function (error, response) {\r\n // For compatibility reason with former addFeature function,\r\n // we return the object in the array and not the array itself\r\n var result = (response && response.addResults) ? response.addResults.length > 1 ? response.addResults : response.addResults[0] : undefined;\r\n if (callback) {\r\n callback.call(context, error || response.addResults[0].error, result);\r\n }\r\n }, context);\r\n },\r\n\r\n updateFeature: function (feature, callback, context) {\r\n this.updateFeatures(feature, callback, context);\r\n },\r\n\r\n updateFeatures: function (features, callback, context) {\r\n var featuresArray = features.features ? features.features : [features];\r\n features = geojsonToArcGIS(features, this.options.idAttribute);\r\n features = featuresArray.length > 1 ? features : [features];\r\n\r\n return this.post('updateFeatures', {\r\n features: features\r\n }, function (error, response) {\r\n // For compatibility reason with former updateFeature function,\r\n // we return the object in the array and not the array itself\r\n var result = (response && response.updateResults) ? response.updateResults.length > 1 ? response.updateResults : response.updateResults[0] : undefined;\r\n if (callback) {\r\n callback.call(context, error || response.updateResults[0].error, result);\r\n }\r\n }, context);\r\n },\r\n\r\n deleteFeature: function (id, callback, context) {\r\n this.deleteFeatures(id, callback, context);\r\n },\r\n\r\n deleteFeatures: function (ids, callback, context) {\r\n return this.post('deleteFeatures', {\r\n objectIds: ids\r\n }, function (error, response) {\r\n // For compatibility reason with former deleteFeature function,\r\n // we return the object in the array and not the array itself\r\n var result = (response && response.deleteResults) ? response.deleteResults.length > 1 ? response.deleteResults : response.deleteResults[0] : undefined;\r\n if (callback) {\r\n callback.call(context, error || response.deleteResults[0].error, result);\r\n }\r\n }, context);\r\n }\r\n});\r\n\r\nexport function featureLayerService (options) {\r\n return new FeatureLayerService(options);\r\n}\r\n\r\nexport default featureLayerService;\r\n","import { TileLayer, Util } from 'leaflet';\r\nimport { pointerEvents } from '../Support';\r\nimport {\r\n setEsriAttribution,\r\n removeEsriAttribution,\r\n _getAttributionData,\r\n _updateMapAttribution\r\n} from '../Util';\r\n\r\nvar tileProtocol = (window.location.protocol !== 'https:') ? 'http:' : 'https:';\r\n\r\nexport var BasemapLayer = TileLayer.extend({\r\n statics: {\r\n TILES: {\r\n Streets: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS, NOAA',\r\n attributionUrl: 'https://static.arcgis.com/attribution/World_Street_Map'\r\n }\r\n },\r\n Topographic: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS, NOAA',\r\n attributionUrl: 'https://static.arcgis.com/attribution/World_Topo_Map'\r\n }\r\n },\r\n Oceans: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS, NOAA',\r\n attributionUrl: 'https://static.arcgis.com/attribution/Ocean_Basemap'\r\n }\r\n },\r\n OceansLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n NationalGeographic: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n attribution: 'National Geographic, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.'\r\n }\r\n },\r\n DarkGray: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n attribution: 'HERE, DeLorme, MapmyIndia, © OpenStreetMap contributors'\r\n }\r\n },\r\n DarkGrayLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n\r\n }\r\n },\r\n Gray: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n attribution: 'HERE, DeLorme, MapmyIndia, © OpenStreetMap contributors'\r\n }\r\n },\r\n GrayLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 16,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n Imagery: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n subdomains: ['server', 'services'],\r\n attribution: 'DigitalGlobe, GeoEye, i-cubed, USDA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community',\r\n attributionUrl: 'https://static.arcgis.com/attribution/World_Imagery'\r\n }\r\n },\r\n ImageryLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n ImageryTransportation: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n ShadedRelief: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 13,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS'\r\n }\r\n },\r\n ShadedReliefLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places_Alternate/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 12,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n Terrain: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 13,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS, NOAA'\r\n }\r\n },\r\n TerrainLabels: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 13,\r\n subdomains: ['server', 'services'],\r\n pane: (pointerEvents) ? 'esri-labels' : 'tilePane',\r\n attribution: ''\r\n }\r\n },\r\n USATopo: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/ArcGIS/rest/services/USA_Topo_Maps/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 15,\r\n subdomains: ['server', 'services'],\r\n attribution: 'USGS, National Geographic Society, i-cubed'\r\n }\r\n },\r\n ImageryClarity: {\r\n urlTemplate: tileProtocol + '//clarity.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n attribution: 'Esri, DigitalGlobe, GeoEye, Earthstar Geographics, CNES/Airbus DS, USDA, USGS, AeroGRID, IGN, and the GIS User Community'\r\n }\r\n },\r\n Physical: {\r\n urlTemplate: tileProtocol + '//{s}.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 8,\r\n subdomains: ['server', 'services'],\r\n attribution: 'U.S. National Park Service'\r\n }\r\n },\r\n ImageryFirefly: {\r\n urlTemplate: tileProtocol + '//fly.maptiles.arcgis.com/arcgis/rest/services/World_Imagery_Firefly/MapServer/tile/{z}/{y}/{x}',\r\n options: {\r\n minZoom: 1,\r\n maxZoom: 19,\r\n attribution: 'Esri, DigitalGlobe, GeoEye, Earthstar Geographics, CNES/Airbus DS, USDA, USGS, AeroGRID, IGN, and the GIS User Community',\r\n attributionUrl: 'https://static.arcgis.com/attribution/World_Imagery'\r\n }\r\n }\r\n }\r\n },\r\n\r\n initialize: function (key, options) {\r\n var config;\r\n\r\n // set the config variable with the appropriate config object\r\n if (typeof key === 'object' && key.urlTemplate && key.options) {\r\n config = key;\r\n } else if (typeof key === 'string' && BasemapLayer.TILES[key]) {\r\n config = BasemapLayer.TILES[key];\r\n } else {\r\n throw new Error('L.esri.BasemapLayer: Invalid parameter. Use one of \"Streets\", \"Topographic\", \"Oceans\", \"OceansLabels\", \"NationalGeographic\", \"Physical\", \"Gray\", \"GrayLabels\", \"DarkGray\", \"DarkGrayLabels\", \"Imagery\", \"ImageryLabels\", \"ImageryTransportation\", \"ImageryClarity\", \"ImageryFirefly\", ShadedRelief\", \"ShadedReliefLabels\", \"Terrain\", \"TerrainLabels\" or \"USATopo\"');\r\n }\r\n\r\n // merge passed options into the config options\r\n var tileOptions = Util.extend(config.options, options);\r\n\r\n Util.setOptions(this, tileOptions);\r\n\r\n // Deprecation notice:\r\n if (!this.options.ignoreDeprecationWarning) {\r\n console.warn('WARNING: L.esri.BasemapLayer uses data services that are in mature support and are not being updated. Please use L.esri.Vector.vectorBasemapLayer instead. More info: https://esriurl.com/esri-leaflet-basemap');\r\n }\r\n\r\n if (this.options.token && config.urlTemplate.indexOf('token=') === -1) {\r\n config.urlTemplate += ('?token=' + this.options.token);\r\n }\r\n if (this.options.proxy) {\r\n config.urlTemplate = this.options.proxy + '?' + config.urlTemplate;\r\n }\r\n\r\n // call the initialize method on L.TileLayer to set everything up\r\n TileLayer.prototype.initialize.call(this, config.urlTemplate, tileOptions);\r\n },\r\n\r\n onAdd: function (map) {\r\n // include 'Powered by Esri' in map attribution\r\n setEsriAttribution(map);\r\n\r\n if (this.options.pane === 'esri-labels') {\r\n this._initPane();\r\n }\r\n // some basemaps can supply dynamic attribution\r\n if (this.options.attributionUrl) {\r\n _getAttributionData((this.options.proxy ? this.options.proxy + '?' : '') + this.options.attributionUrl, map);\r\n }\r\n\r\n map.on('moveend', _updateMapAttribution);\r\n\r\n TileLayer.prototype.onAdd.call(this, map);\r\n },\r\n\r\n onRemove: function (map) {\r\n removeEsriAttribution(map);\r\n\r\n map.off('moveend', _updateMapAttribution);\r\n\r\n TileLayer.prototype.onRemove.call(this, map);\r\n },\r\n\r\n _initPane: function () {\r\n if (!this._map.getPane(this.options.pane)) {\r\n var pane = this._map.createPane(this.options.pane);\r\n pane.style.pointerEvents = 'none';\r\n pane.style.zIndex = 500;\r\n }\r\n },\r\n\r\n getAttribution: function () {\r\n if (this.options.attribution) {\r\n var attribution = '' + this.options.attribution + '';\r\n }\r\n return attribution;\r\n }\r\n});\r\n\r\nexport function basemapLayer (key, options) {\r\n return new BasemapLayer(key, options);\r\n}\r\n\r\nexport default basemapLayer;\r\n","import { CRS, DomEvent, TileLayer, Util } from 'leaflet';\r\nimport { warn, getUrlParams, setEsriAttribution, removeEsriAttribution } from '../Util';\r\nimport mapService from '../Services/MapService';\r\n\r\nexport var TiledMapLayer = TileLayer.extend({\r\n options: {\r\n zoomOffsetAllowance: 0.1,\r\n errorTileUrl: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEABAMAAACuXLVVAAAAA1BMVEUzNDVszlHHAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAAAAAAAAAB6mUWpAAAADZJREFUeJztwQEBAAAAgiD/r25IQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7waBAAABw08RwAAAAABJRU5ErkJggg=='\r\n },\r\n\r\n statics: {\r\n MercatorZoomLevels: {\r\n 0: 156543.03392799999,\r\n 1: 78271.516963999893,\r\n 2: 39135.758482000099,\r\n 3: 19567.879240999901,\r\n 4: 9783.9396204999593,\r\n 5: 4891.9698102499797,\r\n 6: 2445.9849051249898,\r\n 7: 1222.9924525624899,\r\n 8: 611.49622628138002,\r\n 9: 305.74811314055802,\r\n 10: 152.874056570411,\r\n 11: 76.437028285073197,\r\n 12: 38.218514142536598,\r\n 13: 19.109257071268299,\r\n 14: 9.5546285356341496,\r\n 15: 4.7773142679493699,\r\n 16: 2.38865713397468,\r\n 17: 1.1943285668550501,\r\n 18: 0.59716428355981699,\r\n 19: 0.29858214164761698,\r\n 20: 0.14929107082381,\r\n 21: 0.07464553541191,\r\n 22: 0.0373227677059525,\r\n 23: 0.0186613838529763\r\n }\r\n },\r\n\r\n initialize: function (options) {\r\n options = Util.setOptions(this, options);\r\n\r\n // set the urls\r\n options = getUrlParams(options);\r\n this.tileUrl = (options.proxy ? options.proxy + '?' : '') + options.url + 'tile/{z}/{y}/{x}' + (options.requestParams && Object.keys(options.requestParams).length > 0 ? Util.getParamString(options.requestParams) : '');\r\n // Remove subdomain in url\r\n // https://github.com/Esri/esri-leaflet/issues/991\r\n if (options.url.indexOf('{s}') !== -1 && options.subdomains) {\r\n options.url = options.url.replace('{s}', options.subdomains[0]);\r\n }\r\n this.service = mapService(options);\r\n this.service.addEventParent(this);\r\n\r\n var arcgisonline = new RegExp(/tiles.arcgis(online)?\\.com/g);\r\n if (arcgisonline.test(options.url)) {\r\n this.tileUrl = this.tileUrl.replace('://tiles', '://tiles{s}');\r\n options.subdomains = ['1', '2', '3', '4'];\r\n }\r\n\r\n if (this.options.token) {\r\n this.tileUrl += ('?token=' + this.options.token);\r\n }\r\n\r\n // init layer by calling TileLayers initialize method\r\n TileLayer.prototype.initialize.call(this, this.tileUrl, options);\r\n },\r\n\r\n getTileUrl: function (tilePoint) {\r\n var zoom = this._getZoomForUrl();\r\n\r\n return Util.template(this.tileUrl, Util.extend({\r\n s: this._getSubdomain(tilePoint),\r\n x: tilePoint.x,\r\n y: tilePoint.y,\r\n // try lod map first, then just default to zoom level\r\n z: (this._lodMap && this._lodMap[zoom]) ? this._lodMap[zoom] : zoom\r\n }, this.options));\r\n },\r\n\r\n createTile: function (coords, done) {\r\n var tile = document.createElement('img');\r\n\r\n DomEvent.on(tile, 'load', Util.bind(this._tileOnLoad, this, done, tile));\r\n DomEvent.on(tile, 'error', Util.bind(this._tileOnError, this, done, tile));\r\n\r\n if (this.options.crossOrigin) {\r\n tile.crossOrigin = '';\r\n }\r\n\r\n /*\r\n Alt tag is set to empty string to keep screen readers from reading URL and for compliance reasons\r\n http://www.w3.org/TR/WCAG20-TECHS/H67\r\n */\r\n tile.alt = '';\r\n\r\n // if there is no lod map or an lod map with a proper zoom load the tile\r\n // otherwise wait for the lod map to become available\r\n if (!this._lodMap || (this._lodMap && this._lodMap[this._getZoomForUrl()])) {\r\n tile.src = this.getTileUrl(coords);\r\n } else {\r\n this.once('lodmap', function () {\r\n tile.src = this.getTileUrl(coords);\r\n }, this);\r\n }\r\n\r\n return tile;\r\n },\r\n\r\n onAdd: function (map) {\r\n // include 'Powered by Esri' in map attribution\r\n setEsriAttribution(map);\r\n\r\n if (!this._lodMap) {\r\n this.metadata(function (error, metadata) {\r\n if (!error && metadata.spatialReference) {\r\n var sr = metadata.spatialReference.latestWkid || metadata.spatialReference.wkid;\r\n // display the copyright text from the service using leaflet's attribution control\r\n if (!this.options.attribution && map.attributionControl && metadata.copyrightText) {\r\n this.options.attribution = metadata.copyrightText;\r\n map.attributionControl.addAttribution(this.getAttribution());\r\n }\r\n\r\n // if the service tiles were published in web mercator using conventional LODs but missing levels, we can try and remap them\r\n if (map.options.crs === CRS.EPSG3857 && (sr === 102100 || sr === 3857)) {\r\n this._lodMap = {};\r\n // create the zoom level data\r\n var arcgisLODs = metadata.tileInfo.lods;\r\n var correctResolutions = TiledMapLayer.MercatorZoomLevels;\r\n\r\n for (var i = 0; i < arcgisLODs.length; i++) {\r\n var arcgisLOD = arcgisLODs[i];\r\n for (var ci in correctResolutions) {\r\n var correctRes = correctResolutions[ci];\r\n\r\n if (this._withinPercentage(arcgisLOD.resolution, correctRes, this.options.zoomOffsetAllowance)) {\r\n this._lodMap[ci] = arcgisLOD.level;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n this.fire('lodmap');\r\n } else if (map.options.crs && map.options.crs.code && (map.options.crs.code.indexOf(sr) > -1)) {\r\n // if the projection is WGS84, or the developer is using Proj4 to define a custom CRS, no action is required\r\n } else {\r\n // if the service was cached in a custom projection and an appropriate LOD hasn't been defined in the map, guide the developer to our Proj4 sample\r\n warn('L.esri.TiledMapLayer is using a non-mercator spatial reference. Support may be available through Proj4Leaflet https://developers.arcgis.com/esri-leaflet/samples/non-mercator-projection/');\r\n }\r\n }\r\n }, this);\r\n }\r\n\r\n TileLayer.prototype.onAdd.call(this, map);\r\n },\r\n\r\n onRemove: function (map) {\r\n removeEsriAttribution(map);\r\n\r\n TileLayer.prototype.onRemove.call(this, map);\r\n },\r\n\r\n metadata: function (callback, context) {\r\n this.service.metadata(callback, context);\r\n return this;\r\n },\r\n\r\n identify: function () {\r\n return this.service.identify();\r\n },\r\n\r\n find: function () {\r\n return this.service.find();\r\n },\r\n\r\n query: function () {\r\n return this.service.query();\r\n },\r\n\r\n authenticate: function (token) {\r\n var tokenQs = '?token=' + token;\r\n this.tileUrl = (this.options.token) ? this.tileUrl.replace(/\\?token=(.+)/g, tokenQs) : this.tileUrl + tokenQs;\r\n this.options.token = token;\r\n this.service.authenticate(token);\r\n return this;\r\n },\r\n\r\n _withinPercentage: function (a, b, percentage) {\r\n var diff = Math.abs((a / b) - 1);\r\n return diff < percentage;\r\n }\r\n});\r\n\r\nexport function tiledMapLayer (url, options) {\r\n return new TiledMapLayer(url, options);\r\n}\r\n\r\nexport default tiledMapLayer;\r\n","import { ImageOverlay, CRS, DomUtil, Util, Layer, popup, latLng, bounds } from 'leaflet';\r\nimport { cors } from '../Support';\r\nimport { setEsriAttribution, removeEsriAttribution } from '../Util';\r\n\r\nvar Overlay = ImageOverlay.extend({\r\n onAdd: function (map) {\r\n this._topLeft = map.getPixelBounds().min;\r\n ImageOverlay.prototype.onAdd.call(this, map);\r\n },\r\n _reset: function () {\r\n if (this._map.options.crs === CRS.EPSG3857) {\r\n ImageOverlay.prototype._reset.call(this);\r\n } else {\r\n DomUtil.setPosition(this._image, this._topLeft.subtract(this._map.getPixelOrigin()));\r\n }\r\n }\r\n});\r\n\r\nexport var RasterLayer = Layer.extend({\r\n options: {\r\n opacity: 1,\r\n position: 'front',\r\n f: 'image',\r\n useCors: cors,\r\n attribution: null,\r\n interactive: false,\r\n alt: ''\r\n },\r\n\r\n onAdd: function (map) {\r\n // include 'Powered by Esri' in map attribution\r\n setEsriAttribution(map);\r\n\r\n if (this.options.zIndex) {\r\n this.options.position = null;\r\n }\r\n\r\n this._update = Util.throttle(this._update, this.options.updateInterval, this);\r\n\r\n map.on('moveend', this._update, this);\r\n\r\n // if we had an image loaded and it matches the\r\n // current bounds show the image otherwise remove it\r\n if (this._currentImage && this._currentImage._bounds.equals(this._map.getBounds())) {\r\n map.addLayer(this._currentImage);\r\n } else if (this._currentImage) {\r\n this._map.removeLayer(this._currentImage);\r\n this._currentImage = null;\r\n }\r\n\r\n this._update();\r\n\r\n if (this._popup) {\r\n this._map.on('click', this._getPopupData, this);\r\n this._map.on('dblclick', this._resetPopupState, this);\r\n }\r\n\r\n // add copyright text listed in service metadata\r\n this.metadata(function (err, metadata) {\r\n if (!err && !this.options.attribution && map.attributionControl && metadata.copyrightText) {\r\n this.options.attribution = metadata.copyrightText;\r\n map.attributionControl.addAttribution(this.getAttribution());\r\n }\r\n }, this);\r\n },\r\n\r\n onRemove: function (map) {\r\n removeEsriAttribution(map);\r\n\r\n if (this._currentImage) {\r\n this._map.removeLayer(this._currentImage);\r\n }\r\n\r\n if (this._popup) {\r\n this._map.off('click', this._getPopupData, this);\r\n this._map.off('dblclick', this._resetPopupState, this);\r\n }\r\n\r\n this._map.off('moveend', this._update, this);\r\n },\r\n\r\n bindPopup: function (fn, popupOptions) {\r\n this._shouldRenderPopup = false;\r\n this._lastClick = false;\r\n this._popup = popup(popupOptions);\r\n this._popupFunction = fn;\r\n if (this._map) {\r\n this._map.on('click', this._getPopupData, this);\r\n this._map.on('dblclick', this._resetPopupState, this);\r\n }\r\n return this;\r\n },\r\n\r\n unbindPopup: function () {\r\n if (this._map) {\r\n this._map.closePopup(this._popup);\r\n this._map.off('click', this._getPopupData, this);\r\n this._map.off('dblclick', this._resetPopupState, this);\r\n }\r\n this._popup = false;\r\n return this;\r\n },\r\n\r\n bringToFront: function () {\r\n this.options.position = 'front';\r\n if (this._currentImage) {\r\n this._currentImage.bringToFront();\r\n this._setAutoZIndex(Math.max);\r\n }\r\n return this;\r\n },\r\n\r\n bringToBack: function () {\r\n this.options.position = 'back';\r\n if (this._currentImage) {\r\n this._currentImage.bringToBack();\r\n this._setAutoZIndex(Math.min);\r\n }\r\n return this;\r\n },\r\n\r\n setZIndex: function (value) {\r\n this.options.zIndex = value;\r\n if (this._currentImage) {\r\n this._currentImage.setZIndex(value);\r\n }\r\n return this;\r\n },\r\n\r\n _setAutoZIndex: function (compare) {\r\n // go through all other layers of the same pane, set zIndex to max + 1 (front) or min - 1 (back)\r\n if (!this._currentImage) {\r\n return;\r\n }\r\n var layers = this._currentImage.getPane().children;\r\n var edgeZIndex = -compare(-Infinity, Infinity); // -Infinity for max, Infinity for min\r\n for (var i = 0, len = layers.length, zIndex; i < len; i++) {\r\n zIndex = layers[i].style.zIndex;\r\n if (layers[i] !== this._currentImage._image && zIndex) {\r\n edgeZIndex = compare(edgeZIndex, +zIndex);\r\n }\r\n }\r\n\r\n if (isFinite(edgeZIndex)) {\r\n this.options.zIndex = edgeZIndex + compare(-1, 1);\r\n this.setZIndex(this.options.zIndex);\r\n }\r\n },\r\n\r\n getAttribution: function () {\r\n return this.options.attribution;\r\n },\r\n\r\n getOpacity: function () {\r\n return this.options.opacity;\r\n },\r\n\r\n setOpacity: function (opacity) {\r\n this.options.opacity = opacity;\r\n if (this._currentImage) {\r\n this._currentImage.setOpacity(opacity);\r\n }\r\n return this;\r\n },\r\n\r\n getTimeRange: function () {\r\n return [this.options.from, this.options.to];\r\n },\r\n\r\n setTimeRange: function (from, to) {\r\n this.options.from = from;\r\n this.options.to = to;\r\n this._update();\r\n return this;\r\n },\r\n\r\n metadata: function (callback, context) {\r\n this.service.metadata(callback, context);\r\n return this;\r\n },\r\n\r\n authenticate: function (token) {\r\n this.service.authenticate(token);\r\n return this;\r\n },\r\n\r\n redraw: function () {\r\n this._update();\r\n },\r\n\r\n _renderImage: function (url, bounds, contentType) {\r\n if (this._map) {\r\n // if no output directory has been specified for a service, MIME data will be returned\r\n if (contentType) {\r\n url = 'data:' + contentType + ';base64,' + url;\r\n }\r\n\r\n // if server returns an inappropriate response, abort.\r\n if (!url) return;\r\n\r\n // create a new image overlay and add it to the map\r\n // to start loading the image\r\n // opacity is 0 while the image is loading\r\n var image = new Overlay(url, bounds, {\r\n opacity: 0,\r\n crossOrigin: this.options.withCredentials ? 'use-credentials' : this.options.useCors,\r\n alt: this.options.alt,\r\n pane: this.options.pane || this.getPane(),\r\n interactive: this.options.interactive\r\n }).addTo(this._map);\r\n\r\n var onOverlayError = function () {\r\n this._map.removeLayer(image);\r\n this.fire('error');\r\n image.off('load', onOverlayLoad, this);\r\n };\r\n\r\n var onOverlayLoad = function (e) {\r\n image.off('error', onOverlayError, this);\r\n if (this._map) {\r\n var newImage = e.target;\r\n var oldImage = this._currentImage;\r\n\r\n // if the bounds of this image matches the bounds that\r\n // _renderImage was called with and we have a map with the same bounds\r\n // hide the old image if there is one and set the opacity\r\n // of the new image otherwise remove the new image\r\n if (newImage._bounds.equals(bounds) && newImage._bounds.equals(this._map.getBounds())) {\r\n this._currentImage = newImage;\r\n\r\n if (this.options.position === 'front') {\r\n this.bringToFront();\r\n } else if (this.options.position === 'back') {\r\n this.bringToBack();\r\n }\r\n\r\n if (this.options.zIndex) {\r\n this.setZIndex(this.options.zIndex);\r\n }\r\n\r\n if (this._map && this._currentImage._map) {\r\n this._currentImage.setOpacity(this.options.opacity);\r\n } else {\r\n this._currentImage._map.removeLayer(this._currentImage);\r\n }\r\n\r\n if (oldImage && this._map) {\r\n this._map.removeLayer(oldImage);\r\n }\r\n\r\n if (oldImage && oldImage._map) {\r\n oldImage._map.removeLayer(oldImage);\r\n }\r\n } else {\r\n this._map.removeLayer(newImage);\r\n }\r\n }\r\n\r\n this.fire('load', {\r\n bounds: bounds\r\n });\r\n };\r\n\r\n // If loading the image fails\r\n image.once('error', onOverlayError, this);\r\n\r\n // once the image loads\r\n image.once('load', onOverlayLoad, this);\r\n }\r\n },\r\n\r\n _update: function () {\r\n if (!this._map) {\r\n return;\r\n }\r\n\r\n var zoom = this._map.getZoom();\r\n var bounds = this._map.getBounds();\r\n\r\n if (this._animatingZoom) {\r\n return;\r\n }\r\n\r\n if (this._map._panTransition && this._map._panTransition._inProgress) {\r\n return;\r\n }\r\n\r\n if (zoom > this.options.maxZoom || zoom < this.options.minZoom) {\r\n if (this._currentImage) {\r\n this._currentImage._map.removeLayer(this._currentImage);\r\n this._currentImage = null;\r\n }\r\n return;\r\n }\r\n\r\n var params = this._buildExportParams();\r\n Util.extend(params, this.options.requestParams);\r\n\r\n if (params) {\r\n this._requestExport(params, bounds);\r\n\r\n this.fire('loading', {\r\n bounds: bounds\r\n });\r\n } else if (this._currentImage) {\r\n this._currentImage._map.removeLayer(this._currentImage);\r\n this._currentImage = null;\r\n }\r\n },\r\n\r\n _renderPopup: function (latlng, error, results, response) {\r\n latlng = latLng(latlng);\r\n if (this._shouldRenderPopup && this._lastClick.equals(latlng)) {\r\n // add the popup to the map where the mouse was clicked at\r\n var content = this._popupFunction(error, results, response);\r\n if (content) {\r\n this._popup.setLatLng(latlng).setContent(content).openOn(this._map);\r\n }\r\n }\r\n },\r\n\r\n _resetPopupState: function (e) {\r\n this._shouldRenderPopup = false;\r\n this._lastClick = e.latlng;\r\n },\r\n\r\n _calculateBbox: function () {\r\n var pixelBounds = this._map.getPixelBounds();\r\n\r\n var sw = this._map.unproject(pixelBounds.getBottomLeft());\r\n var ne = this._map.unproject(pixelBounds.getTopRight());\r\n\r\n var neProjected = this._map.options.crs.project(ne);\r\n var swProjected = this._map.options.crs.project(sw);\r\n\r\n // this ensures ne/sw are switched in polar maps where north/top bottom/south is inverted\r\n var boundsProjected = bounds(neProjected, swProjected);\r\n\r\n return [boundsProjected.getBottomLeft().x, boundsProjected.getBottomLeft().y, boundsProjected.getTopRight().x, boundsProjected.getTopRight().y].join(',');\r\n },\r\n\r\n _calculateImageSize: function () {\r\n // ensure that we don't ask ArcGIS Server for a taller image than we have actual map displaying within the div\r\n var bounds = this._map.getPixelBounds();\r\n var size = this._map.getSize();\r\n\r\n var sw = this._map.unproject(bounds.getBottomLeft());\r\n var ne = this._map.unproject(bounds.getTopRight());\r\n\r\n var top = this._map.latLngToLayerPoint(ne).y;\r\n var bottom = this._map.latLngToLayerPoint(sw).y;\r\n\r\n if (top > 0 || bottom < size.y) {\r\n size.y = bottom - top;\r\n }\r\n\r\n return size.x + ',' + size.y;\r\n }\r\n});\r\n","import { Util } from 'leaflet';\r\nimport { RasterLayer } from './RasterLayer';\r\nimport { getUrlParams } from '../Util';\r\nimport imageService from '../Services/ImageService';\r\n\r\nexport var ImageMapLayer = RasterLayer.extend({\r\n\r\n options: {\r\n updateInterval: 150,\r\n format: 'jpgpng',\r\n transparent: true,\r\n f: 'image'\r\n },\r\n\r\n query: function () {\r\n return this.service.query();\r\n },\r\n\r\n identify: function () {\r\n return this.service.identify();\r\n },\r\n\r\n initialize: function (options) {\r\n options = getUrlParams(options);\r\n this.service = imageService(options);\r\n this.service.addEventParent(this);\r\n\r\n Util.setOptions(this, options);\r\n },\r\n\r\n setPixelType: function (pixelType) {\r\n this.options.pixelType = pixelType;\r\n this._update();\r\n return this;\r\n },\r\n\r\n getPixelType: function () {\r\n return this.options.pixelType;\r\n },\r\n\r\n setBandIds: function (bandIds) {\r\n if (Util.isArray(bandIds)) {\r\n this.options.bandIds = bandIds.join(',');\r\n } else {\r\n this.options.bandIds = bandIds.toString();\r\n }\r\n this._update();\r\n return this;\r\n },\r\n\r\n getBandIds: function () {\r\n return this.options.bandIds;\r\n },\r\n\r\n setNoData: function (noData, noDataInterpretation) {\r\n if (Util.isArray(noData)) {\r\n this.options.noData = noData.join(',');\r\n } else {\r\n this.options.noData = noData.toString();\r\n }\r\n if (noDataInterpretation) {\r\n this.options.noDataInterpretation = noDataInterpretation;\r\n }\r\n this._update();\r\n return this;\r\n },\r\n\r\n getNoData: function () {\r\n return this.options.noData;\r\n },\r\n\r\n getNoDataInterpretation: function () {\r\n return this.options.noDataInterpretation;\r\n },\r\n\r\n setRenderingRule: function (renderingRule) {\r\n this.options.renderingRule = renderingRule;\r\n this._update();\r\n },\r\n\r\n getRenderingRule: function () {\r\n return this.options.renderingRule;\r\n },\r\n\r\n setMosaicRule: function (mosaicRule) {\r\n this.options.mosaicRule = mosaicRule;\r\n this._update();\r\n },\r\n\r\n getMosaicRule: function () {\r\n return this.options.mosaicRule;\r\n },\r\n\r\n _getPopupData: function (e) {\r\n var callback = Util.bind(function (error, results, response) {\r\n if (error) { return; } // we really can't do anything here but authenticate or requesterror will fire\r\n setTimeout(Util.bind(function () {\r\n this._renderPopup(e.latlng, error, results, response);\r\n }, this), 300);\r\n }, this);\r\n\r\n var identifyRequest = this.identify().at(e.latlng);\r\n\r\n // set mosaic rule for identify task if it is set for layer\r\n if (this.options.mosaicRule) {\r\n identifyRequest.setMosaicRule(this.options.mosaicRule);\r\n // @TODO: force return catalog items too?\r\n }\r\n\r\n // @TODO: set rendering rule? Not sure,\r\n // sometimes you want raw pixel values\r\n // if (this.options.renderingRule) {\r\n // identifyRequest.setRenderingRule(this.options.renderingRule);\r\n // }\r\n\r\n identifyRequest.run(callback);\r\n\r\n // set the flags to show the popup\r\n this._shouldRenderPopup = true;\r\n this._lastClick = e.latlng;\r\n },\r\n\r\n _buildExportParams: function () {\r\n var sr = parseInt(this._map.options.crs.code.split(':')[1], 10);\r\n\r\n var params = {\r\n bbox: this._calculateBbox(),\r\n size: this._calculateImageSize(),\r\n format: this.options.format,\r\n transparent: this.options.transparent,\r\n bboxSR: sr,\r\n imageSR: sr\r\n };\r\n\r\n if (this.options.from && this.options.to) {\r\n params.time = this.options.from.valueOf() + ',' + this.options.to.valueOf();\r\n }\r\n\r\n if (this.options.pixelType) {\r\n params.pixelType = this.options.pixelType;\r\n }\r\n\r\n if (this.options.interpolation) {\r\n params.interpolation = this.options.interpolation;\r\n }\r\n\r\n if (this.options.compressionQuality) {\r\n params.compressionQuality = this.options.compressionQuality;\r\n }\r\n\r\n if (this.options.bandIds) {\r\n params.bandIds = this.options.bandIds;\r\n }\r\n\r\n // 0 is falsy *and* a valid input parameter\r\n if (this.options.noData === 0 || this.options.noData) {\r\n params.noData = this.options.noData;\r\n }\r\n\r\n if (this.options.noDataInterpretation) {\r\n params.noDataInterpretation = this.options.noDataInterpretation;\r\n }\r\n\r\n if (this.service.options.token) {\r\n params.token = this.service.options.token;\r\n }\r\n\r\n if (this.options.renderingRule) {\r\n params.renderingRule = JSON.stringify(this.options.renderingRule);\r\n }\r\n\r\n if (this.options.mosaicRule) {\r\n params.mosaicRule = JSON.stringify(this.options.mosaicRule);\r\n }\r\n\r\n return params;\r\n },\r\n\r\n _requestExport: function (params, bounds) {\r\n if (this.options.f === 'json') {\r\n this.service.request('exportImage', params, function (error, response) {\r\n if (error) { return; } // we really can't do anything here but authenticate or requesterror will fire\r\n if (this.options.token) {\r\n response.href += ('?token=' + this.options.token);\r\n }\r\n if (this.options.proxy) {\r\n response.href = this.options.proxy + '?' + response.href;\r\n }\r\n this._renderImage(response.href, bounds);\r\n }, this);\r\n } else {\r\n params.f = 'image';\r\n var fullUrl = this.options.url + 'exportImage' + Util.getParamString(params);\r\n if (this.options.proxy) {\r\n fullUrl = this.options.proxy + '?' + fullUrl;\r\n }\r\n this._renderImage(fullUrl, bounds);\r\n }\r\n }\r\n});\r\n\r\nexport function imageMapLayer (url, options) {\r\n return new ImageMapLayer(url, options);\r\n}\r\n\r\nexport default imageMapLayer;\r\n","import { Util } from 'leaflet';\r\nimport { RasterLayer } from './RasterLayer';\r\nimport { getUrlParams } from '../Util';\r\nimport mapService from '../Services/MapService';\r\n\r\nexport var DynamicMapLayer = RasterLayer.extend({\r\n\r\n options: {\r\n updateInterval: 150,\r\n layers: false,\r\n layerDefs: false,\r\n timeOptions: false,\r\n format: 'png32',\r\n transparent: true,\r\n f: 'json'\r\n },\r\n\r\n initialize: function (options) {\r\n options = getUrlParams(options);\r\n this.service = mapService(options);\r\n this.service.addEventParent(this);\r\n\r\n Util.setOptions(this, options);\r\n },\r\n\r\n getDynamicLayers: function () {\r\n return this.options.dynamicLayers;\r\n },\r\n\r\n setDynamicLayers: function (dynamicLayers) {\r\n this.options.dynamicLayers = dynamicLayers;\r\n this._update();\r\n return this;\r\n },\r\n\r\n getLayers: function () {\r\n return this.options.layers;\r\n },\r\n\r\n setLayers: function (layers) {\r\n this.options.layers = layers;\r\n this._update();\r\n return this;\r\n },\r\n\r\n getLayerDefs: function () {\r\n return this.options.layerDefs;\r\n },\r\n\r\n setLayerDefs: function (layerDefs) {\r\n this.options.layerDefs = layerDefs;\r\n this._update();\r\n return this;\r\n },\r\n\r\n getTimeOptions: function () {\r\n return this.options.timeOptions;\r\n },\r\n\r\n setTimeOptions: function (timeOptions) {\r\n this.options.timeOptions = timeOptions;\r\n this._update();\r\n return this;\r\n },\r\n\r\n query: function () {\r\n return this.service.query();\r\n },\r\n\r\n identify: function () {\r\n return this.service.identify();\r\n },\r\n\r\n find: function () {\r\n return this.service.find();\r\n },\r\n\r\n _getPopupData: function (e) {\r\n var callback = Util.bind(function (error, featureCollection, response) {\r\n if (error) { return; } // we really can't do anything here but authenticate or requesterror will fire\r\n setTimeout(Util.bind(function () {\r\n this._renderPopup(e.latlng, error, featureCollection, response);\r\n }, this), 300);\r\n }, this);\r\n\r\n var identifyRequest;\r\n if (this.options.popup) {\r\n identifyRequest = this.options.popup.on(this._map).at(e.latlng);\r\n } else {\r\n identifyRequest = this.identify().on(this._map).at(e.latlng);\r\n }\r\n\r\n // remove extraneous vertices from response features if it has not already been done\r\n if (!identifyRequest.params.maxAllowableOffset) {\r\n identifyRequest.simplify(this._map, 0.5);\r\n }\r\n\r\n if (!(this.options.popup && this.options.popup.params && this.options.popup.params.layers)) {\r\n if (this.options.layers) {\r\n identifyRequest.layers('visible:' + this.options.layers.join(','));\r\n } else {\r\n identifyRequest.layers('visible');\r\n }\r\n }\r\n\r\n // if present, pass layer ids and sql filters through to the identify task\r\n if (this.options.layerDefs && typeof this.options.layerDefs !== 'string' && !identifyRequest.params.layerDefs) {\r\n for (var id in this.options.layerDefs) {\r\n if (Object.prototype.hasOwnProperty.call(this.options.layerDefs, id)) {\r\n identifyRequest.layerDef(id, this.options.layerDefs[id]);\r\n }\r\n }\r\n }\r\n\r\n identifyRequest.run(callback);\r\n\r\n // set the flags to show the popup\r\n this._shouldRenderPopup = true;\r\n this._lastClick = e.latlng;\r\n },\r\n\r\n _buildExportParams: function () {\r\n var sr = parseInt(this._map.options.crs.code.split(':')[1], 10);\r\n\r\n var params = {\r\n bbox: this._calculateBbox(),\r\n size: this._calculateImageSize(),\r\n dpi: 96,\r\n format: this.options.format,\r\n transparent: this.options.transparent,\r\n bboxSR: sr,\r\n imageSR: sr\r\n };\r\n\r\n if (this.options.dynamicLayers) {\r\n params.dynamicLayers = this.options.dynamicLayers;\r\n }\r\n\r\n if (this.options.layers) {\r\n if (this.options.layers.length === 0) {\r\n return;\r\n } else {\r\n params.layers = 'show:' + this.options.layers.join(',');\r\n }\r\n }\r\n\r\n if (this.options.layerDefs) {\r\n params.layerDefs = typeof this.options.layerDefs === 'string' ? this.options.layerDefs : JSON.stringify(this.options.layerDefs);\r\n }\r\n\r\n if (this.options.timeOptions) {\r\n params.timeOptions = JSON.stringify(this.options.timeOptions);\r\n }\r\n\r\n if (this.options.from && this.options.to) {\r\n params.time = this.options.from.valueOf() + ',' + this.options.to.valueOf();\r\n }\r\n\r\n if (this.service.options.token) {\r\n params.token = this.service.options.token;\r\n }\r\n\r\n if (this.options.proxy) {\r\n params.proxy = this.options.proxy;\r\n }\r\n\r\n // use a timestamp to bust server cache\r\n if (this.options.disableCache) {\r\n params._ts = Date.now();\r\n }\r\n\r\n return params;\r\n },\r\n\r\n _requestExport: function (params, bounds) {\r\n if (this.options.f === 'json') {\r\n this.service.request('export', params, function (error, response) {\r\n if (error) { return; } // we really can't do anything here but authenticate or requesterror will fire\r\n\r\n if (this.options.token && response.href) {\r\n response.href += ('?token=' + this.options.token);\r\n }\r\n if (this.options.proxy && response.href) {\r\n response.href = this.options.proxy + '?' + response.href;\r\n }\r\n if (response.href) {\r\n this._renderImage(response.href, bounds);\r\n } else {\r\n this._renderImage(response.imageData, bounds, response.contentType);\r\n }\r\n }, this);\r\n } else {\r\n params.f = 'image';\r\n var fullUrl = this.options.url + 'export' + Util.getParamString(params);\r\n if (this.options.proxy) {\r\n fullUrl = this.options.proxy + '?' + fullUrl;\r\n }\r\n this._renderImage(fullUrl, bounds);\r\n }\r\n }\r\n});\r\n\r\nexport function dynamicMapLayer (url, options) {\r\n return new DynamicMapLayer(url, options);\r\n}\r\n\r\nexport default dynamicMapLayer;\r\n","import {\r\n LatLngBounds,\r\n toLatLngBounds as latLngBounds,\r\n Layer,\r\n Browser,\r\n Util,\r\n Point,\r\n Bounds\r\n} from 'leaflet';\r\n\r\nexport var FeatureGrid = Layer.extend({\r\n // @section\r\n // @aka GridLayer options\r\n options: {\r\n // @option cellSize: Number|Point = 256\r\n // Width and height of cells in the grid. Use a number if width and height are equal, or `L.point(width, height)` otherwise.\r\n cellSize: 512,\r\n\r\n // @option updateWhenIdle: Boolean = (depends)\r\n // Load new cells only when panning ends.\r\n // `true` by default on mobile browsers, in order to avoid too many requests and keep smooth navigation.\r\n // `false` otherwise in order to display new cells _during_ panning, since it is easy to pan outside the\r\n // [`keepBuffer`](#gridlayer-keepbuffer) option in desktop browsers.\r\n updateWhenIdle: Browser.mobile,\r\n\r\n // @option updateInterval: Number = 150\r\n // Cells will not update more than once every `updateInterval` milliseconds when panning.\r\n updateInterval: 150,\r\n\r\n // @option noWrap: Boolean = false\r\n // Whether the layer is wrapped around the antimeridian. If `true`, the\r\n // GridLayer will only be displayed once at low zoom levels. Has no\r\n // effect when the [map CRS](#map-crs) doesn't wrap around. Can be used\r\n // in combination with [`bounds`](#gridlayer-bounds) to prevent requesting\r\n // cells outside the CRS limits.\r\n noWrap: false,\r\n\r\n // @option keepBuffer: Number = 1.5\r\n // When panning the map, keep this many rows and columns of cells before unloading them.\r\n keepBuffer: 1.5\r\n },\r\n\r\n initialize: function (options) {\r\n Util.setOptions(this, options);\r\n },\r\n\r\n onAdd: function (map) {\r\n this._cells = {};\r\n this._activeCells = {};\r\n this._resetView();\r\n this._update();\r\n },\r\n\r\n onRemove: function (map) {\r\n this._removeAllCells();\r\n this._cellZoom = undefined;\r\n },\r\n\r\n // @method isLoading: Boolean\r\n // Returns `true` if any cell in the grid layer has not finished loading.\r\n isLoading: function () {\r\n return this._loading;\r\n },\r\n\r\n // @method redraw: this\r\n // Causes the layer to clear all the cells and request them again.\r\n redraw: function () {\r\n if (this._map) {\r\n this._removeAllCells();\r\n this._update();\r\n }\r\n return this;\r\n },\r\n\r\n getEvents: function () {\r\n var events = {\r\n viewprereset: this._invalidateAll,\r\n viewreset: this._resetView,\r\n zoom: this._resetView,\r\n moveend: this._onMoveEnd\r\n };\r\n\r\n if (!this.options.updateWhenIdle) {\r\n // update cells on move, but not more often than once per given interval\r\n if (!this._onMove) {\r\n this._onMove = Util.throttle(\r\n this._onMoveEnd,\r\n this.options.updateInterval,\r\n this\r\n );\r\n }\r\n\r\n events.move = this._onMove;\r\n }\r\n\r\n return events;\r\n },\r\n\r\n // @section Extension methods\r\n // Layers extending `GridLayer` shall reimplement the following method.\r\n // @method createCell(coords: Object, done?: Function): HTMLElement\r\n // Called only internally, must be overridden by classes extending `GridLayer`.\r\n // Returns the `HTMLElement` corresponding to the given `coords`. If the `done` callback\r\n // is specified, it must be called when the cell has finished loading and drawing.\r\n createCell: function () {\r\n return document.createElement('div');\r\n },\r\n\r\n removeCell: function () {\r\n\r\n },\r\n\r\n reuseCell: function () {\r\n\r\n },\r\n\r\n cellLeave: function () {\r\n\r\n },\r\n\r\n cellEnter: function () {\r\n\r\n },\r\n // @section\r\n // @method getCellSize: Point\r\n // Normalizes the [cellSize option](#gridlayer-cellsize) into a point. Used by the `createCell()` method.\r\n getCellSize: function () {\r\n var s = this.options.cellSize;\r\n return s instanceof Point ? s : new Point(s, s);\r\n },\r\n\r\n _pruneCells: function () {\r\n if (!this._map) {\r\n return;\r\n }\r\n\r\n var key, cell;\r\n\r\n for (key in this._cells) {\r\n cell = this._cells[key];\r\n cell.retain = cell.current;\r\n }\r\n\r\n for (key in this._cells) {\r\n cell = this._cells[key];\r\n if (cell.current && !cell.active) {\r\n var coords = cell.coords;\r\n if (!this._retainParent(coords.x, coords.y, coords.z, coords.z - 5)) {\r\n this._retainChildren(coords.x, coords.y, coords.z, coords.z + 2);\r\n }\r\n }\r\n }\r\n\r\n for (key in this._cells) {\r\n if (!this._cells[key].retain) {\r\n this._removeCell(key);\r\n }\r\n }\r\n },\r\n\r\n _removeAllCells: function () {\r\n for (var key in this._cells) {\r\n this._removeCell(key);\r\n }\r\n },\r\n\r\n _invalidateAll: function () {\r\n this._removeAllCells();\r\n\r\n this._cellZoom = undefined;\r\n },\r\n\r\n _retainParent: function (x, y, z, minZoom) {\r\n var x2 = Math.floor(x / 2);\r\n var y2 = Math.floor(y / 2);\r\n var z2 = z - 1;\r\n var coords2 = new Point(+x2, +y2);\r\n coords2.z = +z2;\r\n\r\n var key = this._cellCoordsToKey(coords2);\r\n var cell = this._cells[key];\r\n\r\n if (cell && cell.active) {\r\n cell.retain = true;\r\n return true;\r\n } else if (cell && cell.loaded) {\r\n cell.retain = true;\r\n }\r\n\r\n if (z2 > minZoom) {\r\n return this._retainParent(x2, y2, z2, minZoom);\r\n }\r\n\r\n return false;\r\n },\r\n\r\n _retainChildren: function (x, y, z, maxZoom) {\r\n for (var i = 2 * x; i < 2 * x + 2; i++) {\r\n for (var j = 2 * y; j < 2 * y + 2; j++) {\r\n var coords = new Point(i, j);\r\n coords.z = z + 1;\r\n\r\n var key = this._cellCoordsToKey(coords);\r\n var cell = this._cells[key];\r\n\r\n if (cell && cell.active) {\r\n cell.retain = true;\r\n continue;\r\n } else if (cell && cell.loaded) {\r\n cell.retain = true;\r\n }\r\n\r\n if (z + 1 < maxZoom) {\r\n this._retainChildren(i, j, z + 1, maxZoom);\r\n }\r\n }\r\n }\r\n },\r\n\r\n _resetView: function (e) {\r\n var animating = e && (e.pinch || e.flyTo);\r\n\r\n if (animating) {\r\n return;\r\n }\r\n\r\n this._setView(\r\n this._map.getCenter(),\r\n this._map.getZoom(),\r\n animating,\r\n animating\r\n );\r\n },\r\n\r\n _setView: function (center, zoom, noPrune, noUpdate) {\r\n var cellZoom = Math.round(zoom);\r\n\r\n if (!noUpdate) {\r\n this._cellZoom = cellZoom;\r\n\r\n if (this._abortLoading) {\r\n this._abortLoading();\r\n }\r\n\r\n this._resetGrid();\r\n\r\n if (cellZoom !== undefined) {\r\n this._update(center);\r\n }\r\n\r\n if (!noPrune) {\r\n this._pruneCells();\r\n }\r\n\r\n // Flag to prevent _updateOpacity from pruning cells during\r\n // a zoom anim or a pinch gesture\r\n this._noPrune = !!noPrune;\r\n }\r\n },\r\n\r\n _resetGrid: function () {\r\n var map = this._map;\r\n var crs = map.options.crs;\r\n var cellSize = (this._cellSize = this.getCellSize());\r\n var cellZoom = this._cellZoom;\r\n\r\n var bounds = this._map.getPixelWorldBounds(this._cellZoom);\r\n if (bounds) {\r\n this._globalCellRange = this._pxBoundsToCellRange(bounds);\r\n }\r\n\r\n this._wrapX = crs.wrapLng &&\r\n !this.options.noWrap && [\r\n Math.floor(map.project([0, crs.wrapLng[0]], cellZoom).x / cellSize.x),\r\n Math.ceil(map.project([0, crs.wrapLng[1]], cellZoom).x / cellSize.y)\r\n ];\r\n this._wrapY = crs.wrapLat &&\r\n !this.options.noWrap && [\r\n Math.floor(map.project([crs.wrapLat[0], 0], cellZoom).y / cellSize.x),\r\n Math.ceil(map.project([crs.wrapLat[1], 0], cellZoom).y / cellSize.y)\r\n ];\r\n },\r\n\r\n _onMoveEnd: function (e) {\r\n var animating = e && (e.pinch || e.flyTo);\r\n\r\n if (animating || !this._map || this._map._animatingZoom) {\r\n return;\r\n }\r\n\r\n this._update();\r\n },\r\n\r\n _getCelldPixelBounds: function (center) {\r\n var map = this._map;\r\n var mapZoom = map._animatingZoom\r\n ? Math.max(map._animateToZoom, map.getZoom())\r\n : map.getZoom();\r\n var scale = map.getZoomScale(mapZoom, this._cellZoom);\r\n var pixelCenter = map.project(center, this._cellZoom).floor();\r\n var halfSize = map.getSize().divideBy(scale * 2);\r\n\r\n return new Bounds(\r\n pixelCenter.subtract(halfSize),\r\n pixelCenter.add(halfSize)\r\n );\r\n },\r\n\r\n // Private method to load cells in the grid's active zoom level according to map bounds\r\n _update: function (center) {\r\n var map = this._map;\r\n if (!map) {\r\n return;\r\n }\r\n var zoom = Math.round(map.getZoom());\r\n\r\n if (center === undefined) {\r\n center = map.getCenter();\r\n }\r\n\r\n var pixelBounds = this._getCelldPixelBounds(center);\r\n var cellRange = this._pxBoundsToCellRange(pixelBounds);\r\n var cellCenter = cellRange.getCenter();\r\n var queue = [];\r\n var margin = this.options.keepBuffer;\r\n var noPruneRange = new Bounds(\r\n cellRange.getBottomLeft().subtract([margin, -margin]),\r\n cellRange.getTopRight().add([margin, -margin])\r\n );\r\n\r\n // Sanity check: panic if the cell range contains Infinity somewhere.\r\n if (\r\n !(\r\n isFinite(cellRange.min.x) &&\r\n isFinite(cellRange.min.y) &&\r\n isFinite(cellRange.max.x) &&\r\n isFinite(cellRange.max.y)\r\n )\r\n ) {\r\n throw new Error('Attempted to load an infinite number of cells');\r\n }\r\n\r\n for (var key in this._cells) {\r\n var c = this._cells[key].coords;\r\n if (\r\n c.z !== this._cellZoom ||\r\n !noPruneRange.contains(new Point(c.x, c.y))\r\n ) {\r\n this._cells[key].current = false;\r\n }\r\n }\r\n\r\n // _update just loads more cells. If the cell zoom level differs too much\r\n // from the map's, let _setView reset levels and prune old cells.\r\n if (Math.abs(zoom - this._cellZoom) > 1) {\r\n this._setView(center, zoom);\r\n return;\r\n }\r\n\r\n // create a queue of coordinates to load cells from\r\n for (var j = cellRange.min.y; j <= cellRange.max.y; j++) {\r\n for (var i = cellRange.min.x; i <= cellRange.max.x; i++) {\r\n var coords = new Point(i, j);\r\n coords.z = this._cellZoom;\r\n\r\n if (!this._isValidCell(coords)) {\r\n continue;\r\n }\r\n\r\n var cell = this._cells[this._cellCoordsToKey(coords)];\r\n if (cell) {\r\n cell.current = true;\r\n } else {\r\n queue.push(coords);\r\n }\r\n }\r\n }\r\n\r\n // sort cell queue to load cells in order of their distance to center\r\n queue.sort(function (a, b) {\r\n return a.distanceTo(cellCenter) - b.distanceTo(cellCenter);\r\n });\r\n\r\n if (queue.length !== 0) {\r\n // if it's the first batch of cells to load\r\n if (!this._loading) {\r\n this._loading = true;\r\n }\r\n\r\n for (i = 0; i < queue.length; i++) {\r\n var _key = this._cellCoordsToKey(queue[i]);\r\n var _coords = this._keyToCellCoords(_key);\r\n if (this._activeCells[_coords]) {\r\n this._reuseCell(queue[i]);\r\n } else {\r\n this._createCell(queue[i]);\r\n }\r\n }\r\n }\r\n },\r\n\r\n _isValidCell: function (coords) {\r\n var crs = this._map.options.crs;\r\n\r\n if (!crs.infinite) {\r\n // don't load cell if it's out of bounds and not wrapped\r\n var bounds = this._globalCellRange;\r\n if (\r\n (!crs.wrapLng &&\r\n (coords.x < bounds.min.x || coords.x > bounds.max.x)) ||\r\n (!crs.wrapLat && (coords.y < bounds.min.y || coords.y > bounds.max.y))\r\n ) {\r\n return false;\r\n }\r\n }\r\n\r\n if (!this.options.bounds) {\r\n return true;\r\n }\r\n\r\n // don't load cell if it doesn't intersect the bounds in options\r\n var cellBounds = this._cellCoordsToBounds(coords);\r\n return latLngBounds(this.options.bounds).overlaps(cellBounds);\r\n },\r\n\r\n _keyToBounds: function (key) {\r\n return this._cellCoordsToBounds(this._keyToCellCoords(key));\r\n },\r\n\r\n _cellCoordsToNwSe: function (coords) {\r\n var map = this._map;\r\n var cellSize = this.getCellSize();\r\n var nwPoint = coords.scaleBy(cellSize);\r\n var sePoint = nwPoint.add(cellSize);\r\n var nw = map.unproject(nwPoint, coords.z);\r\n var se = map.unproject(sePoint, coords.z);\r\n\r\n return [nw, se];\r\n },\r\n\r\n // converts cell coordinates to its geographical bounds\r\n _cellCoordsToBounds: function (coords) {\r\n var bp = this._cellCoordsToNwSe(coords);\r\n var bounds = new LatLngBounds(bp[0], bp[1]);\r\n\r\n if (!this.options.noWrap) {\r\n bounds = this._map.wrapLatLngBounds(bounds);\r\n }\r\n return bounds;\r\n },\r\n // converts cell coordinates to key for the cell cache\r\n _cellCoordsToKey: function (coords) {\r\n return coords.x + ':' + coords.y + ':' + coords.z;\r\n },\r\n\r\n // converts cell cache key to coordinates\r\n _keyToCellCoords: function (key) {\r\n var k = key.split(':');\r\n var coords = new Point(+k[0], +k[1]);\r\n\r\n coords.z = +k[2];\r\n return coords;\r\n },\r\n\r\n _removeCell: function (key) {\r\n var cell = this._cells[key];\r\n\r\n if (!cell) {\r\n return;\r\n }\r\n\r\n var coords = this._keyToCellCoords(key);\r\n var wrappedCoords = this._wrapCoords(coords);\r\n var cellBounds = this._cellCoordsToBounds(this._wrapCoords(coords));\r\n\r\n cell.current = false;\r\n\r\n delete this._cells[key];\r\n this._activeCells[key] = cell;\r\n\r\n this.cellLeave(cellBounds, wrappedCoords, key);\r\n\r\n this.fire('cellleave', {\r\n key: key,\r\n coords: wrappedCoords,\r\n bounds: cellBounds\r\n });\r\n },\r\n\r\n _reuseCell: function (coords) {\r\n var key = this._cellCoordsToKey(coords);\r\n\r\n // save cell in cache\r\n this._cells[key] = this._activeCells[key];\r\n this._cells[key].current = true;\r\n\r\n var wrappedCoords = this._wrapCoords(coords);\r\n var cellBounds = this._cellCoordsToBounds(this._wrapCoords(coords));\r\n\r\n this.cellEnter(cellBounds, wrappedCoords, key);\r\n\r\n this.fire('cellenter', {\r\n key: key,\r\n coords: wrappedCoords,\r\n bounds: cellBounds\r\n });\r\n },\r\n\r\n _createCell: function (coords) {\r\n var key = this._cellCoordsToKey(coords);\r\n\r\n var wrappedCoords = this._wrapCoords(coords);\r\n var cellBounds = this._cellCoordsToBounds(this._wrapCoords(coords));\r\n\r\n this.createCell(cellBounds, wrappedCoords, key);\r\n\r\n this.fire('cellcreate', {\r\n key: key,\r\n coords: wrappedCoords,\r\n bounds: cellBounds\r\n });\r\n\r\n // save cell in cache\r\n this._cells[key] = {\r\n coords: coords,\r\n current: true\r\n };\r\n\r\n Util.requestAnimFrame(this._pruneCells, this);\r\n },\r\n\r\n _cellReady: function (coords, err, cell) {\r\n var key = this._cellCoordsToKey(coords);\r\n\r\n cell = this._cells[key];\r\n\r\n if (!cell) {\r\n return;\r\n }\r\n\r\n cell.loaded = +new Date();\r\n\r\n cell.active = true;\r\n },\r\n\r\n _getCellPos: function (coords) {\r\n return coords.scaleBy(this.getCellSize());\r\n },\r\n\r\n _wrapCoords: function (coords) {\r\n var newCoords = new Point(\r\n this._wrapX ? Util.wrapNum(coords.x, this._wrapX) : coords.x,\r\n this._wrapY ? Util.wrapNum(coords.y, this._wrapY) : coords.y\r\n );\r\n newCoords.z = coords.z;\r\n return newCoords;\r\n },\r\n\r\n _pxBoundsToCellRange: function (bounds) {\r\n var cellSize = this.getCellSize();\r\n return new Bounds(\r\n bounds.min.unscaleBy(cellSize).floor(),\r\n bounds.max.unscaleBy(cellSize).ceil().subtract([1, 1])\r\n );\r\n }\r\n});\r\n","function BinarySearchIndex (values) {\n this.values = [].concat(values || []);\n}\n\nBinarySearchIndex.prototype.query = function (value) {\n var index = this.getIndex(value);\n return this.values[index];\n};\n\nBinarySearchIndex.prototype.getIndex = function getIndex (value) {\n if (this.dirty) {\n this.sort();\n }\n\n var minIndex = 0;\n var maxIndex = this.values.length - 1;\n var currentIndex;\n var currentElement;\n\n while (minIndex <= maxIndex) {\n currentIndex = (minIndex + maxIndex) / 2 | 0;\n currentElement = this.values[Math.round(currentIndex)];\n if (+currentElement.value < +value) {\n minIndex = currentIndex + 1;\n } else if (+currentElement.value > +value) {\n maxIndex = currentIndex - 1;\n } else {\n return currentIndex;\n }\n }\n\n return Math.abs(~maxIndex);\n};\n\nBinarySearchIndex.prototype.between = function between (start, end) {\n var startIndex = this.getIndex(start);\n var endIndex = this.getIndex(end);\n\n if (startIndex === 0 && endIndex === 0) {\n return [];\n }\n\n while (this.values[startIndex - 1] && this.values[startIndex - 1].value === start) {\n startIndex--;\n }\n\n while (this.values[endIndex + 1] && this.values[endIndex + 1].value === end) {\n endIndex++;\n }\n\n if (this.values[endIndex] && this.values[endIndex].value === end && this.values[endIndex + 1]) {\n endIndex++;\n }\n\n return this.values.slice(startIndex, endIndex);\n};\n\nBinarySearchIndex.prototype.insert = function insert (item) {\n this.values.splice(this.getIndex(item.value), 0, item);\n return this;\n};\n\nBinarySearchIndex.prototype.bulkAdd = function bulkAdd (items, sort) {\n this.values = this.values.concat([].concat(items || []));\n\n if (sort) {\n this.sort();\n } else {\n this.dirty = true;\n }\n\n return this;\n};\n\nBinarySearchIndex.prototype.sort = function sort () {\n this.values.sort(function (a, b) {\n return +b.value - +a.value;\n }).reverse();\n this.dirty = false;\n return this;\n};\n\nexport default BinarySearchIndex;\n","import { Util } from 'leaflet';\r\nimport featureLayerService from '../../Services/FeatureLayerService';\r\nimport {\r\n getUrlParams,\r\n warn,\r\n setEsriAttribution,\r\n removeEsriAttribution\r\n} from '../../Util';\r\nimport { FeatureGrid } from './FeatureGrid';\r\nimport BinarySearchIndex from 'tiny-binary-search';\r\n\r\nexport var FeatureManager = FeatureGrid.extend({\r\n /**\r\n * Options\r\n */\r\n\r\n options: {\r\n attribution: null,\r\n where: '1=1',\r\n fields: ['*'],\r\n from: false,\r\n to: false,\r\n timeField: false,\r\n timeFilterMode: 'server',\r\n simplifyFactor: 0,\r\n precision: 6,\r\n fetchAllFeatures: false\r\n },\r\n\r\n /**\r\n * Constructor\r\n */\r\n\r\n initialize: function (options) {\r\n FeatureGrid.prototype.initialize.call(this, options);\r\n\r\n options = getUrlParams(options);\r\n options = Util.setOptions(this, options);\r\n\r\n this.service = featureLayerService(options);\r\n this.service.addEventParent(this);\r\n\r\n // use case insensitive regex to look for common fieldnames used for indexing\r\n if (this.options.fields[0] !== '*') {\r\n var oidCheck = false;\r\n for (var i = 0; i < this.options.fields.length; i++) {\r\n if (this.options.fields[i].match(/^(OBJECTID|FID|OID|ID)$/i)) {\r\n oidCheck = true;\r\n }\r\n }\r\n if (oidCheck === false) {\r\n warn(\r\n 'no known esriFieldTypeOID field detected in fields Array. Please add an attribute field containing unique IDs to ensure the layer can be drawn correctly.'\r\n );\r\n }\r\n }\r\n\r\n if (this.options.timeField.start && this.options.timeField.end) {\r\n this._startTimeIndex = new BinarySearchIndex();\r\n this._endTimeIndex = new BinarySearchIndex();\r\n } else if (this.options.timeField) {\r\n this._timeIndex = new BinarySearchIndex();\r\n }\r\n\r\n this._cache = {};\r\n this._currentSnapshot = []; // cache of what layers should be active\r\n this._activeRequests = 0;\r\n },\r\n\r\n /**\r\n * Layer Interface\r\n */\r\n\r\n onAdd: function (map) {\r\n // include 'Powered by Esri' in map attribution\r\n setEsriAttribution(map);\r\n\r\n this.service.metadata(function (err, metadata) {\r\n if (!err) {\r\n var supportedFormats = metadata.supportedQueryFormats;\r\n\r\n // Check if someone has requested that we don't use geoJSON, even if it's available\r\n var forceJsonFormat = false;\r\n if (\r\n this.service.options.isModern === false ||\r\n this.options.fetchAllFeatures\r\n ) {\r\n forceJsonFormat = true;\r\n }\r\n\r\n // Unless we've been told otherwise, check to see whether service can emit GeoJSON natively\r\n if (\r\n !forceJsonFormat &&\r\n supportedFormats &&\r\n supportedFormats.indexOf('geoJSON') !== -1\r\n ) {\r\n this.service.options.isModern = true;\r\n }\r\n\r\n if (metadata.objectIdField) {\r\n this.service.options.idAttribute = metadata.objectIdField;\r\n }\r\n\r\n // add copyright text listed in service metadata\r\n if (\r\n !this.options.attribution &&\r\n map.attributionControl &&\r\n metadata.copyrightText\r\n ) {\r\n this.options.attribution = metadata.copyrightText;\r\n map.attributionControl.addAttribution(this.getAttribution());\r\n }\r\n }\r\n }, this);\r\n\r\n map.on('zoomend', this._handleZoomChange, this);\r\n\r\n return FeatureGrid.prototype.onAdd.call(this, map);\r\n },\r\n\r\n onRemove: function (map) {\r\n removeEsriAttribution(map);\r\n map.off('zoomend', this._handleZoomChange, this);\r\n\r\n return FeatureGrid.prototype.onRemove.call(this, map);\r\n },\r\n\r\n getAttribution: function () {\r\n return this.options.attribution;\r\n },\r\n\r\n /**\r\n * Feature Management\r\n */\r\n\r\n createCell: function (bounds, coords) {\r\n // dont fetch features outside the scale range defined for the layer\r\n if (this._visibleZoom()) {\r\n this._requestFeatures(bounds, coords);\r\n }\r\n },\r\n\r\n _requestFeatures: function (bounds, coords, callback, offset) {\r\n this._activeRequests++;\r\n\r\n // default param\r\n offset = offset || 0;\r\n\r\n var originalWhere = this.options.where;\r\n\r\n // our first active request fires loading\r\n if (this._activeRequests === 1) {\r\n this.fire(\r\n 'loading',\r\n {\r\n bounds: bounds\r\n },\r\n true\r\n );\r\n }\r\n\r\n return this._buildQuery(bounds, offset).run(function (\r\n error,\r\n featureCollection,\r\n response\r\n ) {\r\n if (response && response.exceededTransferLimit) {\r\n this.fire('drawlimitexceeded');\r\n }\r\n\r\n // the where changed while this request was being run so don't it.\r\n if (this.options.where !== originalWhere) {\r\n return;\r\n }\r\n\r\n // no error, features\r\n if (!error && featureCollection && featureCollection.features.length) {\r\n // schedule adding features until the next animation frame\r\n Util.requestAnimFrame(\r\n Util.bind(function () {\r\n this._addFeatures(featureCollection.features, coords);\r\n this._postProcessFeatures(bounds);\r\n }, this)\r\n );\r\n }\r\n\r\n // no error, no features\r\n if (!error && featureCollection && !featureCollection.features.length) {\r\n this._postProcessFeatures(bounds);\r\n }\r\n\r\n if (error) {\r\n this._postProcessFeatures(bounds);\r\n }\r\n\r\n if (callback) {\r\n callback.call(this, error, featureCollection);\r\n }\r\n if (\r\n response &&\r\n (response.exceededTransferLimit ||\r\n (response.properties && response.properties.exceededTransferLimit)) &&\r\n this.options.fetchAllFeatures\r\n ) {\r\n this._requestFeatures(\r\n bounds,\r\n coords,\r\n callback,\r\n offset + featureCollection.features.length\r\n );\r\n }\r\n },\r\n this);\r\n },\r\n\r\n _postProcessFeatures: function (bounds) {\r\n // deincrement the request counter now that we have processed features\r\n this._activeRequests--;\r\n\r\n // if there are no more active requests fire a load event for this view\r\n if (this._activeRequests <= 0) {\r\n this.fire('load', {\r\n bounds: bounds\r\n });\r\n }\r\n },\r\n\r\n _cacheKey: function (coords) {\r\n return coords.z + ':' + coords.x + ':' + coords.y;\r\n },\r\n\r\n _addFeatures: function (features, coords) {\r\n // coords is optional - will be false if coming from addFeatures() function\r\n if (coords) {\r\n var key = this._cacheKey(coords);\r\n this._cache[key] = this._cache[key] || [];\r\n }\r\n\r\n for (var i = features.length - 1; i >= 0; i--) {\r\n var id = features[i].id;\r\n\r\n if (this._currentSnapshot.indexOf(id) === -1) {\r\n this._currentSnapshot.push(id);\r\n }\r\n if (typeof key !== 'undefined' && this._cache[key].indexOf(id) === -1) {\r\n this._cache[key].push(id);\r\n }\r\n }\r\n\r\n if (this.options.timeField) {\r\n this._buildTimeIndexes(features);\r\n }\r\n\r\n this.createLayers(features);\r\n },\r\n\r\n _buildQuery: function (bounds, offset) {\r\n var query = this.service\r\n .query()\r\n .intersects(bounds)\r\n .where(this.options.where)\r\n .fields(this.options.fields)\r\n .precision(this.options.precision);\r\n\r\n if (this.options.fetchAllFeatures && !isNaN(parseInt(offset))) {\r\n query = query.offset(offset);\r\n }\r\n\r\n query.params['resultType'] = 'tile';\r\n\r\n if (this.options.requestParams) {\r\n Util.extend(query.params, this.options.requestParams);\r\n }\r\n\r\n if (this.options.simplifyFactor) {\r\n query.simplify(this._map, this.options.simplifyFactor);\r\n }\r\n\r\n if (\r\n this.options.timeFilterMode === 'server' &&\r\n this.options.from &&\r\n this.options.to\r\n ) {\r\n query.between(this.options.from, this.options.to);\r\n }\r\n\r\n return query;\r\n },\r\n\r\n /**\r\n * Where Methods\r\n */\r\n\r\n setWhere: function (where, callback, context) {\r\n this.options.where = where && where.length ? where : '1=1';\r\n\r\n var oldSnapshot = [];\r\n var newSnapshot = [];\r\n var pendingRequests = 0;\r\n var requestError = null;\r\n var requestCallback = Util.bind(function (error, featureCollection) {\r\n if (error) {\r\n requestError = error;\r\n }\r\n\r\n if (featureCollection) {\r\n for (var i = featureCollection.features.length - 1; i >= 0; i--) {\r\n newSnapshot.push(featureCollection.features[i].id);\r\n }\r\n }\r\n\r\n pendingRequests--;\r\n\r\n if (\r\n pendingRequests <= 0 &&\r\n this._visibleZoom() &&\r\n where === this.options.where // the where is still the same so use this one\r\n ) {\r\n this._currentSnapshot = newSnapshot;\r\n // schedule adding features for the next animation frame\r\n Util.requestAnimFrame(\r\n Util.bind(function () {\r\n this.removeLayers(oldSnapshot);\r\n this.addLayers(newSnapshot);\r\n if (callback) {\r\n callback.call(context, requestError);\r\n }\r\n }, this)\r\n );\r\n }\r\n }, this);\r\n\r\n for (var i = this._currentSnapshot.length - 1; i >= 0; i--) {\r\n oldSnapshot.push(this._currentSnapshot[i]);\r\n }\r\n\r\n this._cache = {};\r\n\r\n for (var key in this._cells) {\r\n pendingRequests++;\r\n var coords = this._keyToCellCoords(key);\r\n var bounds = this._cellCoordsToBounds(coords);\r\n this._requestFeatures(bounds, coords, requestCallback);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n getWhere: function () {\r\n return this.options.where;\r\n },\r\n\r\n /**\r\n * Time Range Methods\r\n */\r\n\r\n getTimeRange: function () {\r\n return [this.options.from, this.options.to];\r\n },\r\n\r\n setTimeRange: function (from, to, callback, context) {\r\n var oldFrom = this.options.from;\r\n var oldTo = this.options.to;\r\n var pendingRequests = 0;\r\n var requestError = null;\r\n var requestCallback = Util.bind(function (error) {\r\n if (error) {\r\n requestError = error;\r\n }\r\n this._filterExistingFeatures(oldFrom, oldTo, from, to);\r\n\r\n pendingRequests--;\r\n\r\n if (callback && pendingRequests <= 0) {\r\n callback.call(context, requestError);\r\n }\r\n }, this);\r\n\r\n this.options.from = from;\r\n this.options.to = to;\r\n\r\n this._filterExistingFeatures(oldFrom, oldTo, from, to);\r\n\r\n if (this.options.timeFilterMode === 'server') {\r\n for (var key in this._cells) {\r\n pendingRequests++;\r\n var coords = this._keyToCellCoords(key);\r\n var bounds = this._cellCoordsToBounds(coords);\r\n this._requestFeatures(bounds, coords, requestCallback);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n refresh: function () {\r\n this.setWhere(this.options.where);\r\n },\r\n\r\n _filterExistingFeatures: function (oldFrom, oldTo, newFrom, newTo) {\r\n var layersToRemove =\r\n oldFrom && oldTo\r\n ? this._getFeaturesInTimeRange(oldFrom, oldTo)\r\n : this._currentSnapshot;\r\n var layersToAdd = this._getFeaturesInTimeRange(newFrom, newTo);\r\n\r\n if (layersToAdd.indexOf) {\r\n for (var i = 0; i < layersToAdd.length; i++) {\r\n var shouldRemoveLayer = layersToRemove.indexOf(layersToAdd[i]);\r\n if (shouldRemoveLayer >= 0) {\r\n layersToRemove.splice(shouldRemoveLayer, 1);\r\n }\r\n }\r\n }\r\n\r\n // schedule adding features until the next animation frame\r\n Util.requestAnimFrame(\r\n Util.bind(function () {\r\n this.removeLayers(layersToRemove);\r\n this.addLayers(layersToAdd);\r\n }, this)\r\n );\r\n },\r\n\r\n _getFeaturesInTimeRange: function (start, end) {\r\n var ids = [];\r\n var search;\r\n\r\n if (this.options.timeField.start && this.options.timeField.end) {\r\n var startTimes = this._startTimeIndex.between(start, end);\r\n var endTimes = this._endTimeIndex.between(start, end);\r\n search = startTimes.concat(endTimes);\r\n } else if (this._timeIndex) {\r\n search = this._timeIndex.between(start, end);\r\n } else {\r\n warn(\r\n 'You must set timeField in the layer constructor in order to manipulate the start and end time filter.'\r\n );\r\n return [];\r\n }\r\n\r\n for (var i = search.length - 1; i >= 0; i--) {\r\n ids.push(search[i].id);\r\n }\r\n\r\n return ids;\r\n },\r\n\r\n _buildTimeIndexes: function (geojson) {\r\n var i;\r\n var feature;\r\n if (this.options.timeField.start && this.options.timeField.end) {\r\n var startTimeEntries = [];\r\n var endTimeEntries = [];\r\n for (i = geojson.length - 1; i >= 0; i--) {\r\n feature = geojson[i];\r\n startTimeEntries.push({\r\n id: feature.id,\r\n value: new Date(feature.properties[this.options.timeField.start])\r\n });\r\n endTimeEntries.push({\r\n id: feature.id,\r\n value: new Date(feature.properties[this.options.timeField.end])\r\n });\r\n }\r\n this._startTimeIndex.bulkAdd(startTimeEntries);\r\n this._endTimeIndex.bulkAdd(endTimeEntries);\r\n } else {\r\n var timeEntries = [];\r\n for (i = geojson.length - 1; i >= 0; i--) {\r\n feature = geojson[i];\r\n timeEntries.push({\r\n id: feature.id,\r\n value: new Date(feature.properties[this.options.timeField])\r\n });\r\n }\r\n\r\n this._timeIndex.bulkAdd(timeEntries);\r\n }\r\n },\r\n\r\n _featureWithinTimeRange: function (feature) {\r\n if (!this.options.from || !this.options.to) {\r\n return true;\r\n }\r\n\r\n var from = +this.options.from.valueOf();\r\n var to = +this.options.to.valueOf();\r\n\r\n if (typeof this.options.timeField === 'string') {\r\n var date = +feature.properties[this.options.timeField];\r\n return date >= from && date <= to;\r\n }\r\n\r\n if (this.options.timeField.start && this.options.timeField.end) {\r\n var startDate = +feature.properties[this.options.timeField.start];\r\n var endDate = +feature.properties[this.options.timeField.end];\r\n return (\r\n (startDate >= from && startDate <= to) ||\r\n (endDate >= from && endDate <= to) ||\r\n (startDate <= from && endDate >= to)\r\n );\r\n }\r\n },\r\n\r\n _visibleZoom: function () {\r\n // check to see whether the current zoom level of the map is within the optional limit defined for the FeatureLayer\r\n if (!this._map) {\r\n return false;\r\n }\r\n var zoom = this._map.getZoom();\r\n if (zoom > this.options.maxZoom || zoom < this.options.minZoom) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n },\r\n\r\n _handleZoomChange: function () {\r\n if (!this._visibleZoom()) {\r\n // if we have moved outside the visible zoom range clear the current snapshot, no layers should be active\r\n this.removeLayers(this._currentSnapshot);\r\n this._currentSnapshot = [];\r\n } else {\r\n /*\r\n for every cell in this._cells\r\n 1. Get the cache key for the coords of the cell\r\n 2. If this._cache[key] exists it will be an array of feature IDs.\r\n 3. Call this.addLayers(this._cache[key]) to instruct the feature layer to add the layers back.\r\n */\r\n for (var i in this._cells) {\r\n var coords = this._cells[i].coords;\r\n var key = this._cacheKey(coords);\r\n if (this._cache[key]) {\r\n this.addLayers(this._cache[key]);\r\n }\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Service Methods\r\n */\r\n\r\n authenticate: function (token) {\r\n this.service.authenticate(token);\r\n return this;\r\n },\r\n\r\n metadata: function (callback, context) {\r\n this.service.metadata(callback, context);\r\n return this;\r\n },\r\n\r\n query: function () {\r\n return this.service.query();\r\n },\r\n\r\n _getMetadata: function (callback) {\r\n if (this._metadata) {\r\n var error;\r\n callback(error, this._metadata);\r\n } else {\r\n this.metadata(\r\n Util.bind(function (error, response) {\r\n this._metadata = response;\r\n callback(error, this._metadata);\r\n }, this)\r\n );\r\n }\r\n },\r\n\r\n addFeature: function (feature, callback, context) {\r\n this.addFeatures(feature, callback, context);\r\n },\r\n\r\n addFeatures: function (features, callback, context) {\r\n this._getMetadata(\r\n Util.bind(function (error, metadata) {\r\n if (error) {\r\n if (callback) {\r\n callback.call(this, error, null);\r\n }\r\n return;\r\n }\r\n // GeoJSON featureCollection or simple feature\r\n var featuresArray = features.features ? features.features : [features];\r\n\r\n this.service.addFeatures(\r\n features,\r\n Util.bind(function (error, response) {\r\n if (!error) {\r\n for (var i = featuresArray.length - 1; i >= 0; i--) {\r\n // assign ID from result to appropriate objectid field from service metadata\r\n featuresArray[i].properties[metadata.objectIdField] =\r\n featuresArray.length > 1\r\n ? response[i].objectId\r\n : response.objectId;\r\n // we also need to update the geojson id for createLayers() to function\r\n featuresArray[i].id =\r\n featuresArray.length > 1\r\n ? response[i].objectId\r\n : response.objectId;\r\n }\r\n this._addFeatures(featuresArray);\r\n }\r\n\r\n if (callback) {\r\n callback.call(context, error, response);\r\n }\r\n }, this)\r\n );\r\n }, this)\r\n );\r\n },\r\n\r\n updateFeature: function (feature, callback, context) {\r\n this.updateFeatures(feature, callback, context);\r\n },\r\n\r\n updateFeatures: function (features, callback, context) {\r\n // GeoJSON featureCollection or simple feature\r\n var featuresArray = features.features ? features.features : [features];\r\n this.service.updateFeatures(\r\n features,\r\n function (error, response) {\r\n if (!error) {\r\n for (var i = featuresArray.length - 1; i >= 0; i--) {\r\n this.removeLayers([featuresArray[i].id], true);\r\n }\r\n this._addFeatures(featuresArray);\r\n }\r\n\r\n if (callback) {\r\n callback.call(context, error, response);\r\n }\r\n },\r\n this\r\n );\r\n },\r\n\r\n deleteFeature: function (id, callback, context) {\r\n this.deleteFeatures(id, callback, context);\r\n },\r\n\r\n deleteFeatures: function (ids, callback, context) {\r\n return this.service.deleteFeatures(\r\n ids,\r\n function (error, response) {\r\n var responseArray = response.length ? response : [response];\r\n if (!error && responseArray.length > 0) {\r\n for (var i = responseArray.length - 1; i >= 0; i--) {\r\n this.removeLayers([responseArray[i].objectId], true);\r\n }\r\n }\r\n if (callback) {\r\n callback.call(context, error, response);\r\n }\r\n },\r\n this\r\n );\r\n }\r\n});\r\n","import { Path, Util, GeoJSON, latLng } from 'leaflet';\r\nimport { FeatureManager } from './FeatureManager';\r\nimport { warn } from '../../Util';\r\n\r\nexport var FeatureLayer = FeatureManager.extend({\r\n options: {\r\n cacheLayers: true\r\n },\r\n\r\n /**\r\n * Constructor\r\n */\r\n initialize: function (options) {\r\n if (options.apikey) {\r\n options.token = options.apikey;\r\n }\r\n FeatureManager.prototype.initialize.call(this, options);\r\n this._originalStyle = this.options.style;\r\n this._layers = {};\r\n },\r\n\r\n /**\r\n * Layer Interface\r\n */\r\n\r\n onRemove: function (map) {\r\n for (var i in this._layers) {\r\n map.removeLayer(this._layers[i]);\r\n // trigger the event when the entire featureLayer is removed from the map\r\n this.fire(\r\n 'removefeature',\r\n {\r\n feature: this._layers[i].feature,\r\n permanent: false\r\n },\r\n true\r\n );\r\n }\r\n\r\n return FeatureManager.prototype.onRemove.call(this, map);\r\n },\r\n\r\n createNewLayer: function (geojson) {\r\n var layer = GeoJSON.geometryToLayer(geojson, this.options);\r\n // trap for GeoJSON without geometry\r\n if (layer) {\r\n layer.defaultOptions = layer.options;\r\n }\r\n return layer;\r\n },\r\n\r\n _updateLayer: function (layer, geojson) {\r\n // convert the geojson coordinates into a Leaflet LatLng array/nested arrays\r\n // pass it to setLatLngs to update layer geometries\r\n var latlngs = [];\r\n var coordsToLatLng = this.options.coordsToLatLng || GeoJSON.coordsToLatLng;\r\n\r\n // copy new attributes, if present\r\n if (geojson.properties) {\r\n layer.feature.properties = geojson.properties;\r\n }\r\n\r\n switch (geojson.geometry.type) {\r\n case 'Point':\r\n latlngs = GeoJSON.coordsToLatLng(geojson.geometry.coordinates);\r\n layer.setLatLng(latlngs);\r\n break;\r\n case 'LineString':\r\n latlngs = GeoJSON.coordsToLatLngs(\r\n geojson.geometry.coordinates,\r\n 0,\r\n coordsToLatLng\r\n );\r\n layer.setLatLngs(latlngs);\r\n break;\r\n case 'MultiLineString':\r\n latlngs = GeoJSON.coordsToLatLngs(\r\n geojson.geometry.coordinates,\r\n 1,\r\n coordsToLatLng\r\n );\r\n layer.setLatLngs(latlngs);\r\n break;\r\n case 'Polygon':\r\n latlngs = GeoJSON.coordsToLatLngs(\r\n geojson.geometry.coordinates,\r\n 1,\r\n coordsToLatLng\r\n );\r\n layer.setLatLngs(latlngs);\r\n break;\r\n case 'MultiPolygon':\r\n latlngs = GeoJSON.coordsToLatLngs(\r\n geojson.geometry.coordinates,\r\n 2,\r\n coordsToLatLng\r\n );\r\n layer.setLatLngs(latlngs);\r\n break;\r\n }\r\n\r\n // update symbol/style\r\n this.redraw(layer.feature.id);\r\n },\r\n\r\n /**\r\n * Feature Management Methods\r\n */\r\n\r\n createLayers: function (features) {\r\n for (var i = features.length - 1; i >= 0; i--) {\r\n var geojson = features[i];\r\n\r\n var layer = this._layers[geojson.id];\r\n var newLayer;\r\n\r\n if (\r\n this._visibleZoom() &&\r\n layer &&\r\n !this._map.hasLayer(layer) &&\r\n (!this.options.timeField || this._featureWithinTimeRange(geojson))\r\n ) {\r\n this._map.addLayer(layer);\r\n this.fire(\r\n 'addfeature',\r\n {\r\n feature: layer.feature\r\n },\r\n true\r\n );\r\n }\r\n\r\n // update geometry if the layer already existed.\r\n if (layer && (layer.setLatLngs || layer.setLatLng)) {\r\n this._updateLayer(layer, geojson);\r\n }\r\n\r\n if (!layer) {\r\n newLayer = this.createNewLayer(geojson);\r\n\r\n if (!newLayer) {\r\n warn('invalid GeoJSON encountered');\r\n } else {\r\n newLayer.feature = geojson;\r\n\r\n // bubble events from individual layers to the feature layer\r\n newLayer.addEventParent(this);\r\n\r\n if (this.options.onEachFeature) {\r\n this.options.onEachFeature(newLayer.feature, newLayer);\r\n }\r\n\r\n // cache the layer\r\n this._layers[newLayer.feature.id] = newLayer;\r\n\r\n // style the layer\r\n this.setFeatureStyle(newLayer.feature.id, this.options.style);\r\n\r\n this.fire(\r\n 'createfeature',\r\n {\r\n feature: newLayer.feature\r\n },\r\n true\r\n );\r\n\r\n // add the layer if the current zoom level is inside the range defined for the layer, it is within the current time bounds or our layer is not time enabled\r\n if (\r\n this._visibleZoom() &&\r\n (!this.options.timeField ||\r\n (this.options.timeField && this._featureWithinTimeRange(geojson)))\r\n ) {\r\n this._map.addLayer(newLayer);\r\n }\r\n }\r\n }\r\n }\r\n },\r\n\r\n addLayers: function (ids) {\r\n for (var i = ids.length - 1; i >= 0; i--) {\r\n var layer = this._layers[ids[i]];\r\n if (\r\n layer &&\r\n (!this.options.timeField || this._featureWithinTimeRange(layer.feature))\r\n ) {\r\n this._map.addLayer(layer);\r\n this.fire(\r\n 'addfeature',\r\n {\r\n feature: layer.feature\r\n },\r\n true\r\n );\r\n }\r\n }\r\n },\r\n\r\n removeLayers: function (ids, permanent) {\r\n for (var i = ids.length - 1; i >= 0; i--) {\r\n var id = ids[i];\r\n var layer = this._layers[id];\r\n if (layer) {\r\n this.fire(\r\n 'removefeature',\r\n {\r\n feature: layer.feature,\r\n permanent: permanent\r\n },\r\n true\r\n );\r\n this._map.removeLayer(layer);\r\n }\r\n if (layer && permanent) {\r\n delete this._layers[id];\r\n }\r\n }\r\n },\r\n\r\n cellEnter: function (bounds, coords) {\r\n if (this._visibleZoom() && !this._zooming && this._map) {\r\n Util.requestAnimFrame(\r\n Util.bind(function () {\r\n var cacheKey = this._cacheKey(coords);\r\n var cellKey = this._cellCoordsToKey(coords);\r\n var layers = this._cache[cacheKey];\r\n if (this._activeCells[cellKey] && layers) {\r\n this.addLayers(layers);\r\n }\r\n }, this)\r\n );\r\n }\r\n },\r\n\r\n cellLeave: function (bounds, coords) {\r\n if (!this._zooming) {\r\n Util.requestAnimFrame(\r\n Util.bind(function () {\r\n if (this._map) {\r\n var cacheKey = this._cacheKey(coords);\r\n var cellKey = this._cellCoordsToKey(coords);\r\n var layers = this._cache[cacheKey];\r\n var mapBounds = this._map.getBounds();\r\n if (!this._activeCells[cellKey] && layers) {\r\n var removable = true;\r\n\r\n for (var i = 0; i < layers.length; i++) {\r\n var layer = this._layers[layers[i]];\r\n if (\r\n layer &&\r\n layer.getBounds &&\r\n mapBounds.intersects(layer.getBounds())\r\n ) {\r\n removable = false;\r\n }\r\n }\r\n\r\n if (removable) {\r\n this.removeLayers(layers, !this.options.cacheLayers);\r\n }\r\n\r\n if (!this.options.cacheLayers && removable) {\r\n delete this._cache[cacheKey];\r\n delete this._cells[cellKey];\r\n delete this._activeCells[cellKey];\r\n }\r\n }\r\n }\r\n }, this)\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Styling Methods\r\n */\r\n\r\n resetStyle: function () {\r\n this.options.style = this._originalStyle;\r\n this.eachFeature(function (layer) {\r\n this.resetFeatureStyle(layer.feature.id);\r\n }, this);\r\n return this;\r\n },\r\n\r\n setStyle: function (style) {\r\n this.options.style = style;\r\n this.eachFeature(function (layer) {\r\n this.setFeatureStyle(layer.feature.id, style);\r\n }, this);\r\n return this;\r\n },\r\n\r\n resetFeatureStyle: function (id) {\r\n var layer = this._layers[id];\r\n var style = this._originalStyle || Path.prototype.options;\r\n if (layer) {\r\n Util.extend(layer.options, layer.defaultOptions);\r\n this.setFeatureStyle(id, style);\r\n }\r\n return this;\r\n },\r\n\r\n setFeatureStyle: function (id, style) {\r\n var layer = this._layers[id];\r\n if (typeof style === 'function') {\r\n style = style(layer.feature);\r\n }\r\n if (layer.setStyle) {\r\n layer.setStyle(style);\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Utility Methods\r\n */\r\n\r\n eachActiveFeature: function (fn, context) {\r\n // figure out (roughly) which layers are in view\r\n if (this._map) {\r\n var activeBounds = this._map.getBounds();\r\n for (var i in this._layers) {\r\n if (this._currentSnapshot.indexOf(this._layers[i].feature.id) !== -1) {\r\n // a simple point in poly test for point geometries\r\n if (\r\n typeof this._layers[i].getLatLng === 'function' &&\r\n activeBounds.contains(this._layers[i].getLatLng())\r\n ) {\r\n fn.call(context, this._layers[i]);\r\n } else if (\r\n typeof this._layers[i].getBounds === 'function' &&\r\n activeBounds.intersects(this._layers[i].getBounds())\r\n ) {\r\n // intersecting bounds check for polyline and polygon geometries\r\n fn.call(context, this._layers[i]);\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n eachFeature: function (fn, context) {\r\n for (var i in this._layers) {\r\n fn.call(context, this._layers[i]);\r\n }\r\n return this;\r\n },\r\n\r\n getFeature: function (id) {\r\n return this._layers[id];\r\n },\r\n\r\n bringToBack: function () {\r\n this.eachFeature(function (layer) {\r\n if (layer.bringToBack) {\r\n layer.bringToBack();\r\n }\r\n });\r\n },\r\n\r\n bringToFront: function () {\r\n this.eachFeature(function (layer) {\r\n if (layer.bringToFront) {\r\n layer.bringToFront();\r\n }\r\n });\r\n },\r\n\r\n redraw: function (id) {\r\n if (id) {\r\n this._redraw(id);\r\n }\r\n return this;\r\n },\r\n\r\n _redraw: function (id) {\r\n var layer = this._layers[id];\r\n var geojson = layer.feature;\r\n\r\n // if this looks like a marker\r\n if (layer && layer.setIcon && this.options.pointToLayer) {\r\n // update custom symbology, if necessary\r\n if (this.options.pointToLayer) {\r\n var getIcon = this.options.pointToLayer(\r\n geojson,\r\n latLng(\r\n geojson.geometry.coordinates[1],\r\n geojson.geometry.coordinates[0]\r\n )\r\n );\r\n var updatedIcon = getIcon.options.icon;\r\n layer.setIcon(updatedIcon);\r\n }\r\n }\r\n\r\n // looks like a vector marker (circleMarker)\r\n if (layer && layer.setStyle && this.options.pointToLayer) {\r\n var getStyle = this.options.pointToLayer(\r\n geojson,\r\n latLng(geojson.geometry.coordinates[1], geojson.geometry.coordinates[0])\r\n );\r\n var updatedStyle = getStyle.options;\r\n this.setFeatureStyle(geojson.id, updatedStyle);\r\n }\r\n\r\n // looks like a path (polygon/polyline)\r\n if (layer && layer.setStyle && this.options.style) {\r\n this.resetStyle(geojson.id);\r\n }\r\n }\r\n});\r\n\r\nexport function featureLayer (options) {\r\n return new FeatureLayer(options);\r\n}\r\n\r\nexport default featureLayer;\r\n","// export version\r\nimport packageInfo from '../package.json';\r\nvar version = packageInfo.version;\r\nexport { version as VERSION };\r\n\r\n// import base\r\nexport { Support } from './Support';\r\nexport { options } from './Options';\r\nexport { EsriUtil as Util } from './Util';\r\nexport { get, post, request } from './Request';\r\n\r\n// export tasks\r\nexport { Task, task } from './Tasks/Task';\r\nexport { Query, query } from './Tasks/Query';\r\nexport { Find, find } from './Tasks/Find';\r\nexport { Identify, identify } from './Tasks/Identify';\r\nexport { IdentifyFeatures, identifyFeatures } from './Tasks/IdentifyFeatures';\r\nexport { IdentifyImage, identifyImage } from './Tasks/IdentifyImage';\r\n\r\n// export services\r\nexport { Service, service } from './Services/Service';\r\nexport { MapService, mapService } from './Services/MapService';\r\nexport { ImageService, imageService } from './Services/ImageService';\r\nexport { FeatureLayerService, featureLayerService } from './Services/FeatureLayerService';\r\n\r\n// export layers\r\nexport { BasemapLayer, basemapLayer } from './Layers/BasemapLayer';\r\nexport { TiledMapLayer, tiledMapLayer } from './Layers/TiledMapLayer';\r\nexport { RasterLayer } from './Layers/RasterLayer';\r\nexport { ImageMapLayer, imageMapLayer } from './Layers/ImageMapLayer';\r\nexport { DynamicMapLayer, dynamicMapLayer } from './Layers/DynamicMapLayer';\r\nexport { FeatureManager } from './Layers/FeatureLayer/FeatureManager';\r\nexport { FeatureLayer, featureLayer } from './Layers/FeatureLayer/FeatureLayer';\r\n"],"names":["Util","DomUtil","arcgisToGeoJSON","geojsonToArcGIS","g2a","a2g","latLng","latLngBounds","LatLngBounds","LatLng","GeoJSON","Class","point","Evented","TileLayer","DomEvent","CRS","ImageOverlay","Layer","popup","bounds","Browser","Point","Bounds","Path"],"mappings":"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"}