1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352 |
- /* 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 =
- '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>';
- /* @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 <a href="https://www.esri.com">Esri</a>'
- ),
- 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 =
- '<span class="esri-dynamic-attribution">' +
- this.options.attribution +
- "</span>"),
- 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
|