/* esri-leaflet - v3.0.4 - Mon Dec 06 2021 15:19:56 GMT-0600 (Central Standard Time)
* Copyright (c) 2021 Environmental Systems Research Institute, Inc.
* Apache-2.0 */
!(function (t, e) {
"object" == typeof exports && "undefined" != typeof module
? e(exports, require("leaflet"))
: "function" == typeof define && define.amd
? define(["exports", "leaflet"], e)
: e(
(((t = "undefined" != typeof globalThis ? globalThis : t || self).L =
t.L || {}),
(t.L.esri = {})),
t.L
);
})(this, function (t, g) {
"use strict";
var e = "3.0.4",
i =
window.XMLHttpRequest && "withCredentials" in new window.XMLHttpRequest(),
s = "" === document.documentElement.style.pointerEvents,
a = { cors: i, pointerEvents: s },
r = { attributionWidthOffset: 55 },
n = 0;
function l(t) {
var e,
i,
s,
r = "";
for (var o in ((t.f = t.f || "json"), t)) {
t.hasOwnProperty(o) &&
((e = t[o]),
(i = Object.prototype.toString.call(e)),
r.length && (r += "&"),
(s =
"[object Array]" === i
? "[object Object]" === Object.prototype.toString.call(e[0])
? JSON.stringify(e)
: e.join(",")
: "[object Object]" === i
? JSON.stringify(e)
: "[object Date]" === i
? e.valueOf()
: e),
(r += encodeURIComponent(o) + "=" + encodeURIComponent(s)));
}
return r;
}
function u(s, r) {
var o = new window.XMLHttpRequest();
return (
(o.onerror = function (t) {
(o.onreadystatechange = g.Util.falseFn),
s.call(
r,
{ error: { code: 500, message: "XMLHttpRequest error" } },
null
);
}),
(o.onreadystatechange = function () {
var e, i;
if (4 === o.readyState) {
try {
e = JSON.parse(o.responseText);
} catch (t) {
(e = null),
(i = {
code: 500,
message:
"Could not parse response as JSON. This could also be caused by a CORS or XMLHttpRequest error.",
});
}
!i && e.error && ((i = e.error), (e = null)),
(o.onerror = g.Util.falseFn),
s.call(r, i, e);
}
}),
(o.ontimeout = function () {
this.onerror();
}),
o
);
}
function o(t, e, i, s) {
var r = u(i, s);
return (
r.open("POST", t),
null != s && void 0 !== s.options && (r.timeout = s.options.timeout),
r.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8"
),
r.send(l(e)),
r
);
}
function h(t, e, i, s) {
var r = u(i, s);
return (
r.open("GET", t + "?" + l(e), !0),
null != s &&
void 0 !== s.options &&
((r.timeout = s.options.timeout),
s.options.withCredentials && (r.withCredentials = !0)),
r.send(null),
r
);
}
function c(t, e, i, s) {
var r = l(e),
o = u(i, s),
n = (t + "?" + r).length;
if (
(n <= 2e3 && a.cors
? o.open("GET", t + "?" + r)
: 2e3 < n &&
a.cors &&
(o.open("POST", t),
o.setRequestHeader(
"Content-Type",
"application/x-www-form-urlencoded; charset=UTF-8"
)),
null != s &&
void 0 !== s.options &&
((o.timeout = s.options.timeout),
s.options.withCredentials && (o.withCredentials = !0)),
n <= 2e3 && a.cors)
)
o.send(null);
else {
if (!(2e3 < n && a.cors))
return n <= 2e3 && !a.cors
? p(t, e, i, s)
: void m(
"a request to " +
t +
" was longer then 2000 characters and this browser cannot make a cross-domain post request. Please use a proxy http://esri.github.io/esri-leaflet/api-reference/request.html"
);
o.send(r);
}
return o;
}
function p(t, e, s, r) {
window._EsriLeafletCallbacks = window._EsriLeafletCallbacks || {};
var o = "c" + n;
(e.callback = "window._EsriLeafletCallbacks." + o),
(window._EsriLeafletCallbacks[o] = function (t) {
var e, i;
!0 !== window._EsriLeafletCallbacks[o] &&
("[object Object]" !== (i = Object.prototype.toString.call(t)) &&
"[object Array]" !== i &&
((e = {
error: {
code: 500,
message: "Expected array or object as JSONP response",
},
}),
(t = null)),
!e && t.error && ((e = t), (t = null)),
s.call(r, e, t),
(window._EsriLeafletCallbacks[o] = !0));
});
var i = g.DomUtil.create("script", null, document.body);
return (
(i.type = "text/javascript"),
(i.src = t + "?" + l(e)),
(i.id = o),
(i.onerror = function (t) {
t &&
!0 !== window._EsriLeafletCallbacks[o] &&
(s.call(r, {
error: { code: 500, message: "An unknown error occurred" },
}),
(window._EsriLeafletCallbacks[o] = !0));
}),
g.DomUtil.addClass(i, "esri-leaflet-jsonp"),
n++,
{
id: o,
url: i.src,
abort: function () {
window._EsriLeafletCallbacks._callback[o]({
code: 0,
message: "Request aborted.",
});
},
}
);
}
var d = a.cors ? h : p;
function m() {
console && console.warn && console.warn.apply(console, arguments);
}
(d.CORS = h), (d.JSONP = p);
function y(t, e) {
for (var i = 0; i < t.length - 1; i++)
for (var s = 0; s < e.length - 1; s++)
if (
(function (t, e, i, s) {
var r =
(s[0] - i[0]) * (t[1] - i[1]) - (s[1] - i[1]) * (t[0] - i[0]),
o = (e[0] - t[0]) * (t[1] - i[1]) - (e[1] - t[1]) * (t[0] - i[0]),
n = (s[1] - i[1]) * (e[0] - t[0]) - (s[0] - i[0]) * (e[1] - t[1]);
if (0 != n) {
var a = r / n,
l = o / n;
if (0 <= a && a <= 1 && 0 <= l && l <= 1) return !0;
}
return !1;
})(t[i], t[i + 1], e[s], e[s + 1])
)
return !0;
return !1;
}
function _(t) {
return (
(function (t, e) {
for (var i = 0; i < t.length; i++) if (t[i] !== e[i]) return !1;
return !0;
})(t[0], t[t.length - 1]) || t.push(t[0]),
t
);
}
function v(t) {
for (var e, i = 0, s = 0, r = t.length, o = t[s]; s < r - 1; s++)
(i += ((e = t[s + 1])[0] - o[0]) * (e[1] + o[1])), (o = e);
return 0 <= i;
}
function f(t) {
var e = {};
for (var i in t) t.hasOwnProperty(i) && (e[i] = t[i]);
return e;
}
function b(t) {
for (var e, i, s = [], r = [], o = 0; o < t.length; o++) {
var n,
a = _(t[o].slice(0));
a.length < 4 ||
(v(a)
? ((n = [a.slice().reverse()]), s.push(n))
: r.push(a.slice().reverse()));
}
for (var l, u, h, c, p = []; r.length; ) {
i = r.pop();
for (var d = !1, m = s.length - 1; 0 <= m; m--)
if (
((e = s[m][0]),
(h = void 0),
(h = y((l = e), (u = i))),
(c = (function (t, e) {
for (var i = !1, s = -1, r = t.length, o = r - 1; ++s < r; o = s)
((t[s][1] <= e[1] && e[1] < t[o][1]) ||
(t[o][1] <= e[1] && e[1] < t[s][1])) &&
e[0] <
((t[o][0] - t[s][0]) * (e[1] - t[s][1])) /
(t[o][1] - t[s][1]) +
t[s][0] &&
(i = !i);
return i;
})(l, u[0])),
!h && c)
) {
s[m].push(i), (d = !0);
break;
}
d || p.push(i);
}
for (; p.length; ) {
i = p.pop();
var f = !1;
for (m = s.length - 1; 0 <= m; m--)
if (((e = s[m][0]), y(e, i))) {
s[m].push(i), (f = !0);
break;
}
f || s.push([i.reverse()]);
}
return 1 === s.length
? { type: "Polygon", coordinates: s[0] }
: { type: "MultiPolygon", coordinates: s };
}
function x(t) {
var e = [],
i = t.slice(0),
s = _(i.shift().slice(0));
if (4 <= s.length) {
v(s) || s.reverse(), e.push(s);
for (var r = 0; r < i.length; r++) {
var o = _(i[r].slice(0));
4 <= o.length && (v(o) && o.reverse(), e.push(o));
}
}
return e;
}
var S = { request: c, get: d, post: o },
L = function t(e, i) {
var s = {};
if (e.features) {
(s.type = "FeatureCollection"), (s.features = []);
for (var r = 0; r < e.features.length; r++)
s.features.push(t(e.features[r], i));
}
if (
("number" == typeof e.x &&
"number" == typeof e.y &&
((s.type = "Point"),
(s.coordinates = [e.x, e.y]),
"number" == typeof e.z && s.coordinates.push(e.z)),
e.points &&
((s.type = "MultiPoint"), (s.coordinates = e.points.slice(0))),
e.paths &&
(1 === e.paths.length
? ((s.type = "LineString"), (s.coordinates = e.paths[0].slice(0)))
: ((s.type = "MultiLineString"),
(s.coordinates = e.paths.slice(0)))),
e.rings && (s = b(e.rings.slice(0))),
"number" == typeof e.xmin &&
"number" == typeof e.ymin &&
"number" == typeof e.xmax &&
"number" == typeof e.ymax &&
((s.type = "Polygon"),
(s.coordinates = [
[
[e.xmax, e.ymax],
[e.xmin, e.ymax],
[e.xmin, e.ymin],
[e.xmax, e.ymin],
[e.xmax, e.ymax],
],
])),
(e.geometry || e.attributes) &&
((s.type = "Feature"),
(s.geometry = e.geometry ? t(e.geometry) : null),
(s.properties = e.attributes ? f(e.attributes) : null),
e.attributes))
)
try {
s.id = (function (t, e) {
for (
var i = e ? [e, "OBJECTID", "FID"] : ["OBJECTID", "FID"], s = 0;
s < i.length;
s++
) {
var r = i[s];
if (
r in t &&
("string" == typeof t[r] || "number" == typeof t[r])
)
return t[r];
}
throw Error("No valid id attribute found");
})(e.attributes, i);
} catch (t) {}
return (
JSON.stringify(s.geometry) === JSON.stringify({}) &&
(s.geometry = null),
e.spatialReference &&
e.spatialReference.wkid &&
4326 !== e.spatialReference.wkid &&
console.warn(
"Object converted in non-standard crs - " +
JSON.stringify(e.spatialReference)
),
s
);
},
A = function t(e, i) {
i = i || "OBJECTID";
var s,
r = { wkid: 4326 },
o = {};
switch (e.type) {
case "Point":
(o.x = e.coordinates[0]),
(o.y = e.coordinates[1]),
(o.spatialReference = r);
break;
case "MultiPoint":
(o.points = e.coordinates.slice(0)), (o.spatialReference = r);
break;
case "LineString":
(o.paths = [e.coordinates.slice(0)]), (o.spatialReference = r);
break;
case "MultiLineString":
(o.paths = e.coordinates.slice(0)), (o.spatialReference = r);
break;
case "Polygon":
(o.rings = x(e.coordinates.slice(0))), (o.spatialReference = r);
break;
case "MultiPolygon":
(o.rings = (function (t) {
for (var e = [], i = 0; i < t.length; i++)
for (var s = x(t[i]), r = s.length - 1; 0 <= r; r--) {
var o = s[r].slice(0);
e.push(o);
}
return e;
})(e.coordinates.slice(0))),
(o.spatialReference = r);
break;
case "Feature":
e.geometry && (o.geometry = t(e.geometry, i)),
(o.attributes = e.properties ? f(e.properties) : {}),
e.id && (o.attributes[i] = e.id);
break;
case "FeatureCollection":
for (o = [], s = 0; s < e.features.length; s++)
o.push(t(e.features[s], i));
break;
case "GeometryCollection":
for (o = [], s = 0; s < e.geometries.length; s++)
o.push(t(e.geometries[s], i));
}
return o;
},
I =
'Leaflet';
/* @preserve
* @terraformer/arcgis - v2.0.6 - MIT
* Copyright (c) 2012-2020 Environmental Systems Research Institute, Inc.
* Mon May 18 2020 14:30:35 GMT-0700 (Pacific Daylight Time)
*/
/* Copyright (c) 2012-2019 Environmental Systems Research Institute, Inc.
* Apache-2.0 */ function T(t, e) {
return A(t, e);
}
function C(t, e) {
return L(t, e);
}
function w(t) {
if (
"NaN" === t.xmin ||
"NaN" === t.ymin ||
"NaN" === t.xmax ||
"NaN" === t.ymax
)
return null;
var e = g.latLng(t.ymin, t.xmin),
i = g.latLng(t.ymax, t.xmax);
return g.latLngBounds(e, i);
}
function R(t) {
return {
xmin: (t = g.latLngBounds(t)).getSouthWest().lng,
ymin: t.getSouthWest().lat,
xmax: t.getNorthEast().lng,
ymax: t.getNorthEast().lat,
spatialReference: { wkid: 4326 },
};
}
var P = /^(OBJECTID|FID|OID|ID)$/i;
function F(t) {
var e;
if (t.objectIdFieldName) e = t.objectIdFieldName;
else if (t.fields) {
for (var i = 0; i <= t.fields.length - 1; i++)
if ("esriFieldTypeOID" === t.fields[i].type) {
e = t.fields[i].name;
break;
}
if (!e)
for (i = 0; i <= t.fields.length - 1; i++)
if (t.fields[i].name.match(P)) {
e = t.fields[i].name;
break;
}
}
return e;
}
function O(t) {
for (var e in t.attributes) if (e.match(P)) return e;
}
function k(t, e) {
var i = t.features || t.results,
s = i && i.length,
r = e || F(t),
o = { type: "FeatureCollection", features: [] };
if (s)
for (var n = i.length - 1; 0 <= n; n--) {
var a = C(i[n], r || O(i[n]));
o.features.push(a);
}
return o;
}
function M(t) {
return "/" !== (t = g.Util.trim(t))[t.length - 1] && (t += "/"), t;
}
function U(t) {
var e;
return (
-1 !== t.url.indexOf("?") &&
((t.requestParams = t.requestParams || {}),
(e = t.url.substring(t.url.indexOf("?") + 1)),
(t.url = t.url.split("?")[0]),
(t.requestParams = JSON.parse(
'{"' +
decodeURI(e)
.replace(/"/g, '\\"')
.replace(/&/g, '","')
.replace(/=/g, '":"') +
'"}'
))),
(t.url = M(t.url.split("?")[0])),
t
);
}
function G(t) {
return /^(?!.*utility\.arcgis\.com).*\.arcgis\.com.*FeatureServer/i.test(t);
}
function D(t) {
var e;
switch (t) {
case "Point":
e = "esriGeometryPoint";
break;
case "MultiPoint":
e = "esriGeometryMultipoint";
break;
case "LineString":
case "MultiLineString":
e = "esriGeometryPolyline";
break;
case "Polygon":
case "MultiPolygon":
e = "esriGeometryPolygon";
}
return e;
}
function q(t) {
return t.getSize().x - r.attributionWidthOffset + "px";
}
function E(e) {
var t, i;
e.attributionControl &&
(e.attributionControl._esriAttributionLayerCount ||
(e.attributionControl._esriAttributionLayerCount = 0),
0 === e.attributionControl._esriAttributionLayerCount &&
(e.attributionControl._esriAttributionAddedOnce ||
(((t = document.createElement("style")).type = "text/css"),
(t.innerHTML =
".esri-truncated-attribution:hover {white-space: normal;}"),
document.getElementsByTagName("head")[0].appendChild(t),
((i = document.createElement("style")).type = "text/css"),
(i.innerHTML =
".esri-truncated-attribution {vertical-align: -3px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;display: inline-block;transition: 0s white-space;transition-delay: 1s;max-width: " +
q(e) +
";}"),
document.getElementsByTagName("head")[0].appendChild(i),
e.on("resize", function (t) {
e.attributionControl &&
(e.attributionControl._container.style.maxWidth = q(t.target));
}),
(e.attributionControl._esriAttributionAddedOnce = !0)),
e.attributionControl.setPrefix(
I + ' | Powered by Esri'
),
g.DomUtil.addClass(
e.attributionControl._container,
"esri-truncated-attribution:hover"
),
g.DomUtil.addClass(
e.attributionControl._container,
"esri-truncated-attribution"
)),
(e.attributionControl._esriAttributionLayerCount =
e.attributionControl._esriAttributionLayerCount + 1));
}
function B(t) {
t.attributionControl &&
(t.attributionControl._esriAttributionLayerCount &&
1 === t.attributionControl._esriAttributionLayerCount &&
(t.attributionControl.setPrefix(I),
g.DomUtil.removeClass(
t.attributionControl._container,
"esri-truncated-attribution:hover"
),
g.DomUtil.removeClass(
t.attributionControl._container,
"esri-truncated-attribution"
)),
(t.attributionControl._esriAttributionLayerCount =
t.attributionControl._esriAttributionLayerCount - 1));
}
function z(t) {
var e = { geometry: null, geometryType: null };
return t instanceof g.LatLngBounds
? ((e.geometry = R(t)), (e.geometryType = "esriGeometryEnvelope"), e)
: (t.getLatLng && (t = t.getLatLng()),
t instanceof g.LatLng &&
(t = { type: "Point", coordinates: [t.lng, t.lat] }),
t instanceof g.GeoJSON &&
((t = t.getLayers()[0].feature.geometry),
(e.geometry = T(t)),
(e.geometryType = D(t.type))),
t.toGeoJSON && (t = t.toGeoJSON()),
"Feature" === t.type && (t = t.geometry),
"Point" === t.type ||
"LineString" === t.type ||
"Polygon" === t.type ||
"MultiPolygon" === t.type
? ((e.geometry = T(t)), (e.geometryType = D(t.type)), e)
: void m(
"invalid geometry passed to spatial query. Should be L.LatLng, L.LatLngBounds, L.Marker or a GeoJSON Point, Line, Polygon or MultiPolygon object"
));
}
function Z(t, l) {
a.cors &&
c(
t,
{},
g.Util.bind(function (t, e) {
if (!t) {
l._esriAttributions = [];
for (var i = 0; i < e.contributors.length; i++)
for (
var s = e.contributors[i], r = 0;
r < s.coverageAreas.length;
r++
) {
var o = s.coverageAreas[r],
n = g.latLng(o.bbox[0], o.bbox[1]),
a = g.latLng(o.bbox[2], o.bbox[3]);
l._esriAttributions.push({
attribution: s.attribution,
score: o.score,
bounds: g.latLngBounds(n, a),
minZoom: o.zoomMin,
maxZoom: o.zoomMax,
});
}
l._esriAttributions.sort(function (t, e) {
return e.score - t.score;
}),
N({ target: l });
}
}, this)
);
}
function N(t) {
var e = t.target,
i = e._esriAttributions;
if (e && e.attributionControl) {
var s = e.attributionControl._container.querySelector(
".esri-dynamic-attribution"
);
if (s && i) {
for (
var r = "",
o = e.getBounds(),
n = g.latLngBounds(
o.getSouthWest().wrap(),
o.getNorthEast().wrap()
),
a = e.getZoom(),
l = 0;
l < i.length;
l++
) {
var u = i[l],
h = u.attribution;
!r.match(h) &&
u.bounds.intersects(n) &&
a >= u.minZoom &&
a <= u.maxZoom &&
(r += ", " + h);
}
(r = r.substr(2)),
(s.innerHTML = r),
(s.style.maxWidth = q(e)),
e.fire("attributionupdated", { attribution: r });
}
}
}
var j = {
warn: m,
cleanUrl: M,
getUrlParams: U,
isArcgisOnline: G,
geojsonTypeToArcGIS: D,
responseToFeatureCollection: k,
geojsonToArcGIS: T,
arcgisToGeoJSON: C,
boundsToExtent: R,
extentToBounds: w,
calcAttributionWidth: q,
setEsriAttribution: E,
_setGeometry: z,
_getAttributionData: Z,
_updateMapAttribution: N,
_findIdAttributeFromFeature: O,
_findIdAttributeFromResponse: F,
},
W = g.Class.extend({
options: { proxy: !1, useCors: i },
generateSetter: function (e, t) {
return g.Util.bind(function (t) {
return (this.params[e] = t), this;
}, t);
},
initialize: function (t) {
if (
(t.request && t.options
? ((this._service = t), g.Util.setOptions(this, t.options))
: (g.Util.setOptions(this, t), (this.options.url = M(t.url))),
(this.params = g.Util.extend({}, this.params || {})),
this.setters)
)
for (var e in this.setters) {
var i = this.setters[e];
this[e] = this.generateSetter(i, this);
}
},
token: function (t) {
return (
this._service
? this._service.authenticate(t)
: (this.params.token = t),
this
);
},
apikey: function (t) {
return this.token(t);
},
format: function (t) {
return (this.params.returnUnformattedValues = !t), this;
},
request: function (t, e) {
return (
this.options.requestParams &&
g.Util.extend(this.params, this.options.requestParams),
this._service
? this._service.request(this.path, this.params, t, e)
: this._request("request", this.path, this.params, t, e)
);
},
_request: function (t, e, i, s, r) {
var o = this.options.proxy
? this.options.proxy + "?" + this.options.url + e
: this.options.url + e;
return ("get" !== t && "request" !== t) || this.options.useCors
? S[t](o, i, s, r)
: S.get.JSONP(o, i, s, r);
},
});
var J = W.extend({
setters: {
offset: "resultOffset",
limit: "resultRecordCount",
fields: "outFields",
precision: "geometryPrecision",
featureIds: "objectIds",
returnGeometry: "returnGeometry",
returnM: "returnM",
transform: "datumTransformation",
token: "token",
},
path: "query",
params: { returnGeometry: !0, where: "1=1", outSR: 4326, outFields: "*" },
within: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelContains"),
this
);
},
intersects: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelIntersects"),
this
);
},
contains: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelWithin"),
this
);
},
crosses: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelCrosses"),
this
);
},
touches: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelTouches"),
this
);
},
overlaps: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelOverlaps"),
this
);
},
bboxIntersects: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelEnvelopeIntersects"),
this
);
},
indexIntersects: function (t) {
return (
this._setGeometryParams(t),
(this.params.spatialRel = "esriSpatialRelIndexIntersects"),
this
);
},
nearby: function (t, e) {
return (
(t = g.latLng(t)),
(this.params.geometry = [t.lng, t.lat]),
(this.params.geometryType = "esriGeometryPoint"),
(this.params.spatialRel = "esriSpatialRelIntersects"),
(this.params.units = "esriSRUnit_Meter"),
(this.params.distance = e),
(this.params.inSR = 4326),
this
);
},
where: function (t) {
return (this.params.where = t), this;
},
between: function (t, e) {
return (this.params.time = [t.valueOf(), e.valueOf()]), this;
},
simplify: function (t, e) {
var i = Math.abs(t.getBounds().getWest() - t.getBounds().getEast());
return (this.params.maxAllowableOffset = (i / t.getSize().y) * e), this;
},
orderBy: function (t, e) {
return (
(e = e || "ASC"),
(this.params.orderByFields = this.params.orderByFields
? this.params.orderByFields + ","
: ""),
(this.params.orderByFields += [t, e].join(" ")),
this
);
},
run: function (i, s) {
return (
this._cleanParams(),
this.options.isModern ||
(G(this.options.url) && void 0 === this.options.isModern)
? ((this.params.f = "geojson"),
this.request(function (t, e) {
this._trapSQLerrors(t), i.call(s, t, e, e);
}, this))
: this.request(function (t, e) {
this._trapSQLerrors(t), i.call(s, t, e && k(e), e);
}, this)
);
},
count: function (i, t) {
return (
this._cleanParams(),
(this.params.returnCountOnly = !0),
this.request(function (t, e) {
i.call(this, t, e && e.count, e);
}, t)
);
},
ids: function (i, t) {
return (
this._cleanParams(),
(this.params.returnIdsOnly = !0),
this.request(function (t, e) {
i.call(this, t, e && e.objectIds, e);
}, t)
);
},
bounds: function (i, s) {
return (
this._cleanParams(),
(this.params.returnExtentOnly = !0),
this.request(function (t, e) {
e && e.extent && w(e.extent)
? i.call(s, t, w(e.extent), e)
: ((t = { message: "Invalid Bounds" }), i.call(s, t, null, e));
}, s)
);
},
distinct: function () {
return (
(this.params.returnGeometry = !1),
(this.params.returnDistinctValues = !0),
this
);
},
pixelSize: function (t) {
var e = g.point(t);
return (this.params.pixelSize = [e.x, e.y]), this;
},
layer: function (t) {
return (this.path = t + "/query"), this;
},
_trapSQLerrors: function (t) {
t &&
"400" === t.code &&
m(
"one common syntax error in query requests is encasing string values in double quotes instead of single quotes"
);
},
_cleanParams: function () {
delete this.params.returnIdsOnly,
delete this.params.returnExtentOnly,
delete this.params.returnCountOnly;
},
_setGeometryParams: function (t) {
this.params.inSR = 4326;
var e = z(t);
(this.params.geometry = e.geometry),
(this.params.geometryType = e.geometryType);
},
});
function V(t) {
return new J(t);
}
var Q = W.extend({
setters: {
contains: "contains",
text: "searchText",
fields: "searchFields",
spatialReference: "sr",
sr: "sr",
layers: "layers",
returnGeometry: "returnGeometry",
maxAllowableOffset: "maxAllowableOffset",
precision: "geometryPrecision",
dynamicLayers: "dynamicLayers",
returnZ: "returnZ",
returnM: "returnM",
gdbVersion: "gdbVersion",
token: "token",
},
path: "find",
params: {
sr: 4326,
contains: !0,
returnGeometry: !0,
returnZ: !0,
returnM: !1,
},
layerDefs: function (t, e) {
return (
(this.params.layerDefs = this.params.layerDefs
? this.params.layerDefs + ";"
: ""),
(this.params.layerDefs += [t, e].join(":")),
this
);
},
simplify: function (t, e) {
var i = Math.abs(t.getBounds().getWest() - t.getBounds().getEast());
return (this.params.maxAllowableOffset = (i / t.getSize().y) * e), this;
},
run: function (i, s) {
return this.request(function (t, e) {
i.call(s, t, e && k(e), e);
}, s);
},
});
function K(t) {
return new Q(t);
}
var H = W.extend({
path: "identify",
between: function (t, e) {
return (this.params.time = [t.valueOf(), e.valueOf()]), this;
},
});
var X = H.extend({
setters: {
layers: "layers",
precision: "geometryPrecision",
tolerance: "tolerance",
returnGeometry: "returnGeometry",
},
params: { sr: 4326, layers: "all", tolerance: 3, returnGeometry: !0 },
on: function (t) {
var e = R(t.getBounds()),
i = t.getSize();
return (
(this.params.imageDisplay = [i.x, i.y, 96]),
(this.params.mapExtent = [e.xmin, e.ymin, e.xmax, e.ymax]),
this
);
},
at: function (t) {
return (
2 === t.length && (t = g.latLng(t)), this._setGeometryParams(t), this
);
},
layerDef: function (t, e) {
return (
(this.params.layerDefs = this.params.layerDefs
? this.params.layerDefs + ";"
: ""),
(this.params.layerDefs += [t, e].join(":")),
this
);
},
simplify: function (t, e) {
var i = Math.abs(t.getBounds().getWest() - t.getBounds().getEast());
return (this.params.maxAllowableOffset = (i / t.getSize().y) * e), this;
},
run: function (r, o) {
return this.request(function (t, e) {
if (t) r.call(o, t, void 0, e);
else {
var i = k(e);
e.results = e.results.reverse();
for (var s = 0; s < i.features.length; s++) {
i.features[s].layerId = e.results[s].layerId;
}
r.call(o, void 0, i, e);
}
});
},
_setGeometryParams: function (t) {
var e = z(t);
(this.params.geometry = e.geometry),
(this.params.geometryType = e.geometryType);
},
});
function Y(t) {
return new X(t);
}
var $ = H.extend({
setters: {
setMosaicRule: "mosaicRule",
setRenderingRule: "renderingRule",
setPixelSize: "pixelSize",
returnCatalogItems: "returnCatalogItems",
returnGeometry: "returnGeometry",
},
params: { returnGeometry: !1 },
at: function (t) {
return (
(t = g.latLng(t)),
(this.params.geometry = JSON.stringify({
x: t.lng,
y: t.lat,
spatialReference: { wkid: 4326 },
})),
(this.params.geometryType = "esriGeometryPoint"),
this
);
},
getMosaicRule: function () {
return this.params.mosaicRule;
},
getRenderingRule: function () {
return this.params.renderingRule;
},
getPixelSize: function () {
return this.params.pixelSize;
},
run: function (i, s) {
return this.request(function (t, e) {
i.call(s, t, e && this._responseToGeoJSON(e), e);
}, this);
},
_responseToGeoJSON: function (t) {
var e = t.location,
i = t.catalogItems,
s = t.catalogItemVisibilities,
r = {
pixel: {
type: "Feature",
geometry: { type: "Point", coordinates: [e.x, e.y] },
crs: {
type: "EPSG",
properties: { code: e.spatialReference.wkid },
},
properties: { OBJECTID: t.objectId, name: t.name, value: t.value },
id: t.objectId,
},
};
if (
(t.properties &&
t.properties.Values &&
(r.pixel.properties.values = t.properties.Values),
i &&
i.features &&
((r.catalogItems = k(i)),
s && s.length === r.catalogItems.features.length))
)
for (var o = s.length - 1; 0 <= o; o--)
r.catalogItems.features[o].properties.catalogItemVisibility = s[o];
return r;
},
});
function tt(t) {
return new $(t);
}
var et = g.Evented.extend({
options: { proxy: !1, useCors: i, timeout: 0 },
initialize: function (t) {
(t = t || {}),
(this._requestQueue = []),
(this._authenticating = !1),
g.Util.setOptions(this, t),
(this.options.url = M(this.options.url));
},
get: function (t, e, i, s) {
return this._request("get", t, e, i, s);
},
post: function (t, e, i, s) {
return this._request("post", t, e, i, s);
},
request: function (t, e, i, s) {
return this._request("request", t, e, i, s);
},
metadata: function (t, e) {
return this._request("get", "", {}, t, e);
},
authenticate: function (t) {
return (
(this._authenticating = !1),
(this.options.token = t),
this._runQueue(),
this
);
},
getTimeout: function () {
return this.options.timeout;
},
setTimeout: function (t) {
this.options.timeout = t;
},
_request: function (t, e, i, s, r) {
this.fire(
"requeststart",
{ url: this.options.url + e, params: i, method: t },
!0
);
var o = this._createServiceCallback(t, e, i, s, r);
if (
(this.options.token && (i.token = this.options.token),
this.options.requestParams &&
g.Util.extend(i, this.options.requestParams),
!this._authenticating)
) {
var n = this.options.proxy
? this.options.proxy + "?" + this.options.url + e
: this.options.url + e;
return ("get" !== t && "request" !== t) || this.options.useCors
? S[t](n, i, o, r)
: S.get.JSONP(n, i, o, r);
}
this._requestQueue.push([t, e, i, s, r]);
},
_createServiceCallback: function (i, s, r, o, n) {
return g.Util.bind(function (t, e) {
!t ||
(499 !== t.code && 498 !== t.code) ||
((this._authenticating = !0),
this._requestQueue.push([i, s, r, o, n]),
this.fire(
"authenticationrequired",
{ authenticate: g.Util.bind(this.authenticate, this) },
!0
),
(t.authenticate = g.Util.bind(this.authenticate, this))),
o.call(n, t, e),
t
? this.fire(
"requesterror",
{
url: this.options.url + s,
params: r,
message: t.message,
code: t.code,
method: i,
},
!0
)
: this.fire(
"requestsuccess",
{
url: this.options.url + s,
params: r,
response: e,
method: i,
},
!0
),
this.fire(
"requestend",
{ url: this.options.url + s, params: r, method: i },
!0
);
}, this);
},
_runQueue: function () {
for (var t = this._requestQueue.length - 1; 0 <= t; t--) {
var e = this._requestQueue[t];
this[e.shift()].apply(this, e);
}
this._requestQueue = [];
},
});
var it = et.extend({
identify: function () {
return Y(this);
},
find: function () {
return K(this);
},
query: function () {
return V(this);
},
});
function st(t) {
return new it(t);
}
var rt = et.extend({
query: function () {
return V(this);
},
identify: function () {
return tt(this);
},
});
function ot(t) {
return new rt(t);
}
var nt = et.extend({
options: { idAttribute: "OBJECTID" },
query: function () {
return V(this);
},
addFeature: function (t, e, i) {
this.addFeatures(t, e, i);
},
addFeatures: function (t, s, r) {
for (var e = t.features ? t.features : [t], i = e.length - 1; 0 <= i; i--)
delete e[i].id;
return (
(t = T(t)),
(t = 1 < e.length ? t : [t]),
this.post(
"addFeatures",
{ features: t },
function (t, e) {
var i =
e && e.addResults
? 1 < e.addResults.length
? e.addResults
: e.addResults[0]
: void 0;
s && s.call(r, t || e.addResults[0].error, i);
},
r
)
);
},
updateFeature: function (t, e, i) {
this.updateFeatures(t, e, i);
},
updateFeatures: function (t, s, r) {
var e = t.features ? t.features : [t];
return (
(t = T(t, this.options.idAttribute)),
(t = 1 < e.length ? t : [t]),
this.post(
"updateFeatures",
{ features: t },
function (t, e) {
var i =
e && e.updateResults
? 1 < e.updateResults.length
? e.updateResults
: e.updateResults[0]
: void 0;
s && s.call(r, t || e.updateResults[0].error, i);
},
r
)
);
},
deleteFeature: function (t, e, i) {
this.deleteFeatures(t, e, i);
},
deleteFeatures: function (t, s, r) {
return this.post(
"deleteFeatures",
{ objectIds: t },
function (t, e) {
var i =
e && e.deleteResults
? 1 < e.deleteResults.length
? e.deleteResults
: e.deleteResults[0]
: void 0;
s && s.call(r, t || e.deleteResults[0].error, i);
},
r
);
},
});
function at(t) {
return new nt(t);
}
var lt = "https:" !== window.location.protocol ? "http:" : "https:",
ut = g.TileLayer.extend({
statics: {
TILES: {
Streets: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
subdomains: ["server", "services"],
attribution: "USGS, NOAA",
attributionUrl:
"https://static.arcgis.com/attribution/World_Street_Map",
},
},
Topographic: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
subdomains: ["server", "services"],
attribution: "USGS, NOAA",
attributionUrl:
"https://static.arcgis.com/attribution/World_Topo_Map",
},
},
Oceans: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Base/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
attribution: "USGS, NOAA",
attributionUrl:
"https://static.arcgis.com/attribution/Ocean_Basemap",
},
},
OceansLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/arcgis/rest/services/Ocean/World_Ocean_Reference/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
NationalGeographic: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
attribution:
"National Geographic, DeLorme, HERE, UNEP-WCMC, USGS, NASA, ESA, METI, NRCAN, GEBCO, NOAA, increment P Corp.",
},
},
DarkGray: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Base/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
attribution:
"HERE, DeLorme, MapmyIndia, © OpenStreetMap contributors",
},
},
DarkGrayLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Dark_Gray_Reference/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
Gray: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
attribution:
"HERE, DeLorme, MapmyIndia, © OpenStreetMap contributors",
},
},
GrayLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 16,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
Imagery: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
subdomains: ["server", "services"],
attribution:
"DigitalGlobe, GeoEye, i-cubed, USDA, USGS, AEX, Getmapping, Aerogrid, IGN, IGP, swisstopo, and the GIS User Community",
attributionUrl:
"https://static.arcgis.com/attribution/World_Imagery",
},
},
ImageryLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
ImageryTransportation: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Transportation/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
ShadedRelief: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/World_Shaded_Relief/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 13,
subdomains: ["server", "services"],
attribution: "USGS",
},
},
ShadedReliefLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Boundaries_and_Places_Alternate/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 12,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
Terrain: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 13,
subdomains: ["server", "services"],
attribution: "USGS, NOAA",
},
},
TerrainLabels: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/Reference/World_Reference_Overlay/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 13,
subdomains: ["server", "services"],
pane: s ? "esri-labels" : "tilePane",
attribution: "",
},
},
USATopo: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/ArcGIS/rest/services/USA_Topo_Maps/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 15,
subdomains: ["server", "services"],
attribution: "USGS, National Geographic Society, i-cubed",
},
},
ImageryClarity: {
urlTemplate:
lt +
"//clarity.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
attribution:
"Esri, DigitalGlobe, GeoEye, Earthstar Geographics, CNES/Airbus DS, USDA, USGS, AeroGRID, IGN, and the GIS User Community",
},
},
Physical: {
urlTemplate:
lt +
"//{s}.arcgisonline.com/arcgis/rest/services/World_Physical_Map/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 8,
subdomains: ["server", "services"],
attribution: "U.S. National Park Service",
},
},
ImageryFirefly: {
urlTemplate:
lt +
"//fly.maptiles.arcgis.com/arcgis/rest/services/World_Imagery_Firefly/MapServer/tile/{z}/{y}/{x}",
options: {
minZoom: 1,
maxZoom: 19,
attribution:
"Esri, DigitalGlobe, GeoEye, Earthstar Geographics, CNES/Airbus DS, USDA, USGS, AeroGRID, IGN, and the GIS User Community",
attributionUrl:
"https://static.arcgis.com/attribution/World_Imagery",
},
},
},
},
initialize: function (t, e) {
var i;
if ("object" == typeof t && t.urlTemplate && t.options) i = t;
else {
if ("string" != typeof t || !ut.TILES[t])
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"'
);
i = ut.TILES[t];
}
var s = g.Util.extend(i.options, e);
g.Util.setOptions(this, s),
this.options.ignoreDeprecationWarning ||
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"
),
this.options.token &&
-1 === i.urlTemplate.indexOf("token=") &&
(i.urlTemplate += "?token=" + this.options.token),
this.options.proxy &&
(i.urlTemplate = this.options.proxy + "?" + i.urlTemplate),
g.TileLayer.prototype.initialize.call(this, i.urlTemplate, s);
},
onAdd: function (t) {
E(t),
"esri-labels" === this.options.pane && this._initPane(),
this.options.attributionUrl &&
Z(
(this.options.proxy ? this.options.proxy + "?" : "") +
this.options.attributionUrl,
t
),
t.on("moveend", N),
g.TileLayer.prototype.onAdd.call(this, t);
},
onRemove: function (t) {
B(t), t.off("moveend", N), g.TileLayer.prototype.onRemove.call(this, t);
},
_initPane: function () {
var t;
this._map.getPane(this.options.pane) ||
(((t = this._map.createPane(this.options.pane)).style.pointerEvents =
"none"),
(t.style.zIndex = 500));
},
getAttribution: function () {
var t;
return (
this.options.attribution &&
(t =
'' +
this.options.attribution +
""),
t
);
},
});
var ht = g.TileLayer.extend({
options: {
zoomOffsetAllowance: 0.1,
errorTileUrl:
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEABAMAAACuXLVVAAAAA1BMVEUzNDVszlHHAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAAAAAAAAAB6mUWpAAAADZJREFUeJztwQEBAAAAgiD/r25IQAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7waBAAABw08RwAAAAABJRU5ErkJggg==",
},
statics: {
MercatorZoomLevels: {
0: 156543.033928,
1: 78271.5169639999,
2: 39135.7584820001,
3: 19567.8792409999,
4: 9783.93962049996,
5: 4891.96981024998,
6: 2445.98490512499,
7: 1222.99245256249,
8: 611.49622628138,
9: 305.748113140558,
10: 152.874056570411,
11: 76.4370282850732,
12: 38.2185141425366,
13: 19.1092570712683,
14: 9.55462853563415,
15: 4.77731426794937,
16: 2.38865713397468,
17: 1.19432856685505,
18: 0.597164283559817,
19: 0.298582141647617,
20: 0.14929107082381,
21: 0.07464553541191,
22: 0.0373227677059525,
23: 0.0186613838529763,
},
},
initialize: function (t) {
(t = U((t = g.Util.setOptions(this, t)))),
(this.tileUrl =
(t.proxy ? t.proxy + "?" : "") +
t.url +
"tile/{z}/{y}/{x}" +
(t.requestParams && 0 < Object.keys(t.requestParams).length
? g.Util.getParamString(t.requestParams)
: "")),
-1 !== t.url.indexOf("{s}") &&
t.subdomains &&
(t.url = t.url.replace("{s}", t.subdomains[0])),
(this.service = st(t)),
this.service.addEventParent(this),
new RegExp(/tiles.arcgis(online)?\.com/g).test(t.url) &&
((this.tileUrl = this.tileUrl.replace("://tiles", "://tiles{s}")),
(t.subdomains = ["1", "2", "3", "4"])),
this.options.token && (this.tileUrl += "?token=" + this.options.token),
g.TileLayer.prototype.initialize.call(this, this.tileUrl, t);
},
getTileUrl: function (t) {
var e = this._getZoomForUrl();
return g.Util.template(
this.tileUrl,
g.Util.extend(
{
s: this._getSubdomain(t),
x: t.x,
y: t.y,
z: this._lodMap && this._lodMap[e] ? this._lodMap[e] : e,
},
this.options
)
);
},
createTile: function (t, e) {
var i = document.createElement("img");
return (
g.DomEvent.on(i, "load", g.Util.bind(this._tileOnLoad, this, e, i)),
g.DomEvent.on(i, "error", g.Util.bind(this._tileOnError, this, e, i)),
this.options.crossOrigin && (i.crossOrigin = ""),
(i.alt = ""),
!this._lodMap || (this._lodMap && this._lodMap[this._getZoomForUrl()])
? (i.src = this.getTileUrl(t))
: this.once(
"lodmap",
function () {
i.src = this.getTileUrl(t);
},
this
),
i
);
},
onAdd: function (u) {
E(u),
this._lodMap ||
this.metadata(function (t, e) {
if (!t && e.spatialReference) {
var i = e.spatialReference.latestWkid || e.spatialReference.wkid;
if (
(!this.options.attribution &&
u.attributionControl &&
e.copyrightText &&
((this.options.attribution = e.copyrightText),
u.attributionControl.addAttribution(this.getAttribution())),
u.options.crs !== g.CRS.EPSG3857 ||
(102100 !== i && 3857 !== i))
)
(u.options.crs &&
u.options.crs.code &&
-1 < u.options.crs.code.indexOf(i)) ||
m(
"L.esri.TiledMapLayer is using a non-mercator spatial reference. Support may be available through Proj4Leaflet http://esri.github.io/esri-leaflet/examples/non-mercator-projection.html"
);
else {
this._lodMap = {};
for (
var s = e.tileInfo.lods, r = ht.MercatorZoomLevels, o = 0;
o < s.length;
o++
) {
var n = s[o];
for (var a in r) {
var l = r[a];
if (
this._withinPercentage(
n.resolution,
l,
this.options.zoomOffsetAllowance
)
) {
this._lodMap[a] = n.level;
break;
}
}
}
this.fire("lodmap");
}
}
}, this),
g.TileLayer.prototype.onAdd.call(this, u);
},
onRemove: function (t) {
B(t), g.TileLayer.prototype.onRemove.call(this, t);
},
metadata: function (t, e) {
return this.service.metadata(t, e), this;
},
identify: function () {
return this.service.identify();
},
find: function () {
return this.service.find();
},
query: function () {
return this.service.query();
},
authenticate: function (t) {
var e = "?token=" + t;
return (
(this.tileUrl = this.options.token
? this.tileUrl.replace(/\?token=(.+)/g, e)
: this.tileUrl + e),
(this.options.token = t),
this.service.authenticate(t),
this
);
},
_withinPercentage: function (t, e, i) {
return Math.abs(t / e - 1) < i;
},
});
var ct = g.ImageOverlay.extend({
onAdd: function (t) {
(this._topLeft = t.getPixelBounds().min),
g.ImageOverlay.prototype.onAdd.call(this, t);
},
_reset: function () {
this._map.options.crs === g.CRS.EPSG3857
? g.ImageOverlay.prototype._reset.call(this)
: g.DomUtil.setPosition(
this._image,
this._topLeft.subtract(this._map.getPixelOrigin())
);
},
}),
pt = g.Layer.extend({
options: {
opacity: 1,
position: "front",
f: "image",
useCors: i,
attribution: null,
interactive: !1,
alt: "",
},
onAdd: function (i) {
E(i),
this.options.zIndex && (this.options.position = null),
(this._update = g.Util.throttle(
this._update,
this.options.updateInterval,
this
)),
i.on("moveend", this._update, this),
this._currentImage &&
this._currentImage._bounds.equals(this._map.getBounds())
? i.addLayer(this._currentImage)
: this._currentImage &&
(this._map.removeLayer(this._currentImage),
(this._currentImage = null)),
this._update(),
this._popup &&
(this._map.on("click", this._getPopupData, this),
this._map.on("dblclick", this._resetPopupState, this)),
this.metadata(function (t, e) {
!t &&
!this.options.attribution &&
i.attributionControl &&
e.copyrightText &&
((this.options.attribution = e.copyrightText),
i.attributionControl.addAttribution(this.getAttribution()));
}, this);
},
onRemove: function (t) {
B(t),
this._currentImage && this._map.removeLayer(this._currentImage),
this._popup &&
(this._map.off("click", this._getPopupData, this),
this._map.off("dblclick", this._resetPopupState, this)),
this._map.off("moveend", this._update, this);
},
bindPopup: function (t, e) {
return (
(this._shouldRenderPopup = !1),
(this._lastClick = !1),
(this._popup = g.popup(e)),
(this._popupFunction = t),
this._map &&
(this._map.on("click", this._getPopupData, this),
this._map.on("dblclick", this._resetPopupState, this)),
this
);
},
unbindPopup: function () {
return (
this._map &&
(this._map.closePopup(this._popup),
this._map.off("click", this._getPopupData, this),
this._map.off("dblclick", this._resetPopupState, this)),
(this._popup = !1),
this
);
},
bringToFront: function () {
return (
(this.options.position = "front"),
this._currentImage &&
(this._currentImage.bringToFront(), this._setAutoZIndex(Math.max)),
this
);
},
bringToBack: function () {
return (
(this.options.position = "back"),
this._currentImage &&
(this._currentImage.bringToBack(), this._setAutoZIndex(Math.min)),
this
);
},
setZIndex: function (t) {
return (
(this.options.zIndex = t),
this._currentImage && this._currentImage.setZIndex(t),
this
);
},
_setAutoZIndex: function (t) {
if (this._currentImage) {
for (
var e,
i = this._currentImage.getPane().children,
s = -t(-1 / 0, 1 / 0),
r = 0,
o = i.length;
r < o;
r++
)
(e = i[r].style.zIndex),
i[r] !== this._currentImage._image && e && (s = t(s, +e));
isFinite(s) &&
((this.options.zIndex = s + t(-1, 1)),
this.setZIndex(this.options.zIndex));
}
},
getAttribution: function () {
return this.options.attribution;
},
getOpacity: function () {
return this.options.opacity;
},
setOpacity: function (t) {
return (
(this.options.opacity = t),
this._currentImage && this._currentImage.setOpacity(t),
this
);
},
getTimeRange: function () {
return [this.options.from, this.options.to];
},
setTimeRange: function (t, e) {
return (
(this.options.from = t), (this.options.to = e), this._update(), this
);
},
metadata: function (t, e) {
return this.service.metadata(t, e), this;
},
authenticate: function (t) {
return this.service.authenticate(t), this;
},
redraw: function () {
this._update();
},
_renderImage: function (t, s, e) {
if (this._map) {
if ((e && (t = "data:" + e + ";base64," + t), !t)) return;
var r = new ct(t, s, {
opacity: 0,
crossOrigin: this.options.withCredentials
? "use-credentials"
: this.options.useCors,
alt: this.options.alt,
pane: this.options.pane || this.getPane(),
interactive: this.options.interactive,
}).addTo(this._map),
o = function (t) {
var e, i;
r.off("error", o, this),
this._map &&
((e = t.target),
(i = this._currentImage),
e._bounds.equals(s) && e._bounds.equals(this._map.getBounds())
? ((this._currentImage = e),
"front" === this.options.position
? this.bringToFront()
: "back" === this.options.position &&
this.bringToBack(),
this.options.zIndex &&
this.setZIndex(this.options.zIndex),
this._map && this._currentImage._map
? this._currentImage.setOpacity(this.options.opacity)
: this._currentImage._map.removeLayer(
this._currentImage
),
i && this._map && this._map.removeLayer(i),
i && i._map && i._map.removeLayer(i))
: this._map.removeLayer(e)),
this.fire("load", { bounds: s });
};
r.once(
"error",
function () {
this._map.removeLayer(r),
this.fire("error"),
r.off("load", o, this);
},
this
),
r.once("load", o, this);
}
},
_update: function () {
var t, e, i;
this._map &&
((t = this._map.getZoom()),
(e = this._map.getBounds()),
this._animatingZoom ||
(this._map._panTransition &&
this._map._panTransition._inProgress) ||
(t > this.options.maxZoom || t < this.options.minZoom
? this._currentImage &&
(this._currentImage._map.removeLayer(this._currentImage),
(this._currentImage = null))
: ((i = this._buildExportParams()),
g.Util.extend(i, this.options.requestParams),
i
? (this._requestExport(i, e),
this.fire("loading", { bounds: e }))
: this._currentImage &&
(this._currentImage._map.removeLayer(this._currentImage),
(this._currentImage = null)))));
},
_renderPopup: function (t, e, i, s) {
var r;
(t = g.latLng(t)),
this._shouldRenderPopup &&
this._lastClick.equals(t) &&
(r = this._popupFunction(e, i, s)) &&
this._popup.setLatLng(t).setContent(r).openOn(this._map);
},
_resetPopupState: function (t) {
(this._shouldRenderPopup = !1), (this._lastClick = t.latlng);
},
_calculateBbox: function () {
var t = this._map.getPixelBounds(),
e = this._map.unproject(t.getBottomLeft()),
i = this._map.unproject(t.getTopRight()),
s = this._map.options.crs.project(i),
r = this._map.options.crs.project(e),
o = g.bounds(s, r);
return [
o.getBottomLeft().x,
o.getBottomLeft().y,
o.getTopRight().x,
o.getTopRight().y,
].join(",");
},
_calculateImageSize: function () {
var t = this._map.getPixelBounds(),
e = this._map.getSize(),
i = this._map.unproject(t.getBottomLeft()),
s = this._map.unproject(t.getTopRight()),
r = this._map.latLngToLayerPoint(s).y,
o = this._map.latLngToLayerPoint(i).y;
return (0 < r || o < e.y) && (e.y = o - r), e.x + "," + e.y;
},
}),
dt = pt.extend({
options: {
updateInterval: 150,
format: "jpgpng",
transparent: !0,
f: "image",
},
query: function () {
return this.service.query();
},
identify: function () {
return this.service.identify();
},
initialize: function (t) {
(t = U(t)),
(this.service = ot(t)),
this.service.addEventParent(this),
g.Util.setOptions(this, t);
},
setPixelType: function (t) {
return (this.options.pixelType = t), this._update(), this;
},
getPixelType: function () {
return this.options.pixelType;
},
setBandIds: function (t) {
return (
g.Util.isArray(t)
? (this.options.bandIds = t.join(","))
: (this.options.bandIds = t.toString()),
this._update(),
this
);
},
getBandIds: function () {
return this.options.bandIds;
},
setNoData: function (t, e) {
return (
g.Util.isArray(t)
? (this.options.noData = t.join(","))
: (this.options.noData = t.toString()),
e && (this.options.noDataInterpretation = e),
this._update(),
this
);
},
getNoData: function () {
return this.options.noData;
},
getNoDataInterpretation: function () {
return this.options.noDataInterpretation;
},
setRenderingRule: function (t) {
(this.options.renderingRule = t), this._update();
},
getRenderingRule: function () {
return this.options.renderingRule;
},
setMosaicRule: function (t) {
(this.options.mosaicRule = t), this._update();
},
getMosaicRule: function () {
return this.options.mosaicRule;
},
_getPopupData: function (s) {
var t = g.Util.bind(function (t, e, i) {
t ||
setTimeout(
g.Util.bind(function () {
this._renderPopup(s.latlng, t, e, i);
}, this),
300
);
}, this),
e = this.identify().at(s.latlng);
this.options.mosaicRule && e.setMosaicRule(this.options.mosaicRule),
e.run(t),
(this._shouldRenderPopup = !0),
(this._lastClick = s.latlng);
},
_buildExportParams: function () {
var t = parseInt(this._map.options.crs.code.split(":")[1], 10),
e = {
bbox: this._calculateBbox(),
size: this._calculateImageSize(),
format: this.options.format,
transparent: this.options.transparent,
bboxSR: t,
imageSR: t,
};
return (
this.options.from &&
this.options.to &&
(e.time =
this.options.from.valueOf() + "," + this.options.to.valueOf()),
this.options.pixelType && (e.pixelType = this.options.pixelType),
this.options.interpolation &&
(e.interpolation = this.options.interpolation),
this.options.compressionQuality &&
(e.compressionQuality = this.options.compressionQuality),
this.options.bandIds && (e.bandIds = this.options.bandIds),
(0 !== this.options.noData && !this.options.noData) ||
(e.noData = this.options.noData),
this.options.noDataInterpretation &&
(e.noDataInterpretation = this.options.noDataInterpretation),
this.service.options.token && (e.token = this.service.options.token),
this.options.renderingRule &&
(e.renderingRule = JSON.stringify(this.options.renderingRule)),
this.options.mosaicRule &&
(e.mosaicRule = JSON.stringify(this.options.mosaicRule)),
e
);
},
_requestExport: function (t, i) {
var e;
"json" === this.options.f
? this.service.request(
"exportImage",
t,
function (t, e) {
t ||
(this.options.token &&
(e.href += "?token=" + this.options.token),
this.options.proxy &&
(e.href = this.options.proxy + "?" + e.href),
this._renderImage(e.href, i));
},
this
)
: ((t.f = "image"),
(e = this.options.url + "exportImage" + g.Util.getParamString(t)),
this.options.proxy && (e = this.options.proxy + "?" + e),
this._renderImage(e, i));
},
});
var mt = pt.extend({
options: {
updateInterval: 150,
layers: !1,
layerDefs: !1,
timeOptions: !1,
format: "png32",
transparent: !0,
f: "json",
},
initialize: function (t) {
(t = U(t)),
(this.service = st(t)),
this.service.addEventParent(this),
g.Util.setOptions(this, t);
},
getDynamicLayers: function () {
return this.options.dynamicLayers;
},
setDynamicLayers: function (t) {
return (this.options.dynamicLayers = t), this._update(), this;
},
getLayers: function () {
return this.options.layers;
},
setLayers: function (t) {
return (this.options.layers = t), this._update(), this;
},
getLayerDefs: function () {
return this.options.layerDefs;
},
setLayerDefs: function (t) {
return (this.options.layerDefs = t), this._update(), this;
},
getTimeOptions: function () {
return this.options.timeOptions;
},
setTimeOptions: function (t) {
return (this.options.timeOptions = t), this._update(), this;
},
query: function () {
return this.service.query();
},
identify: function () {
return this.service.identify();
},
find: function () {
return this.service.find();
},
_getPopupData: function (s) {
var t = g.Util.bind(function (t, e, i) {
t ||
setTimeout(
g.Util.bind(function () {
this._renderPopup(s.latlng, t, e, i);
}, this),
300
);
}, this),
e = this.options.popup
? this.options.popup.on(this._map).at(s.latlng)
: this.identify().on(this._map).at(s.latlng);
if (
(e.params.maxAllowableOffset || e.simplify(this._map, 0.5),
(this.options.popup &&
this.options.popup.params &&
this.options.popup.params.layers) ||
(this.options.layers
? e.layers("visible:" + this.options.layers.join(","))
: e.layers("visible")),
this.options.layerDefs &&
"string" != typeof this.options.layerDefs &&
!e.params.layerDefs)
)
for (var i in this.options.layerDefs)
this.options.layerDefs.hasOwnProperty(i) &&
e.layerDef(i, this.options.layerDefs[i]);
e.run(t), (this._shouldRenderPopup = !0), (this._lastClick = s.latlng);
},
_buildExportParams: function () {
var t = parseInt(this._map.options.crs.code.split(":")[1], 10),
e = {
bbox: this._calculateBbox(),
size: this._calculateImageSize(),
dpi: 96,
format: this.options.format,
transparent: this.options.transparent,
bboxSR: t,
imageSR: t,
};
if (
(this.options.dynamicLayers &&
(e.dynamicLayers = this.options.dynamicLayers),
this.options.layers)
) {
if (0 === this.options.layers.length) return;
e.layers = "show:" + this.options.layers.join(",");
}
return (
this.options.layerDefs &&
(e.layerDefs =
"string" == typeof this.options.layerDefs
? this.options.layerDefs
: JSON.stringify(this.options.layerDefs)),
this.options.timeOptions &&
(e.timeOptions = JSON.stringify(this.options.timeOptions)),
this.options.from &&
this.options.to &&
(e.time =
this.options.from.valueOf() + "," + this.options.to.valueOf()),
this.service.options.token && (e.token = this.service.options.token),
this.options.proxy && (e.proxy = this.options.proxy),
this.options.disableCache && (e._ts = Date.now()),
e
);
},
_requestExport: function (t, i) {
var e;
"json" === this.options.f
? this.service.request(
"export",
t,
function (t, e) {
t ||
(this.options.token &&
e.href &&
(e.href += "?token=" + this.options.token),
this.options.proxy &&
e.href &&
(e.href = this.options.proxy + "?" + e.href),
e.href
? this._renderImage(e.href, i)
: this._renderImage(e.imageData, i, e.contentType));
},
this
)
: ((t.f = "image"),
(e = this.options.url + "export" + g.Util.getParamString(t)),
this.options.proxy && (e = this.options.proxy + "?" + e),
this._renderImage(e, i));
},
});
var ft = g.Layer.extend({
options: {
cellSize: 512,
updateWhenIdle: g.Browser.mobile,
updateInterval: 150,
noWrap: !1,
keepBuffer: 1.5,
},
initialize: function (t) {
g.Util.setOptions(this, t);
},
onAdd: function (t) {
(this._cells = {}),
(this._activeCells = {}),
this._resetView(),
this._update();
},
onRemove: function (t) {
this._removeAllCells(), (this._cellZoom = void 0);
},
isLoading: function () {
return this._loading;
},
redraw: function () {
return this._map && (this._removeAllCells(), this._update()), this;
},
getEvents: function () {
var t = {
viewprereset: this._invalidateAll,
viewreset: this._resetView,
zoom: this._resetView,
moveend: this._onMoveEnd,
};
return (
this.options.updateWhenIdle ||
(this._onMove ||
(this._onMove = g.Util.throttle(
this._onMoveEnd,
this.options.updateInterval,
this
)),
(t.move = this._onMove)),
t
);
},
createCell: function () {
return document.createElement("div");
},
removeCell: function () {},
reuseCell: function () {},
cellLeave: function () {},
cellEnter: function () {},
getCellSize: function () {
var t = this.options.cellSize;
return t instanceof g.Point ? t : new g.Point(t, t);
},
_pruneCells: function () {
if (this._map) {
var t, e, i;
for (t in this._cells) (i = this._cells[t]).retain = i.current;
for (t in this._cells) {
(i = this._cells[t]).current &&
!i.active &&
((e = i.coords),
this._retainParent(e.x, e.y, e.z, e.z - 5) ||
this._retainChildren(e.x, e.y, e.z, e.z + 2));
}
for (t in this._cells) this._cells[t].retain || this._removeCell(t);
}
},
_removeAllCells: function () {
for (var t in this._cells) this._removeCell(t);
},
_invalidateAll: function () {
this._removeAllCells(), (this._cellZoom = void 0);
},
_retainParent: function (t, e, i, s) {
var r = Math.floor(t / 2),
o = Math.floor(e / 2),
n = i - 1,
a = new g.Point(+r, +o);
a.z = +n;
var l = this._cellCoordsToKey(a),
u = this._cells[l];
return u && u.active
? (u.retain = !0)
: (u && u.loaded && (u.retain = !0),
s < n && this._retainParent(r, o, n, s));
},
_retainChildren: function (t, e, i, s) {
for (var r = 2 * t; r < 2 * t + 2; r++)
for (var o = 2 * e; o < 2 * e + 2; o++) {
var n = new g.Point(r, o);
n.z = i + 1;
var a = this._cellCoordsToKey(n),
l = this._cells[a];
l && l.active
? (l.retain = !0)
: (l && l.loaded && (l.retain = !0),
i + 1 < s && this._retainChildren(r, o, i + 1, s));
}
},
_resetView: function (t) {
var e = t && (t.pinch || t.flyTo);
e || this._setView(this._map.getCenter(), this._map.getZoom(), e, e);
},
_setView: function (t, e, i, s) {
var r = Math.round(e);
s ||
((this._cellZoom = r),
this._abortLoading && this._abortLoading(),
this._resetGrid(),
void 0 !== r && this._update(t),
i || this._pruneCells(),
(this._noPrune = !!i));
},
_resetGrid: function () {
var t = this._map,
e = t.options.crs,
i = (this._cellSize = this.getCellSize()),
s = this._cellZoom,
r = this._map.getPixelWorldBounds(this._cellZoom);
r && (this._globalCellRange = this._pxBoundsToCellRange(r)),
(this._wrapX = e.wrapLng &&
!this.options.noWrap && [
Math.floor(t.project([0, e.wrapLng[0]], s).x / i.x),
Math.ceil(t.project([0, e.wrapLng[1]], s).x / i.y),
]),
(this._wrapY = e.wrapLat &&
!this.options.noWrap && [
Math.floor(t.project([e.wrapLat[0], 0], s).y / i.x),
Math.ceil(t.project([e.wrapLat[1], 0], s).y / i.y),
]);
},
_onMoveEnd: function (t) {
(t && (t.pinch || t.flyTo)) ||
!this._map ||
this._map._animatingZoom ||
this._update();
},
_getCelldPixelBounds: function (t) {
var e = this._map,
i = e._animatingZoom
? Math.max(e._animateToZoom, e.getZoom())
: e.getZoom(),
s = e.getZoomScale(i, this._cellZoom),
r = e.project(t, this._cellZoom).floor(),
o = e.getSize().divideBy(2 * s);
return new g.Bounds(r.subtract(o), r.add(o));
},
_update: function (t) {
var e = this._map;
if (e) {
var i = Math.round(e.getZoom());
void 0 === t && (t = e.getCenter());
var s = this._getCelldPixelBounds(t),
r = this._pxBoundsToCellRange(s),
o = r.getCenter(),
n = [],
a = this.options.keepBuffer,
l = new g.Bounds(
r.getBottomLeft().subtract([a, -a]),
r.getTopRight().add([a, -a])
);
if (
!(
isFinite(r.min.x) &&
isFinite(r.min.y) &&
isFinite(r.max.x) &&
isFinite(r.max.y)
)
)
throw new Error("Attempted to load an infinite number of cells");
for (var u in this._cells) {
var h = this._cells[u].coords;
(h.z === this._cellZoom && l.contains(new g.Point(h.x, h.y))) ||
(this._cells[u].current = !1);
}
if (1 < Math.abs(i - this._cellZoom)) this._setView(t, i);
else {
for (var c = r.min.y; c <= r.max.y; c++)
for (var p = r.min.x; p <= r.max.x; p++) {
var d,
m = new g.Point(p, c);
(m.z = this._cellZoom),
this._isValidCell(m) &&
((d = this._cells[this._cellCoordsToKey(m)])
? (d.current = !0)
: n.push(m));
}
if (
(n.sort(function (t, e) {
return t.distanceTo(o) - e.distanceTo(o);
}),
0 !== n.length)
)
for (
this._loading || (this._loading = !0), p = 0;
p < n.length;
p++
) {
var f = this._cellCoordsToKey(n[p]),
y = this._keyToCellCoords(f);
this._activeCells[y]
? this._reuseCell(n[p])
: this._createCell(n[p]);
}
}
}
},
_isValidCell: function (t) {
var e = this._map.options.crs;
if (!e.infinite) {
var i = this._globalCellRange;
if (
(!e.wrapLng && (t.x < i.min.x || t.x > i.max.x)) ||
(!e.wrapLat && (t.y < i.min.y || t.y > i.max.y))
)
return !1;
}
if (!this.options.bounds) return !0;
var s = this._cellCoordsToBounds(t);
return g.toLatLngBounds(this.options.bounds).overlaps(s);
},
_keyToBounds: function (t) {
return this._cellCoordsToBounds(this._keyToCellCoords(t));
},
_cellCoordsToNwSe: function (t) {
var e = this._map,
i = this.getCellSize(),
s = t.scaleBy(i),
r = s.add(i);
return [e.unproject(s, t.z), e.unproject(r, t.z)];
},
_cellCoordsToBounds: function (t) {
var e = this._cellCoordsToNwSe(t),
i = new g.LatLngBounds(e[0], e[1]);
return this.options.noWrap || (i = this._map.wrapLatLngBounds(i)), i;
},
_cellCoordsToKey: function (t) {
return t.x + ":" + t.y + ":" + t.z;
},
_keyToCellCoords: function (t) {
var e = t.split(":"),
i = new g.Point(+e[0], +e[1]);
return (i.z = +e[2]), i;
},
_removeCell: function (t) {
var e,
i,
s,
r = this._cells[t];
r &&
((e = this._keyToCellCoords(t)),
(i = this._wrapCoords(e)),
(s = this._cellCoordsToBounds(this._wrapCoords(e))),
(r.current = !1),
delete this._cells[t],
(this._activeCells[t] = r),
this.cellLeave(s, i, t),
this.fire("cellleave", { key: t, coords: i, bounds: s }));
},
_reuseCell: function (t) {
var e = this._cellCoordsToKey(t);
(this._cells[e] = this._activeCells[e]), (this._cells[e].current = !0);
var i = this._wrapCoords(t),
s = this._cellCoordsToBounds(this._wrapCoords(t));
this.cellEnter(s, i, e),
this.fire("cellenter", { key: e, coords: i, bounds: s });
},
_createCell: function (t) {
var e = this._cellCoordsToKey(t),
i = this._wrapCoords(t),
s = this._cellCoordsToBounds(this._wrapCoords(t));
this.createCell(s, i, e),
this.fire("cellcreate", { key: e, coords: i, bounds: s }),
(this._cells[e] = { coords: t, current: !0 }),
g.Util.requestAnimFrame(this._pruneCells, this);
},
_cellReady: function (t, e, i) {
var s = this._cellCoordsToKey(t);
(i = this._cells[s]) && ((i.loaded = +new Date()), (i.active = !0));
},
_getCellPos: function (t) {
return t.scaleBy(this.getCellSize());
},
_wrapCoords: function (t) {
var e = new g.Point(
this._wrapX ? g.Util.wrapNum(t.x, this._wrapX) : t.x,
this._wrapY ? g.Util.wrapNum(t.y, this._wrapY) : t.y
);
return (e.z = t.z), e;
},
_pxBoundsToCellRange: function (t) {
var e = this.getCellSize();
return new g.Bounds(
t.min.unscaleBy(e).floor(),
t.max.unscaleBy(e).ceil().subtract([1, 1])
);
},
});
function yt(t) {
this.values = [].concat(t || []);
}
(yt.prototype.query = function (t) {
var e = this.getIndex(t);
return this.values[e];
}),
(yt.prototype.getIndex = function (t) {
this.dirty && this.sort();
for (var e, i, s = 0, r = this.values.length - 1; s <= r; )
if (
((e = ((s + r) / 2) | 0),
+(i = this.values[Math.round(e)]).value < +t)
)
s = 1 + e;
else {
if (!(+i.value > +t)) return e;
r = e - 1;
}
return Math.abs(~r);
}),
(yt.prototype.between = function (t, e) {
var i = this.getIndex(t),
s = this.getIndex(e);
if (0 === i && 0 === s) return [];
for (; this.values[i - 1] && this.values[i - 1].value === t; ) i--;
for (; this.values[s + 1] && this.values[s + 1].value === e; ) s++;
return (
this.values[s] &&
this.values[s].value === e &&
this.values[s + 1] &&
s++,
this.values.slice(i, s)
);
}),
(yt.prototype.insert = function (t) {
return this.values.splice(this.getIndex(t.value), 0, t), this;
}),
(yt.prototype.bulkAdd = function (t, e) {
return (
(this.values = this.values.concat([].concat(t || []))),
e ? this.sort() : (this.dirty = !0),
this
);
}),
(yt.prototype.sort = function () {
return (
this.values
.sort(function (t, e) {
return e.value - t.value;
})
.reverse(),
(this.dirty = !1),
this
);
});
var gt = ft.extend({
options: {
attribution: null,
where: "1=1",
fields: ["*"],
from: !1,
to: !1,
timeField: !1,
timeFilterMode: "server",
simplifyFactor: 0,
precision: 6,
fetchAllFeatures: !1,
},
initialize: function (t) {
if (
(ft.prototype.initialize.call(this, t),
(t = U(t)),
(t = g.Util.setOptions(this, t)),
(this.service = at(t)),
this.service.addEventParent(this),
"*" !== this.options.fields[0])
) {
for (var e = !1, i = 0; i < this.options.fields.length; i++)
this.options.fields[i].match(/^(OBJECTID|FID|OID|ID)$/i) &&
(e = !0);
!1 === e &&
m(
"no known esriFieldTypeOID field detected in fields Array. Please add an attribute field containing unique IDs to ensure the layer can be drawn correctly."
);
}
this.options.timeField.start && this.options.timeField.end
? ((this._startTimeIndex = new yt()), (this._endTimeIndex = new yt()))
: this.options.timeField && (this._timeIndex = new yt()),
(this._cache = {}),
(this._currentSnapshot = []),
(this._activeRequests = 0);
},
onAdd: function (r) {
return (
E(r),
this.service.metadata(function (t, e) {
var i, s;
t ||
((i = e.supportedQueryFormats),
((s = !1) !== this.service.options.isModern &&
!this.options.fetchAllFeatures) ||
(s = !0),
!s &&
i &&
-1 !== i.indexOf("geoJSON") &&
(this.service.options.isModern = !0),
e.objectIdField &&
(this.service.options.idAttribute = e.objectIdField),
!this.options.attribution &&
r.attributionControl &&
e.copyrightText &&
((this.options.attribution = e.copyrightText),
r.attributionControl.addAttribution(this.getAttribution())));
}, this),
r.on("zoomend", this._handleZoomChange, this),
ft.prototype.onAdd.call(this, r)
);
},
onRemove: function (t) {
return (
B(t),
t.off("zoomend", this._handleZoomChange, this),
ft.prototype.onRemove.call(this, t)
);
},
getAttribution: function () {
return this.options.attribution;
},
createCell: function (t, e) {
this._visibleZoom() && this._requestFeatures(t, e);
},
_requestFeatures: function (s, r, o, n) {
this._activeRequests++, (n = n || 0);
var a = this.options.where;
return (
1 === this._activeRequests && this.fire("loading", { bounds: s }, !0),
this._buildQuery(s, n).run(function (t, e, i) {
i && i.exceededTransferLimit && this.fire("drawlimitexceeded"),
this.options.where === a &&
(!t &&
e &&
e.features.length &&
g.Util.requestAnimFrame(
g.Util.bind(function () {
this._addFeatures(e.features, r),
this._postProcessFeatures(s);
}, this)
),
t || !e || e.features.length || this._postProcessFeatures(s),
t && this._postProcessFeatures(s),
o && o.call(this, t, e),
i &&
(i.exceededTransferLimit ||
(i.properties && i.properties.exceededTransferLimit)) &&
this.options.fetchAllFeatures &&
this._requestFeatures(s, r, o, n + e.features.length));
}, this)
);
},
_postProcessFeatures: function (t) {
this._activeRequests--,
this._activeRequests <= 0 && this.fire("load", { bounds: t });
},
_cacheKey: function (t) {
return t.z + ":" + t.x + ":" + t.y;
},
_addFeatures: function (t, e) {
var i;
e && ((i = this._cacheKey(e)), (this._cache[i] = this._cache[i] || []));
for (var s = t.length - 1; 0 <= s; s--) {
var r = t[s].id;
-1 === this._currentSnapshot.indexOf(r) &&
this._currentSnapshot.push(r),
void 0 !== i &&
-1 === this._cache[i].indexOf(r) &&
this._cache[i].push(r);
}
this.options.timeField && this._buildTimeIndexes(t),
this.createLayers(t);
},
_buildQuery: function (t, e) {
var i = this.service
.query()
.intersects(t)
.where(this.options.where)
.fields(this.options.fields)
.precision(this.options.precision);
return (
this.options.fetchAllFeatures &&
!isNaN(parseInt(e)) &&
(i = i.offset(e)),
(i.params.resultType = "tile"),
this.options.requestParams &&
g.Util.extend(i.params, this.options.requestParams),
this.options.simplifyFactor &&
i.simplify(this._map, this.options.simplifyFactor),
"server" === this.options.timeFilterMode &&
this.options.from &&
this.options.to &&
i.between(this.options.from, this.options.to),
i
);
},
setWhere: function (s, r, o) {
this.options.where = s && s.length ? s : "1=1";
for (
var n = [],
a = [],
l = 0,
u = null,
t = g.Util.bind(function (t, e) {
if ((t && (u = t), e))
for (var i = e.features.length - 1; 0 <= i; i--)
a.push(e.features[i].id);
--l <= 0 &&
this._visibleZoom() &&
s === this.options.where &&
((this._currentSnapshot = a),
g.Util.requestAnimFrame(
g.Util.bind(function () {
this.removeLayers(n), this.addLayers(a), r && r.call(o, u);
}, this)
));
}, this),
e = this._currentSnapshot.length - 1;
0 <= e;
e--
)
n.push(this._currentSnapshot[e]);
for (var i in ((this._cache = {}), this._cells)) {
l++;
var h = this._keyToCellCoords(i),
c = this._cellCoordsToBounds(h);
this._requestFeatures(c, h, t);
}
return this;
},
getWhere: function () {
return this.options.where;
},
getTimeRange: function () {
return [this.options.from, this.options.to];
},
setTimeRange: function (e, i, s, r) {
var o = this.options.from,
n = this.options.to,
a = 0,
l = null,
t = g.Util.bind(function (t) {
t && (l = t),
this._filterExistingFeatures(o, n, e, i),
a--,
s && a <= 0 && s.call(r, l);
}, this);
if (
((this.options.from = e),
(this.options.to = i),
this._filterExistingFeatures(o, n, e, i),
"server" === this.options.timeFilterMode)
)
for (var u in this._cells) {
a++;
var h = this._keyToCellCoords(u),
c = this._cellCoordsToBounds(h);
this._requestFeatures(c, h, t);
}
return this;
},
refresh: function () {
this.setWhere(this.options.where);
},
_filterExistingFeatures: function (t, e, i, s) {
var r =
t && e ? this._getFeaturesInTimeRange(t, e) : this._currentSnapshot,
o = this._getFeaturesInTimeRange(i, s);
if (o.indexOf)
for (var n = 0; n < o.length; n++) {
var a = r.indexOf(o[n]);
0 <= a && r.splice(a, 1);
}
g.Util.requestAnimFrame(
g.Util.bind(function () {
this.removeLayers(r), this.addLayers(o);
}, this)
);
},
_getFeaturesInTimeRange: function (t, e) {
var i = [];
if (this.options.timeField.start && this.options.timeField.end)
var s = this._startTimeIndex.between(t, e),
r = this._endTimeIndex.between(t, e),
o = s.concat(r);
else {
if (!this._timeIndex)
return (
m(
"You must set timeField in the layer constructor in order to manipulate the start and end time filter."
),
[]
);
o = this._timeIndex.between(t, e);
}
for (var n = o.length - 1; 0 <= n; n--) i.push(o[n].id);
return i;
},
_buildTimeIndexes: function (t) {
var e;
if (this.options.timeField.start && this.options.timeField.end) {
for (var i = [], s = [], r = t.length - 1; 0 <= r; r--)
(e = t[r]),
i.push({
id: e.id,
value: new Date(e.properties[this.options.timeField.start]),
}),
s.push({
id: e.id,
value: new Date(e.properties[this.options.timeField.end]),
});
this._startTimeIndex.bulkAdd(i), this._endTimeIndex.bulkAdd(s);
} else {
var o = [];
for (r = t.length - 1; 0 <= r; r--)
(e = t[r]),
o.push({
id: e.id,
value: new Date(e.properties[this.options.timeField]),
});
this._timeIndex.bulkAdd(o);
}
},
_featureWithinTimeRange: function (t) {
if (!this.options.from || !this.options.to) return !0;
var e = +this.options.from.valueOf(),
i = +this.options.to.valueOf();
if ("string" == typeof this.options.timeField) {
var s = +t.properties[this.options.timeField];
return e <= s && s <= i;
}
if (this.options.timeField.start && this.options.timeField.end) {
var r = +t.properties[this.options.timeField.start],
o = +t.properties[this.options.timeField.end];
return (e <= r && r <= i) || (e <= o && o <= i) || (r <= e && i <= o);
}
},
_visibleZoom: function () {
if (!this._map) return !1;
var t = this._map.getZoom();
return !(t > this.options.maxZoom || t < this.options.minZoom);
},
_handleZoomChange: function () {
if (this._visibleZoom())
for (var t in this._cells) {
var e = this._cells[t].coords,
i = this._cacheKey(e);
this._cache[i] && this.addLayers(this._cache[i]);
}
else
this.removeLayers(this._currentSnapshot),
(this._currentSnapshot = []);
},
authenticate: function (t) {
return this.service.authenticate(t), this;
},
metadata: function (t, e) {
return this.service.metadata(t, e), this;
},
query: function () {
return this.service.query();
},
_getMetadata: function (i) {
this._metadata
? i(void 0, this._metadata)
: this.metadata(
g.Util.bind(function (t, e) {
(this._metadata = e), i(t, this._metadata);
}, this)
);
},
addFeature: function (t, e, i) {
this.addFeatures(t, e, i);
},
addFeatures: function (e, o, n) {
this._getMetadata(
g.Util.bind(function (t, s) {
var r;
t
? o && o.call(this, t, null)
: ((r = e.features ? e.features : [e]),
this.service.addFeatures(
e,
g.Util.bind(function (t, e) {
if (!t) {
for (var i = r.length - 1; 0 <= i; i--)
(r[i].properties[s.objectIdField] =
1 < r.length ? e[i].objectId : e.objectId),
(r[i].id = 1 < r.length ? e[i].objectId : e.objectId);
this._addFeatures(r);
}
o && o.call(n, t, e);
}, this)
));
}, this)
);
},
updateFeature: function (t, e, i) {
this.updateFeatures(t, e, i);
},
updateFeatures: function (t, s, r) {
var o = t.features ? t.features : [t];
this.service.updateFeatures(
t,
function (t, e) {
if (!t) {
for (var i = o.length - 1; 0 <= i; i--)
this.removeLayers([o[i].id], !0);
this._addFeatures(o);
}
s && s.call(r, t, e);
},
this
);
},
deleteFeature: function (t, e, i) {
this.deleteFeatures(t, e, i);
},
deleteFeatures: function (t, r, o) {
return this.service.deleteFeatures(
t,
function (t, e) {
var i = e.length ? e : [e];
if (!t && 0 < i.length)
for (var s = i.length - 1; 0 <= s; s--)
this.removeLayers([i[s].objectId], !0);
r && r.call(o, t, e);
},
this
);
},
}),
_t = gt.extend({
options: { cacheLayers: !0 },
initialize: function (t) {
t.apikey && (t.token = t.apikey),
gt.prototype.initialize.call(this, t),
(this._originalStyle = this.options.style),
(this._layers = {});
},
onRemove: function (t) {
for (var e in this._layers)
t.removeLayer(this._layers[e]),
this.fire(
"removefeature",
{ feature: this._layers[e].feature, permanent: !1 },
!0
);
return gt.prototype.onRemove.call(this, t);
},
createNewLayer: function (t) {
var e = g.GeoJSON.geometryToLayer(t, this.options);
return e && (e.defaultOptions = e.options), e;
},
_updateLayer: function (t, e) {
var i = [],
s = this.options.coordsToLatLng || g.GeoJSON.coordsToLatLng;
switch (
(e.properties && (t.feature.properties = e.properties),
e.geometry.type)
) {
case "Point":
(i = g.GeoJSON.coordsToLatLng(e.geometry.coordinates)),
t.setLatLng(i);
break;
case "LineString":
(i = g.GeoJSON.coordsToLatLngs(e.geometry.coordinates, 0, s)),
t.setLatLngs(i);
break;
case "MultiLineString":
case "Polygon":
(i = g.GeoJSON.coordsToLatLngs(e.geometry.coordinates, 1, s)),
t.setLatLngs(i);
break;
case "MultiPolygon":
(i = g.GeoJSON.coordsToLatLngs(e.geometry.coordinates, 2, s)),
t.setLatLngs(i);
}
},
createLayers: function (t) {
for (var e = t.length - 1; 0 <= e; e--) {
var i,
s = t[e],
r = this._layers[s.id];
!this._visibleZoom() ||
!r ||
this._map.hasLayer(r) ||
(this.options.timeField && !this._featureWithinTimeRange(s)) ||
(this._map.addLayer(r),
this.fire("addfeature", { feature: r.feature }, !0)),
r &&
0 < this.options.simplifyFactor &&
(r.setLatLngs || r.setLatLng) &&
this._updateLayer(r, s),
r ||
((i = this.createNewLayer(s))
? ((i.feature = s),
i.addEventParent(this),
this.options.onEachFeature &&
this.options.onEachFeature(i.feature, i),
(this._layers[i.feature.id] = i),
this.setFeatureStyle(i.feature.id, this.options.style),
this.fire("createfeature", { feature: i.feature }, !0),
this._visibleZoom() &&
(!this.options.timeField ||
(this.options.timeField &&
this._featureWithinTimeRange(s))) &&
this._map.addLayer(i))
: m("invalid GeoJSON encountered"));
}
},
addLayers: function (t) {
for (var e = t.length - 1; 0 <= e; e--) {
var i = this._layers[t[e]];
!i ||
(this.options.timeField &&
!this._featureWithinTimeRange(i.feature)) ||
(this._map.addLayer(i),
this.fire("addfeature", { feature: i.feature }, !0));
}
},
removeLayers: function (t, e) {
for (var i = t.length - 1; 0 <= i; i--) {
var s = t[i],
r = this._layers[s];
r &&
(this.fire(
"removefeature",
{ feature: r.feature, permanent: e },
!0
),
this._map.removeLayer(r)),
r && e && delete this._layers[s];
}
},
cellEnter: function (t, s) {
this._visibleZoom() &&
!this._zooming &&
this._map &&
g.Util.requestAnimFrame(
g.Util.bind(function () {
var t = this._cacheKey(s),
e = this._cellCoordsToKey(s),
i = this._cache[t];
this._activeCells[e] && i && this.addLayers(i);
}, this)
);
},
cellLeave: function (t, a) {
this._zooming ||
g.Util.requestAnimFrame(
g.Util.bind(function () {
if (this._map) {
var t = this._cacheKey(a),
e = this._cellCoordsToKey(a),
i = this._cache[t],
s = this._map.getBounds();
if (!this._activeCells[e] && i) {
for (var r = !0, o = 0; o < i.length; o++) {
var n = this._layers[i[o]];
n && n.getBounds && s.intersects(n.getBounds()) && (r = !1);
}
r && this.removeLayers(i, !this.options.cacheLayers),
!this.options.cacheLayers &&
r &&
(delete this._cache[t],
delete this._cells[e],
delete this._activeCells[e]);
}
}
}, this)
);
},
resetStyle: function () {
return (
(this.options.style = this._originalStyle),
this.eachFeature(function (t) {
this.resetFeatureStyle(t.feature.id);
}, this),
this
);
},
setStyle: function (e) {
return (
(this.options.style = e),
this.eachFeature(function (t) {
this.setFeatureStyle(t.feature.id, e);
}, this),
this
);
},
resetFeatureStyle: function (t) {
var e = this._layers[t],
i = this._originalStyle || g.Path.prototype.options;
return (
e &&
(g.Util.extend(e.options, e.defaultOptions),
this.setFeatureStyle(t, i)),
this
);
},
setFeatureStyle: function (t, e) {
var i = this._layers[t];
return (
"function" == typeof e && (e = e(i.feature)),
i.setStyle && i.setStyle(e),
this
);
},
eachActiveFeature: function (t, e) {
if (this._map) {
var i = this._map.getBounds();
for (var s in this._layers)
-1 !== this._currentSnapshot.indexOf(this._layers[s].feature.id) &&
(("function" == typeof this._layers[s].getLatLng &&
i.contains(this._layers[s].getLatLng())) ||
("function" == typeof this._layers[s].getBounds &&
i.intersects(this._layers[s].getBounds()))) &&
t.call(e, this._layers[s]);
}
return this;
},
eachFeature: function (t, e) {
for (var i in this._layers) t.call(e, this._layers[i]);
return this;
},
getFeature: function (t) {
return this._layers[t];
},
bringToBack: function () {
this.eachFeature(function (t) {
t.bringToBack && t.bringToBack();
});
},
bringToFront: function () {
this.eachFeature(function (t) {
t.bringToFront && t.bringToFront();
});
},
redraw: function (t) {
return t && this._redraw(t), this;
},
_redraw: function (t) {
var e,
i,
s = this._layers[t],
r = s.feature;
s &&
s.setIcon &&
this.options.pointToLayer &&
this.options.pointToLayer &&
((e = this.options.pointToLayer(
r,
g.latLng(r.geometry.coordinates[1], r.geometry.coordinates[0])
).options.icon),
s.setIcon(e)),
s &&
s.setStyle &&
this.options.pointToLayer &&
((i = this.options.pointToLayer(
r,
g.latLng(r.geometry.coordinates[1], r.geometry.coordinates[0])
).options),
this.setFeatureStyle(r.id, i)),
s && s.setStyle && this.options.style && this.resetStyle(r.id);
},
});
var vt = e;
(t.BasemapLayer = ut),
(t.DynamicMapLayer = mt),
(t.FeatureLayer = _t),
(t.FeatureLayerService = nt),
(t.FeatureManager = gt),
(t.Find = Q),
(t.Identify = H),
(t.IdentifyFeatures = X),
(t.IdentifyImage = $),
(t.ImageMapLayer = dt),
(t.ImageService = rt),
(t.MapService = it),
(t.Query = J),
(t.RasterLayer = pt),
(t.Service = et),
(t.Support = a),
(t.Task = W),
(t.TiledMapLayer = ht),
(t.Util = j),
(t.VERSION = vt),
(t.basemapLayer = function (t, e) {
return new ut(t, e);
}),
(t.dynamicMapLayer = function (t, e) {
return new mt(t, e);
}),
(t.featureLayer = function (t) {
return new _t(t);
}),
(t.featureLayerService = at),
(t.find = K),
(t.get = d),
(t.identify = function (t) {
return new H(t);
}),
(t.identifyFeatures = Y),
(t.identifyImage = tt),
(t.imageMapLayer = function (t, e) {
return new dt(t, e);
}),
(t.imageService = ot),
(t.mapService = st),
(t.options = r),
(t.post = o),
(t.query = V),
(t.request = c),
(t.service = function (t) {
return (t = U(t)), new et(t);
}),
(t.task = function (t) {
return (t = U(t)), new W(t);
}),
(t.tiledMapLayer = function (t, e) {
return new ht(t, e);
}),
Object.defineProperty(t, "__esModule", { value: !0 });
});
//# sourceMappingURL=esri-leaflet.js.map