@deck.gl/geo-layers 8.8.0-alpha.4 → 8.8.0-alpha.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +201 -473
- package/dist/es5/index.js +8 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +7 -5
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +35 -25
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +0 -4
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +1 -6
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +5 -0
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/find-index-binary.js +1 -1
- package/dist/esm/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +40 -33
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +1 -5
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +1 -5
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist/esm/tile-layer/utils.js +3 -0
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +6 -3
- package/src/index.ts +3 -1
- package/src/mvt-layer/{coordinate-transform.js → coordinate-transform.ts} +10 -8
- package/src/mvt-layer/{find-index-binary.js → find-index-binary.ts} +41 -10
- package/src/mvt-layer/{mvt-layer.js → mvt-layer.ts} +143 -58
- package/src/tile-layer/tile-2d-header.ts +15 -14
- package/src/tile-layer/tile-layer.ts +27 -28
- package/src/tile-layer/tileset-2d.ts +13 -13
- package/src/tile-layer/types.ts +5 -1
- package/src/tile-layer/utils.ts +10 -1
|
@@ -23,8 +23,6 @@ var _loaderUtils = require("@loaders.gl/loader-utils");
|
|
|
23
23
|
|
|
24
24
|
var _core = require("@math.gl/core");
|
|
25
25
|
|
|
26
|
-
var _core2 = require("@deck.gl/core");
|
|
27
|
-
|
|
28
26
|
var _STRATEGIES;
|
|
29
27
|
|
|
30
28
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
@@ -213,7 +211,7 @@ var Tileset2D = function () {
|
|
|
213
211
|
}
|
|
214
212
|
} else if (this.needsReload) {
|
|
215
213
|
this._selectedTiles = this._selectedTiles.map(function (tile) {
|
|
216
|
-
return _this2._getTile(tile.index);
|
|
214
|
+
return _this2._getTile(tile.index, true);
|
|
217
215
|
});
|
|
218
216
|
}
|
|
219
217
|
|
|
@@ -269,7 +267,6 @@ var Tileset2D = function () {
|
|
|
269
267
|
}, {
|
|
270
268
|
key: "getTileMetadata",
|
|
271
269
|
value: function getTileMetadata(index) {
|
|
272
|
-
(0, _core2.assert)(this._viewport);
|
|
273
270
|
var tileSize = this.opts.tileSize;
|
|
274
271
|
return {
|
|
275
272
|
bbox: (0, _utils.tileToBoundingBox)(this._viewport, index.x, index.y, index.z, tileSize)
|
|
@@ -290,7 +287,6 @@ var Tileset2D = function () {
|
|
|
290
287
|
}, {
|
|
291
288
|
key: "updateTileStates",
|
|
292
289
|
value: function updateTileStates() {
|
|
293
|
-
(0, _core2.assert)(this._selectedTiles);
|
|
294
290
|
var refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;
|
|
295
291
|
var visibilities = new Array(this._cache.size);
|
|
296
292
|
var i = 0;
|
|
@@ -431,7 +427,6 @@ var Tileset2D = function () {
|
|
|
431
427
|
}, {
|
|
432
428
|
key: "_resizeCache",
|
|
433
429
|
value: function _resizeCache() {
|
|
434
|
-
(0, _core2.assert)(this.selectedTiles);
|
|
435
430
|
var _cache = this._cache,
|
|
436
431
|
opts = this.opts;
|
|
437
432
|
var maxCacheSize = opts.maxCacheSize || (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.ts"],"names":["TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","Matrix4","_modelMatrixInverse","setOptions","every","isLoaded","some","needsReload","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","values","isLoading","abort","clear","keys","id","get","includes","delete","setNeedsReload","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","x","y","z","bbox","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","selectedTiles","maxCacheSize","Infinity","overflown","onTileUnload","sort","t1","t2","zoom","create","getTileId","Tile2DHeader","getTileMetadata","getTileZoom","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","Boolean","sortedTiles","child","startTile","content"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAKA,IAAMA,kBAAkB,GAAG,CAA3B;AACA,IAAMC,kBAAkB,GAAG,CAA3B;AAoBO,IAAMC,cAAc,GAAG,OAAvB;;AACA,IAAMC,gBAAgB,GAAG,YAAzB;;AACA,IAAMC,gBAAgB,GAAG,gBAAzB;;AASP,IAAMC,mBAAmB,GAAG,CAA5B;AAEA,IAAMC,UAAU,iEACbF,gBADa,EACMG,sBADN,8CAEbJ,gBAFa,EAEMK,sBAFN,8CAGbN,cAHa,EAGI,YAAM,CAAE,CAHZ,eAAhB;;IA4BqBO,S;AAuBnB,qBAAYC,IAAZ,EAAkC;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAChC,SAAKA,IAAL,GAAYA,IAAZ;;AAEA,SAAKC,UAAL,GAAkB,UAAAC,IAAI,EAAI;AACxB,MAAA,KAAI,CAACF,IAAL,CAAUC,UAAV,CAAqBC,IAArB;;AACA,UAAI,KAAI,CAACF,IAAL,CAAUG,gBAAd,EAAgC;AAC9B,QAAA,KAAI,CAACC,cAAL,IAAuBF,IAAI,CAACG,UAA5B;;AACA,QAAA,KAAI,CAACC,YAAL;AACD;AACF,KAND;;AAQA,SAAKC,iBAAL,GAAyB,IAAIC,6BAAJ,CAAqB;AAC5CC,MAAAA,WAAW,EAAET,IAAI,CAACS,WAD0B;AAE5CC,MAAAA,gBAAgB,EAAEV,IAAI,CAACS,WAAL,GAAmB;AAFO,KAArB,CAAzB;AAMA,SAAKE,MAAL,GAAc,IAAIC,GAAJ,EAAd;AACA,SAAKC,MAAL,GAAc,EAAd;AACA,SAAKC,MAAL,GAAc,KAAd;AACA,SAAKV,cAAL,GAAsB,CAAtB;AAGA,SAAKW,SAAL,GAAiB,IAAjB;AACA,SAAKC,cAAL,GAAsB,IAAtB;AACA,SAAKC,YAAL,GAAoB,CAApB;AAEA,SAAKC,YAAL,GAAoB,IAAIC,aAAJ,EAApB;AACA,SAAKC,mBAAL,GAA2B,IAAID,aAAJ,EAA3B;AAEA,SAAKE,UAAL,CAAgBrB,IAAhB;AACD;;;;SAGD,eAAY;AACV,aAAO,KAAKa,MAAZ;AACD;;;SAED,eAA2C;AACzC,aAAO,KAAKG,cAAZ;AACD;;;SAED,eAAwB;AACtB,aAAO,KAAKA,cAAL,KAAwB,IAAxB,IAAgC,KAAKA,cAAL,CAAoBM,KAApB,CAA0B,UAAApB,IAAI;AAAA,eAAIA,IAAI,CAACqB,QAAT;AAAA,OAA9B,CAAvC;AACD;;;SAED,eAA2B;AACzB,aAAO,KAAKP,cAAL,KAAwB,IAAxB,IAAgC,KAAKA,cAAL,CAAoBQ,IAApB,CAAyB,UAAAtB,IAAI;AAAA,eAAIA,IAAI,CAACuB,WAAT;AAAA,OAA7B,CAAvC;AACD;;;WAED,oBAAWzB,IAAX,EAAuC;AACrC0B,MAAAA,MAAM,CAACC,MAAP,CAAc,KAAK3B,IAAnB,EAAyBA,IAAzB;;AACA,UAAI4B,MAAM,CAACC,QAAP,CAAgB7B,IAAI,CAAC8B,OAArB,CAAJ,EAAmC;AACjC,aAAKC,QAAL,GAAgBC,IAAI,CAACC,KAAL,CAAWjC,IAAI,CAAC8B,OAAhB,CAAhB;AACD;;AACD,UAAIF,MAAM,CAACC,QAAP,CAAgB7B,IAAI,CAACkC,OAArB,CAAJ,EAAmC;AACjC,aAAKC,QAAL,GAAgBH,IAAI,CAACI,IAAL,CAAUpC,IAAI,CAACkC,OAAf,CAAhB;AACD;AACF;;;WAGD,oBAAiB;AAAA,iDACI,KAAKvB,MAAL,CAAY0B,MAAZ,EADJ;AAAA;;AAAA;AACf,4DAAyC;AAAA,cAA9BnC,KAA8B;;AACvC,cAAIA,KAAI,CAACoC,SAAT,EAAoB;AAClBpC,YAAAA,KAAI,CAACqC,KAAL;AACD;AACF;AALc;AAAA;AAAA;AAAA;AAAA;;AAMf,WAAK5B,MAAL,CAAY6B,KAAZ;;AACA,WAAK3B,MAAL,GAAc,EAAd;AACA,WAAKG,cAAL,GAAsB,IAAtB;AACD;;;WAED,qBAAkB;AAAA,kDACC,KAAKL,MAAL,CAAY8B,IAAZ,EADD;AAAA;;AAAA;AAChB,+DAAqC;AAAA,cAA1BC,EAA0B;;AACnC,cAAMxC,MAAI,GAAG,KAAKS,MAAL,CAAYgC,GAAZ,CAAgBD,EAAhB,CAAb;;AACA,cAAI,CAAC,KAAK1B,cAAN,IAAwB,CAAC,KAAKA,cAAL,CAAoB4B,QAApB,CAA6B1C,MAA7B,CAA7B,EAAiE;AAC/D,iBAAKS,MAAL,CAAYkC,MAAZ,CAAmBH,EAAnB;AACD,WAFD,MAEO;AACLxC,YAAAA,MAAI,CAAC4C,cAAL;AACD;AACF;AARe;AAAA;AAAA;AAAA;AAAA;AASjB;;;WAKD,gBACEC,QADF,EAGU;AAAA;;AAAA,qFAD0D,EAC1D;AAAA,UADPC,MACO,QADPA,MACO;AAAA,UADCC,WACD,QADCA,WACD;;AACR,UAAMC,oBAAoB,GAAG,IAAI/B,aAAJ,CAAY8B,WAAZ,CAA7B;AACA,UAAME,gBAAgB,GAAG,CAACD,oBAAoB,CAACE,MAArB,CAA4B,KAAKlC,YAAjC,CAA1B;;AACA,UAAI,CAAC,KAAKH,SAAN,IAAmB,CAACgC,QAAQ,CAACK,MAAT,CAAgB,KAAKrC,SAArB,CAApB,IAAuDoC,gBAA3D,EAA6E;AAC3E,YAAIA,gBAAJ,EAAsB;AACpB,eAAK/B,mBAAL,GAA2B8B,oBAAoB,CAACG,KAArB,GAA6BC,MAA7B,EAA3B;AACA,eAAKpC,YAAL,GAAoBgC,oBAApB;AACD;;AACD,aAAKnC,SAAL,GAAiBgC,QAAjB;AACA,YAAMQ,WAAW,GAAG,KAAKC,cAAL,CAAoB;AACtCT,UAAAA,QAAQ,EAARA,QADsC;AAEtCjB,UAAAA,OAAO,EAAE,KAAKC,QAFwB;AAGtCG,UAAAA,OAAO,EAAE,KAAKC,QAHwB;AAItCa,UAAAA,MAAM,EAANA,MAJsC;AAKtCC,UAAAA,WAAW,EAAE,KAAK/B,YALoB;AAMtCuC,UAAAA,kBAAkB,EAAE,KAAKrC;AANa,SAApB,CAApB;AAQA,aAAKJ,cAAL,GAAsBuC,WAAW,CAACG,GAAZ,CAAgB,UAAAC,KAAK;AAAA,iBAAI,MAAI,CAACC,QAAL,CAAcD,KAAd,EAAqB,IAArB,CAAJ;AAAA,SAArB,CAAtB;;AAEA,YAAI,KAAK7C,MAAT,EAAiB;AAEf,eAAK+C,YAAL;AACD;AAEF,OArBD,MAqBO,IAAI,KAAKpC,WAAT,EAAsB;AAC3B,aAAKT,cAAL,GAAsB,KAAKA,cAAL,CAAqB0C,GAArB,CAAyB,UAAAxD,IAAI;AAAA,iBAAI,MAAI,CAAC0D,QAAL,CAAc1D,IAAI,CAACyD,KAAnB,CAAJ;AAAA,SAA7B,CAAtB;AACD;;AAGD,UAAMG,OAAO,GAAG,KAAKC,gBAAL,EAAhB;;AACA,WAAKC,cAAL;;AAEA,UAAI,KAAKlD,MAAT,EAAiB;AAEf,aAAKR,YAAL;AACD;;AAED,UAAIwD,OAAJ,EAAa;AACX,aAAK7C,YAAL;AACD;;AAED,aAAO,KAAKA,YAAZ;AACD;;;WAKD,+BAgBgB;AAAA,UAfd8B,QAec,SAfdA,QAec;AAAA,UAddjB,OAcc,SAddA,OAcc;AAAA,UAbdI,OAac,SAbdA,OAac;AAAA,UAZdc,MAYc,SAZdA,MAYc;AAAA,UAXdC,WAWc,SAXdA,WAWc;AAAA,UAVdQ,kBAUc,SAVdA,kBAUc;AACd,uBAAuC,KAAKzD,IAA5C;AAAA,UAAOiE,QAAP,cAAOA,QAAP;AAAA,UAAiBC,MAAjB,cAAiBA,MAAjB;AAAA,UAAyBC,UAAzB,cAAyBA,UAAzB;AACA,aAAO,2BAAe;AACpBpB,QAAAA,QAAQ,EAARA,QADoB;AAEpBjB,QAAAA,OAAO,EAAPA,OAFoB;AAGpBI,QAAAA,OAAO,EAAPA,OAHoB;AAIpBc,QAAAA,MAAM,EAANA,MAJoB;AAKpBiB,QAAAA,QAAQ,EAARA,QALoB;AAMpBC,QAAAA,MAAM,EAAEA,MANY;AAOpBjB,QAAAA,WAAW,EAAXA,WAPoB;AAQpBQ,QAAAA,kBAAkB,EAAlBA,kBARoB;AASpBU,QAAAA,UAAU,EAAVA;AAToB,OAAf,CAAP;AAWD;;;WAGD,mBAAUR,KAAV,EAA4B;AAC1B,uBAAUA,KAAK,CAACS,CAAhB,cAAqBT,KAAK,CAACU,CAA3B,cAAgCV,KAAK,CAACW,CAAtC;AACD;;;WAGD,qBAAYX,KAAZ,EAA8B;AAC5B,aAAOA,KAAK,CAACW,CAAb;AACD;;;WAGD,yBAAgBX,KAAhB,EAAkC;AAChC,yBAAO,KAAK5C,SAAZ;AACA,UAAOkD,QAAP,GAAmB,KAAKjE,IAAxB,CAAOiE,QAAP;AACA,aAAO;AAACM,QAAAA,IAAI,EAAE,8BAAkB,KAAKxD,SAAvB,EAAkC4C,KAAK,CAACS,CAAxC,EAA2CT,KAAK,CAACU,CAAjD,EAAoDV,KAAK,CAACW,CAA1D,EAA6DL,QAA7D;AAAP,OAAP;AACD;;;WAGD,wBAAeN,KAAf,EAAiC;AAC/B,UAAMS,CAAC,GAAGpC,IAAI,CAACC,KAAL,CAAW0B,KAAK,CAACS,CAAN,GAAU,CAArB,CAAV;AACA,UAAMC,CAAC,GAAGrC,IAAI,CAACC,KAAL,CAAW0B,KAAK,CAACU,CAAN,GAAU,CAArB,CAAV;AACA,UAAMC,CAAC,GAAGX,KAAK,CAACW,CAAN,GAAU,CAApB;AACA,aAAO;AAACF,QAAAA,CAAC,EAADA,CAAD;AAAIC,QAAAA,CAAC,EAADA,CAAJ;AAAOC,QAAAA,CAAC,EAADA;AAAP,OAAP;AACD;;;WAGD,4BAAmB;AACjB,yBAAO,KAAKtD,cAAZ;AACA,UAAMwD,kBAAkB,GAAG,KAAKxE,IAAL,CAAUwE,kBAAV,IAAgC9E,gBAA3D;AAEA,UAAM+E,YAAY,GAAG,IAAIC,KAAJ,CAAU,KAAK/D,MAAL,CAAYgE,IAAtB,CAArB;AACA,UAAIC,CAAC,GAAG,CAAR;;AALiB,kDAOE,KAAKjE,MAAL,CAAY0B,MAAZ,EAPF;AAAA;;AAAA;AAOjB,+DAAyC;AAAA,cAA9BnC,MAA8B;AAEvCuE,UAAAA,YAAY,CAACG,CAAC,EAAF,CAAZ,GAAoB1E,MAAI,CAAC2E,SAAzB;AACA3E,UAAAA,MAAI,CAAC4E,UAAL,GAAkB,KAAlB;AACA5E,UAAAA,MAAI,CAAC2E,SAAL,GAAiB,KAAjB;AACD;AAZgB;AAAA;AAAA;AAAA;AAAA;;AAAA,kDAaE,KAAK7D,cAbP;AAAA;;AAAA;AAajB,+DAAwC;AAAA,cAA7Bd,MAA6B;AACtCA,UAAAA,MAAI,CAAC4E,UAAL,GAAkB,IAAlB;AACA5E,UAAAA,MAAI,CAAC2E,SAAL,GAAiB,IAAjB;AACD;AAhBgB;AAAA;AAAA;AAAA;AAAA;;AAmBjB,OAAC,OAAOL,kBAAP,KAA8B,UAA9B,GACGA,kBADH,GAEG5E,UAAU,CAAC4E,kBAAD,CAFd,EAEoCE,KAAK,CAACK,IAAN,CAAW,KAAKpE,MAAL,CAAY0B,MAAZ,EAAX,CAFpC;AAIAuC,MAAAA,CAAC,GAAG,CAAJ;;AAvBiB,kDAyBE,KAAKjE,MAAL,CAAY0B,MAAZ,EAzBF;AAAA;;AAAA;AAyBjB,+DAAyC;AAAA,cAA9BnC,MAA8B;;AACvC,cAAIuE,YAAY,CAACG,CAAC,EAAF,CAAZ,KAAsB1E,MAAI,CAAC2E,SAA/B,EAA0C;AACxC,mBAAO,IAAP;AACD;AACF;AA7BgB;AAAA;AAAA;AAAA;AAAA;;AA+BjB,aAAO,KAAP;AACD;;;WAID,0BAAuB;AACrB,UAAOpE,WAAP,GAAsB,KAAKT,IAA3B,CAAOS,WAAP;AAEA,UAAMuE,eAA+B,GAAG,EAAxC;AACA,UAAIC,mBAAmB,GAAG,CAA1B;;AAJqB,kDAKF,KAAKtE,MAAL,CAAY0B,MAAZ,EALE;AAAA;;AAAA;AAKrB,+DAAyC;AAAA,cAA9BnC,MAA8B;;AAEvC,cAAIA,MAAI,CAACoC,SAAT,EAAoB;AAClB2C,YAAAA,mBAAmB;;AACnB,gBAAI,CAAC/E,MAAI,CAAC4E,UAAN,IAAoB,CAAC5E,MAAI,CAAC2E,SAA9B,EAAyC;AACvCG,cAAAA,eAAe,CAACE,IAAhB,CAAqBhF,MAArB;AACD;AACF;AACF;AAboB;AAAA;AAAA;AAAA;AAAA;;AAerB,aAAOO,WAAW,GAAG,CAAd,IAAmBwE,mBAAmB,GAAGxE,WAAzC,IAAwDuE,eAAe,CAACG,MAAhB,GAAyB,CAAxF,EAA2F;AAEzF,YAAMjF,MAAI,GAAG8E,eAAe,CAACI,KAAhB,EAAb;;AACAlF,QAAAA,MAAI,CAACqC,KAAL;;AACA0C,QAAAA,mBAAmB;AACpB;AACF;;;WAGD,wBAAe;AACb,UAAOtE,MAAP,GAAiB,IAAjB,CAAOA,MAAP;;AADa,kDAIMA,MAAM,CAAC0B,MAAP,EAJN;AAAA;;AAAA;AAIb,+DAAoC;AAAA,cAAzBnC,MAAyB;AAClCA,UAAAA,MAAI,CAACmF,MAAL,GAAc,IAAd;;AACA,cAAInF,MAAI,CAACoF,QAAT,EAAmB;AACjBpF,YAAAA,MAAI,CAACoF,QAAL,CAAcH,MAAd,GAAuB,CAAvB;AACD;AACF;AATY;AAAA;AAAA;AAAA;AAAA;;AAAA,kDAYMxE,MAAM,CAAC0B,MAAP,EAZN;AAAA;;AAAA;AAYb,+DAAoC;AAAA,cAAzBnC,MAAyB;;AAClC,cAAMmF,MAAM,GAAG,KAAKE,mBAAL,CAAyBrF,MAAzB,CAAf;;AACAA,UAAAA,MAAI,CAACmF,MAAL,GAAcA,MAAd;;AACA,cAAIA,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEC,QAAZ,EAAsB;AACpBD,YAAAA,MAAM,CAACC,QAAP,CAAgBJ,IAAhB,CAAqBhF,MAArB;AACD;AACF;AAlBY;AAAA;AAAA;AAAA;AAAA;AAmBd;;;WAMD,wBAAe;AACb,yBAAO,KAAKsF,aAAZ;AACA,UAAO7E,MAAP,GAAuB,IAAvB,CAAOA,MAAP;AAAA,UAAeX,IAAf,GAAuB,IAAvB,CAAeA,IAAf;AAEA,UAAMyF,YAAY,GAChBzF,IAAI,CAACyF,YAAL,KACCzF,IAAI,CAACG,gBAAL,GAAwBuF,QAAxB,GAAmC/F,mBAAmB,GAAG,KAAK6F,aAAL,CAAmBL,MAD7E,CADF;AAGA,UAAMhF,gBAAgB,GAAGH,IAAI,CAACG,gBAAL,IAAyBuF,QAAlD;AAEA,UAAMC,SAAS,GAAGhF,MAAM,CAACgE,IAAP,GAAcc,YAAd,IAA8B,KAAKrF,cAAL,GAAsBD,gBAAtE;;AAEA,UAAIwF,SAAJ,EAAe;AAAA,oDACYhF,MADZ;AAAA;;AAAA;AACb,iEAAiC;AAAA;AAAA,gBAArB+B,EAAqB;AAAA,gBAAjBxC,OAAiB;;AAC/B,gBAAI,CAACA,OAAI,CAAC2E,SAAV,EAAqB;AAEnB,mBAAKzE,cAAL,IAAuBJ,IAAI,CAACG,gBAAL,GAAwBD,OAAI,CAACG,UAA7B,GAA0C,CAAjE;;AACAM,cAAAA,MAAM,CAACkC,MAAP,CAAcH,EAAd;;AACA,mBAAK1C,IAAL,CAAU4F,YAAV,CAAuB1F,OAAvB;AACD;;AACD,gBAAIS,MAAM,CAACgE,IAAP,IAAec,YAAf,IAA+B,KAAKrF,cAAL,IAAuBD,gBAA1D,EAA4E;AAC1E;AACD;AACF;AAXY;AAAA;AAAA;AAAA;AAAA;;AAYb,aAAK0D,YAAL;;AACA,aAAK/C,MAAL,GAAc,IAAd;AACD;;AACD,UAAI,KAAKA,MAAT,EAAiB;AAEf,aAAKD,MAAL,GAAc6D,KAAK,CAACK,IAAN,CAAW,KAAKpE,MAAL,CAAY0B,MAAZ,EAAX,EAAiCwD,IAAjC,CAAsC,UAACC,EAAD,EAAKC,EAAL;AAAA,iBAAYD,EAAE,CAACE,IAAH,GAAUD,EAAE,CAACC,IAAzB;AAAA,SAAtC,CAAd;AAEA,aAAKlF,MAAL,GAAc,KAAd;AACD;AACF;;;WAKD,kBAAS6C,KAAT,EAA2BsC,MAA3B,EAAuE;AACrE,UAAMvD,EAAE,GAAG,KAAKwD,SAAL,CAAevC,KAAf,CAAX;;AACA,UAAIzD,IAAI,GAAG,KAAKS,MAAL,CAAYgC,GAAZ,CAAgBD,EAAhB,CAAX;;AACA,UAAIjB,WAAW,GAAG,KAAlB;;AAEA,UAAI,CAACvB,IAAD,IAAS+F,MAAb,EAAqB;AACnB/F,QAAAA,IAAI,GAAG,IAAIiG,qBAAJ,CAAiBxC,KAAjB,CAAP;AACAjC,QAAAA,MAAM,CAACC,MAAP,CAAczB,IAAd,EAAoB,KAAKkG,eAAL,CAAqBlG,IAAI,CAACyD,KAA1B,CAApB;AACAjC,QAAAA,MAAM,CAACC,MAAP,CAAczB,IAAd,EAAoB;AAACwC,UAAAA,EAAE,EAAFA,EAAD;AAAKsD,UAAAA,IAAI,EAAE,KAAKK,WAAL,CAAiBnG,IAAI,CAACyD,KAAtB;AAAX,SAApB;AACAlC,QAAAA,WAAW,GAAG,IAAd;;AACA,aAAKd,MAAL,CAAY2F,GAAZ,CAAgB5D,EAAhB,EAAoBxC,IAApB;;AACA,aAAKY,MAAL,GAAc,IAAd;AACD,OAPD,MAOO,IAAIZ,IAAI,IAAIA,IAAI,CAACuB,WAAjB,EAA8B;AACnCA,QAAAA,WAAW,GAAG,IAAd;AACD;;AACD,UAAIvB,IAAI,IAAIuB,WAAZ,EAAyB;AAEvBvB,QAAAA,IAAI,CAACqG,QAAL,CAAc;AACZC,UAAAA,OAAO,EAAE,KAAKxG,IAAL,CAAUyG,WADP;AAEZC,UAAAA,gBAAgB,EAAE,KAAKnG,iBAFX;AAGZoG,UAAAA,MAAM,EAAE,KAAK1G,UAHD;AAIZ2G,UAAAA,OAAO,EAAE,KAAK5G,IAAL,CAAU6G;AAJP,SAAd;AAMD;;AAED,aAAO3G,IAAP;AACD;;;WAED,6BAAoBA,IAApB,EAA6D;AAC3D,2BAAuB,IAAvB,CAAOiC,QAAP;AAAA,UAAOA,QAAP,+BAAkB,CAAlB;;AAEA,UAAIwB,KAAK,GAAGzD,IAAI,CAACyD,KAAjB;;AACA,aAAO,KAAK0C,WAAL,CAAiB1C,KAAjB,IAA0BxB,QAAjC,EAA2C;AACzCwB,QAAAA,KAAK,GAAG,KAAKmD,cAAL,CAAoBnD,KAApB,CAAR;;AACA,YAAM0B,MAAM,GAAG,KAAKzB,QAAL,CAAcD,KAAd,CAAf;;AACA,YAAI0B,MAAJ,EAAY;AACV,iBAAOA,MAAP;AACD;AACF;;AACD,aAAO,IAAP;AACD;;;;;;;AASH,SAASxF,sBAAT,CAAgCkH,QAAhC,EAA0D;AAAA,+CACrCA,QADqC;AAAA;;AAAA;AACxD,8DAA6B;AAAA,UAAlB7G,OAAkB;AAC3BA,MAAAA,OAAI,CAAC8G,KAAL,GAAa,CAAb;AACD;AAHuD;AAAA;AAAA;AAAA;AAAA;;AAAA,+CAIrCD,QAJqC;AAAA;;AAAA;AAIxD,8DAA6B;AAAA,UAAlB7G,OAAkB;;AAC3B,UAAIA,OAAI,CAAC4E,UAAL,IAAmB,CAACmC,yBAAyB,CAAC/G,OAAD,CAAjD,EAAyD;AACvDgH,QAAAA,wBAAwB,CAAChH,OAAD,CAAxB;AACD;AACF;AARuD;AAAA;AAAA;AAAA;AAAA;;AAAA,+CASrC6G,QATqC;AAAA;;AAAA;AASxD,8DAA6B;AAAA,UAAlB7G,OAAkB;AAC3BA,MAAAA,OAAI,CAAC2E,SAAL,GAAiBsC,OAAO,CAACjH,OAAI,CAAC8G,KAAL,GAAczH,kBAAf,CAAxB;AACD;AAXuD;AAAA;AAAA;AAAA;AAAA;AAYzD;;AAGD,SAASO,sBAAT,CAAgCiH,QAAhC,EAA0D;AAAA,+CACrCA,QADqC;AAAA;;AAAA;AACxD,8DAA6B;AAAA,UAAlB7G,OAAkB;AAC3BA,MAAAA,OAAI,CAAC8G,KAAL,GAAa,CAAb;AACD;AAHuD;AAAA;AAAA;AAAA;AAAA;;AAAA,+CAIrCD,QAJqC;AAAA;;AAAA;AAIxD,8DAA6B;AAAA,UAAlB7G,OAAkB;;AAC3B,UAAIA,OAAI,CAAC4E,UAAT,EAAqB;AACnBmC,QAAAA,yBAAyB,CAAC/G,OAAD,CAAzB;AACD;AACF;AARuD;AAAA;AAAA;AAAA;AAAA;;AAUxD,MAAMkH,WAAW,GAAG1C,KAAK,CAACK,IAAN,CAAWgC,QAAX,EAAqBlB,IAArB,CAA0B,UAACC,EAAD,EAAKC,EAAL;AAAA,WAAYD,EAAE,CAACE,IAAH,GAAUD,EAAE,CAACC,IAAzB;AAAA,GAA1B,CAApB;;AAVwD,+CAWrCoB,WAXqC;AAAA;;AAAA;AAWxD,8DAAgC;AAAA,UAArBlH,OAAqB;AAC9BA,MAAAA,OAAI,CAAC2E,SAAL,GAAiBsC,OAAO,CAACjH,OAAI,CAAC8G,KAAL,GAAczH,kBAAf,CAAxB;;AAEA,UAAIW,OAAI,CAACoF,QAAL,KAAkBpF,OAAI,CAAC2E,SAAL,IAAkB3E,OAAI,CAAC8G,KAAL,GAAc1H,kBAAlD,CAAJ,EAA2E;AAAA,qDAErDY,OAAI,CAACoF,QAFgD;AAAA;;AAAA;AAEzE,oEAAmC;AAAA,gBAAxB+B,KAAwB;AACjCA,YAAAA,KAAK,CAACL,KAAN,GAAc1H,kBAAd;AACD;AAJwE;AAAA;AAAA;AAAA;AAAA;AAK1E,OALD,MAKO,IAAIY,OAAI,CAAC4E,UAAT,EAAqB;AAC1BoC,QAAAA,wBAAwB,CAAChH,OAAD,CAAxB;AACD;AACF;AAtBuD;AAAA;AAAA;AAAA;AAAA;AAuBzD;;AAGD,SAAS+G,yBAAT,CAAmCK,SAAnC,EAA4D;AAC1D,MAAIpH,IAAyB,GAAGoH,SAAhC;;AACA,SAAOpH,IAAP,EAAa;AACX,QAAIA,IAAI,CAACqB,QAAL,IAAiBrB,IAAI,CAACqH,OAA1B,EAAmC;AACjCrH,MAAAA,IAAI,CAAC8G,KAAL,IAAezH,kBAAf;AACA,aAAO,IAAP;AACD;;AACDW,IAAAA,IAAI,GAAGA,IAAI,CAACmF,MAAZ;AACD;;AACD,SAAO,KAAP;AACD;;AAGD,SAAS6B,wBAAT,CAAkChH,IAAlC,EAAwC;AAAA,+CAClBA,IAAI,CAACoF,QADa;AAAA;;AAAA;AACtC,8DAAmC;AAAA,UAAxB+B,KAAwB;;AACjC,UAAIA,KAAK,CAAC9F,QAAN,IAAkB8F,KAAK,CAACE,OAA5B,EAAqC;AACnCF,QAAAA,KAAK,CAACL,KAAN,IAAezH,kBAAf;AACD,OAFD,MAEO;AACL2H,QAAAA,wBAAwB,CAACG,KAAD,CAAxB;AACD;AACF;AAPqC;AAAA;AAAA;AAAA;AAAA;AAQvC","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from '@math.gl/core';\nimport {assert, Viewport} from '@deck.gl/core';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLayerProps} from './tile-layer';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | typeof STRATEGY_NEVER\n | typeof STRATEGY_REPLACE\n | typeof STRATEGY_DEFAULT\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps = Pick<\n TileLayerProps,\n | 'getTileData'\n | 'tileSize'\n | 'maxCacheSize'\n | 'maxCacheByteSize'\n | 'refinementStrategy'\n | 'extent'\n | 'maxZoom'\n | 'minZoom'\n | 'maxRequests'\n | 'zoomOffset'\n> & {\n onTileLoad: (tile: Tile2DHeader) => void;\n onTileUnload: (tile: Tile2DHeader) => void;\n onTileError: (error: any, tile: Tile2DHeader) => void;\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport default class Tileset2D {\n private opts: Tileset2DProps;\n private _requestScheduler: RequestScheduler;\n private _cache: Map<string, Tile2DHeader>;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange; modelMatrix?: Matrix4} = {}\n ): number {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!this._viewport || !viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index));\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex) {\n assert(this._viewport);\n const {tileSize} = this.opts;\n return {bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n updateTileStates() {\n assert(this._selectedTiles);\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n _pruneRequests(): void {\n const {maxRequests} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n _resizeCache() {\n assert(this.selectedTiles);\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n _getTile(index: TileIndex, create: true): Tile2DHeader;\n _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tileset-2d.ts"],"names":["TILE_STATE_VISITED","TILE_STATE_VISIBLE","STRATEGY_NEVER","STRATEGY_REPLACE","STRATEGY_DEFAULT","DEFAULT_CACHE_SCALE","STRATEGIES","updateTileStateDefault","updateTileStateReplace","Tileset2D","opts","onTileLoad","tile","maxCacheByteSize","_cacheByteSize","byteLength","_resizeCache","_requestScheduler","RequestScheduler","maxRequests","throttleRequests","_cache","Map","_tiles","_dirty","_viewport","_selectedTiles","_frameNumber","_modelMatrix","Matrix4","_modelMatrixInverse","setOptions","every","isLoaded","some","needsReload","Object","assign","Number","isFinite","maxZoom","_maxZoom","Math","floor","minZoom","_minZoom","ceil","values","isLoading","abort","clear","keys","id","get","includes","delete","setNeedsReload","viewport","zRange","modelMatrix","modelMatrixAsMatrix4","isModelMatrixNew","equals","clone","invert","tileIndices","getTileIndices","modelMatrixInverse","map","index","_getTile","_rebuildTree","changed","updateTileStates","_pruneRequests","tileSize","extent","zoomOffset","x","y","z","bbox","refinementStrategy","visibilities","Array","size","i","isVisible","isSelected","from","abortCandidates","ongoingRequestCount","push","length","shift","parent","children","_getNearestAncestor","maxCacheSize","Infinity","selectedTiles","overflown","onTileUnload","sort","t1","t2","zoom","create","getTileId","Tile2DHeader","getTileMetadata","getTileZoom","set","loadData","getData","getTileData","requestScheduler","onLoad","onError","onTileError","getParentIndex","allTiles","state","getPlaceholderInAncestors","getPlaceholderInChildren","Boolean","sortedTiles","child","startTile","content"],"mappings":"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","sourcesContent":["import Tile2DHeader from './tile-2d-header';\nimport {getTileIndices, tileToBoundingBox} from './utils';\nimport {RequestScheduler} from '@loaders.gl/loader-utils';\nimport {Matrix4} from '@math.gl/core';\nimport {Viewport} from '@deck.gl/core';\nimport {Bounds, TileIndex, ZRange} from './types';\nimport {TileLayerProps} from './tile-layer';\n\n// bit masks\nconst TILE_STATE_VISITED = 1;\nconst TILE_STATE_VISIBLE = 2;\n/*\n show cached parent tile if children are loading\n +-----------+ +-----+ +-----+-----+\n | | | | | | |\n | | | | | | |\n | | --> +-----+-----+ -> +-----+-----+\n | | | | | | |\n | | | | | | |\n +-----------+ +-----+ +-----+-----+\n\n show cached children tiles when parent is loading\n +-------+---- +------------\n | | |\n | | |\n | | |\n +-------+---- --> |\n | | |\n */\n\nexport const STRATEGY_NEVER = 'never';\nexport const STRATEGY_REPLACE = 'no-overlap';\nexport const STRATEGY_DEFAULT = 'best-available';\n\nexport type RefinementStrategyFunction = (tiles: Tile2DHeader[]) => void;\nexport type RefinementStrategy =\n | typeof STRATEGY_NEVER\n | typeof STRATEGY_REPLACE\n | typeof STRATEGY_DEFAULT\n | RefinementStrategyFunction;\n\nconst DEFAULT_CACHE_SCALE = 5;\n\nconst STRATEGIES = {\n [STRATEGY_DEFAULT]: updateTileStateDefault,\n [STRATEGY_REPLACE]: updateTileStateReplace,\n [STRATEGY_NEVER]: () => {}\n};\n\nexport type Tileset2DProps = Pick<\n Required<TileLayerProps>,\n | 'getTileData'\n | 'tileSize'\n | 'maxCacheSize'\n | 'maxCacheByteSize'\n | 'refinementStrategy'\n | 'extent'\n | 'maxZoom'\n | 'minZoom'\n | 'maxRequests'\n | 'zoomOffset'\n> & {\n onTileLoad: (tile: Tile2DHeader) => void;\n onTileUnload: (tile: Tile2DHeader) => void;\n onTileError: (error: any, tile: Tile2DHeader) => void;\n};\n\n/**\n * Manages loading and purging of tile data. This class caches recently visited tiles\n * and only creates new tiles if they are present.\n */\nexport default class Tileset2D {\n private opts: Tileset2DProps;\n private _requestScheduler: RequestScheduler;\n private _cache: Map<string, Tile2DHeader>;\n private _dirty: boolean;\n private _tiles: Tile2DHeader[];\n\n private _cacheByteSize: number;\n private _viewport: Viewport | null;\n private _selectedTiles: Tile2DHeader[] | null;\n private _frameNumber: number;\n private _modelMatrix: Matrix4;\n private _modelMatrixInverse: Matrix4;\n\n private _maxZoom?: number;\n private _minZoom?: number;\n\n private onTileLoad: (tile: Tile2DHeader) => void;\n\n /**\n * Takes in a function that returns tile data, a cache size, and a max and a min zoom level.\n * Cache size defaults to 5 * number of tiles in the current viewport\n */\n constructor(opts: Tileset2DProps) {\n this.opts = opts;\n\n this.onTileLoad = tile => {\n this.opts.onTileLoad(tile);\n if (this.opts.maxCacheByteSize) {\n this._cacheByteSize += tile.byteLength;\n this._resizeCache();\n }\n };\n\n this._requestScheduler = new RequestScheduler({\n maxRequests: opts.maxRequests,\n throttleRequests: opts.maxRequests > 0\n });\n\n // Maps tile id in string {z}-{x}-{y} to a Tile object\n this._cache = new Map();\n this._tiles = [];\n this._dirty = false;\n this._cacheByteSize = 0;\n\n // Cache the last processed viewport\n this._viewport = null;\n this._selectedTiles = null;\n this._frameNumber = 0;\n\n this._modelMatrix = new Matrix4();\n this._modelMatrixInverse = new Matrix4();\n\n this.setOptions(opts);\n }\n\n /* Public API */\n get tiles() {\n return this._tiles;\n }\n\n get selectedTiles(): Tile2DHeader[] | null {\n return this._selectedTiles;\n }\n\n get isLoaded(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.every(tile => tile.isLoaded);\n }\n\n get needsReload(): boolean {\n return this._selectedTiles !== null && this._selectedTiles.some(tile => tile.needsReload);\n }\n\n setOptions(opts: Tileset2DProps): void {\n Object.assign(this.opts, opts);\n if (Number.isFinite(opts.maxZoom)) {\n this._maxZoom = Math.floor(opts.maxZoom as number);\n }\n if (Number.isFinite(opts.minZoom)) {\n this._minZoom = Math.ceil(opts.minZoom as number);\n }\n }\n\n // Clean up any outstanding tile requests.\n finalize(): void {\n for (const tile of this._cache.values()) {\n if (tile.isLoading) {\n tile.abort();\n }\n }\n this._cache.clear();\n this._tiles = [];\n this._selectedTiles = null;\n }\n\n reloadAll(): void {\n for (const id of this._cache.keys()) {\n const tile = this._cache.get(id) as Tile2DHeader;\n if (!this._selectedTiles || !this._selectedTiles.includes(tile)) {\n this._cache.delete(id);\n } else {\n tile.setNeedsReload();\n }\n }\n }\n\n /**\n * Update the cache with the given viewport and model matrix and triggers callback onUpdate.\n */\n update(\n viewport: Viewport,\n {zRange, modelMatrix}: {zRange?: ZRange; modelMatrix?: Matrix4} = {}\n ): number {\n const modelMatrixAsMatrix4 = new Matrix4(modelMatrix);\n const isModelMatrixNew = !modelMatrixAsMatrix4.equals(this._modelMatrix);\n if (!this._viewport || !viewport.equals(this._viewport) || isModelMatrixNew) {\n if (isModelMatrixNew) {\n this._modelMatrixInverse = modelMatrixAsMatrix4.clone().invert();\n this._modelMatrix = modelMatrixAsMatrix4;\n }\n this._viewport = viewport;\n const tileIndices = this.getTileIndices({\n viewport,\n maxZoom: this._maxZoom,\n minZoom: this._minZoom,\n zRange,\n modelMatrix: this._modelMatrix,\n modelMatrixInverse: this._modelMatrixInverse\n });\n this._selectedTiles = tileIndices.map(index => this._getTile(index, true));\n\n if (this._dirty) {\n // Some new tiles are added\n this._rebuildTree();\n }\n // Check for needed reloads explicitly even if the view/matrix has not changed.\n } else if (this.needsReload) {\n this._selectedTiles = this._selectedTiles!.map(tile => this._getTile(tile.index, true));\n }\n\n // Update tile states\n const changed = this.updateTileStates();\n this._pruneRequests();\n\n if (this._dirty) {\n // cache size is either the user defined maxSize or 5 * number of current tiles in the viewport.\n this._resizeCache();\n }\n\n if (changed) {\n this._frameNumber++;\n }\n\n return this._frameNumber;\n }\n\n /* Public interface for subclassing */\n\n /** Returns array of tile indices in the current viewport */\n getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n modelMatrix,\n modelMatrixInverse\n }: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n }): TileIndex[] {\n const {tileSize, extent, zoomOffset} = this.opts;\n return getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n tileSize,\n extent: extent as Bounds | undefined,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset\n });\n }\n\n /** Returns unique string key for a tile index */\n getTileId(index: TileIndex) {\n return `${index.x}-${index.y}-${index.z}`;\n }\n\n /** Returns a zoom level for a tile index */\n getTileZoom(index: TileIndex) {\n return index.z;\n }\n\n /** Returns additional metadata to add to tile, bbox by default */\n getTileMetadata(index: TileIndex) {\n const {tileSize} = this.opts;\n // @ts-expect-error\n return {bbox: tileToBoundingBox(this._viewport, index.x, index.y, index.z, tileSize)};\n }\n\n /** Returns index of the parent tile */\n getParentIndex(index: TileIndex) {\n const x = Math.floor(index.x / 2);\n const y = Math.floor(index.y / 2);\n const z = index.z - 1;\n return {x, y, z};\n }\n\n // Returns true if any tile's visibility changed\n private updateTileStates() {\n const refinementStrategy = this.opts.refinementStrategy || STRATEGY_DEFAULT;\n\n const visibilities = new Array(this._cache.size);\n let i = 0;\n // Reset state\n for (const tile of this._cache.values()) {\n // save previous state\n visibilities[i++] = tile.isVisible;\n tile.isSelected = false;\n tile.isVisible = false;\n }\n // @ts-expect-error called only when _selectedTiles is already defined\n for (const tile of this._selectedTiles) {\n tile.isSelected = true;\n tile.isVisible = true;\n }\n\n // Strategy-specific state logic\n (typeof refinementStrategy === 'function'\n ? refinementStrategy\n : STRATEGIES[refinementStrategy])(Array.from(this._cache.values()));\n\n i = 0;\n // Check if any visibility has changed\n for (const tile of this._cache.values()) {\n if (visibilities[i++] !== tile.isVisible) {\n return true;\n }\n }\n\n return false;\n }\n\n /* Private methods */\n\n _pruneRequests(): void {\n const {maxRequests} = this.opts;\n\n const abortCandidates: Tile2DHeader[] = [];\n let ongoingRequestCount = 0;\n for (const tile of this._cache.values()) {\n // Keep track of all the ongoing requests\n if (tile.isLoading) {\n ongoingRequestCount++;\n if (!tile.isSelected && !tile.isVisible) {\n abortCandidates.push(tile);\n }\n }\n }\n\n while (maxRequests > 0 && ongoingRequestCount > maxRequests && abortCandidates.length > 0) {\n // There are too many ongoing requests, so abort some that are unselected\n const tile = abortCandidates.shift()!;\n tile.abort();\n ongoingRequestCount--;\n }\n }\n\n // This needs to be called every time some tiles have been added/removed from cache\n _rebuildTree() {\n const {_cache} = this;\n\n // Reset states\n for (const tile of _cache.values()) {\n tile.parent = null;\n if (tile.children) {\n tile.children.length = 0;\n }\n }\n\n // Rebuild tree\n for (const tile of _cache.values()) {\n const parent = this._getNearestAncestor(tile);\n tile.parent = parent;\n if (parent?.children) {\n parent.children.push(tile);\n }\n }\n }\n\n /**\n * Clear tiles that are not visible when the cache is full\n */\n /* eslint-disable complexity */\n private _resizeCache() {\n const {_cache, opts} = this;\n\n const maxCacheSize =\n opts.maxCacheSize ||\n // @ts-expect-error called only when selectedTiles is initialized\n (opts.maxCacheByteSize ? Infinity : DEFAULT_CACHE_SCALE * this.selectedTiles.length);\n const maxCacheByteSize = opts.maxCacheByteSize || Infinity;\n\n const overflown = _cache.size > maxCacheSize || this._cacheByteSize > maxCacheByteSize;\n\n if (overflown) {\n for (const [id, tile] of _cache) {\n if (!tile.isVisible) {\n // delete tile\n this._cacheByteSize -= opts.maxCacheByteSize ? tile.byteLength : 0;\n _cache.delete(id);\n this.opts.onTileUnload(tile);\n }\n if (_cache.size <= maxCacheSize && this._cacheByteSize <= maxCacheByteSize) {\n break;\n }\n }\n this._rebuildTree();\n this._dirty = true;\n }\n if (this._dirty) {\n // sort by zoom level so that smaller tiles are displayed on top\n this._tiles = Array.from(this._cache.values()).sort((t1, t2) => t1.zoom - t2.zoom);\n\n this._dirty = false;\n }\n }\n /* eslint-enable complexity */\n\n private _getTile(index: TileIndex, create: true): Tile2DHeader;\n private _getTile(index: TileIndex, create?: false): Tile2DHeader | undefined;\n private _getTile(index: TileIndex, create?: boolean): Tile2DHeader | undefined {\n const id = this.getTileId(index);\n let tile = this._cache.get(id);\n let needsReload = false;\n\n if (!tile && create) {\n tile = new Tile2DHeader(index);\n Object.assign(tile, this.getTileMetadata(tile.index));\n Object.assign(tile, {id, zoom: this.getTileZoom(tile.index)});\n needsReload = true;\n this._cache.set(id, tile);\n this._dirty = true;\n } else if (tile && tile.needsReload) {\n needsReload = true;\n }\n if (tile && needsReload) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n tile.loadData({\n getData: this.opts.getTileData,\n requestScheduler: this._requestScheduler,\n onLoad: this.onTileLoad,\n onError: this.opts.onTileError\n });\n }\n\n return tile;\n }\n\n _getNearestAncestor(tile: Tile2DHeader): Tile2DHeader | null {\n const {_minZoom = 0} = this;\n\n let index = tile.index;\n while (this.getTileZoom(index) > _minZoom) {\n index = this.getParentIndex(index);\n const parent = this._getTile(index);\n if (parent) {\n return parent;\n }\n }\n return null;\n }\n}\n\n/* -- Refinement strategies --*/\n/* eslint-disable max-depth */\n\n// For all the selected && pending tiles:\n// - pick the closest ancestor as placeholder\n// - if no ancestor is visible, pick the closest children as placeholder\nfunction updateTileStateDefault(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected && !getPlaceholderInAncestors(tile)) {\n getPlaceholderInChildren(tile);\n }\n }\n for (const tile of allTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n }\n}\n\n// Until a selected tile and all its selected siblings are loaded, use the closest ancestor as placeholder\nfunction updateTileStateReplace(allTiles: Tile2DHeader[]) {\n for (const tile of allTiles) {\n tile.state = 0;\n }\n for (const tile of allTiles) {\n if (tile.isSelected) {\n getPlaceholderInAncestors(tile);\n }\n }\n // Always process parents first\n const sortedTiles = Array.from(allTiles).sort((t1, t2) => t1.zoom - t2.zoom);\n for (const tile of sortedTiles) {\n tile.isVisible = Boolean(tile.state! & TILE_STATE_VISIBLE);\n\n if (tile.children && (tile.isVisible || tile.state! & TILE_STATE_VISITED)) {\n // If the tile is rendered, or if the tile has been explicitly hidden, hide all of its children\n for (const child of tile.children) {\n child.state = TILE_STATE_VISITED;\n }\n } else if (tile.isSelected) {\n getPlaceholderInChildren(tile);\n }\n }\n}\n\n// Walk up the tree until we find one ancestor that is loaded. Returns true if successful.\nfunction getPlaceholderInAncestors(startTile: Tile2DHeader) {\n let tile: Tile2DHeader | null = startTile;\n while (tile) {\n if (tile.isLoaded || tile.content) {\n tile.state! |= TILE_STATE_VISIBLE;\n return true;\n }\n tile = tile.parent;\n }\n return false;\n}\n\n// Recursively set children as placeholder\nfunction getPlaceholderInChildren(tile) {\n for (const child of tile.children) {\n if (child.isLoaded || child.content) {\n child.state |= TILE_STATE_VISIBLE;\n } else {\n getPlaceholderInChildren(child);\n }\n }\n}\n"],"file":"tileset-2d.js"}
|
|
@@ -10,6 +10,7 @@ exports.osmTile2lngLat = osmTile2lngLat;
|
|
|
10
10
|
exports.tileToBoundingBox = tileToBoundingBox;
|
|
11
11
|
exports.getTileIndices = getTileIndices;
|
|
12
12
|
exports.isURLTemplate = isURLTemplate;
|
|
13
|
+
exports.isGeoBoundingBox = isGeoBoundingBox;
|
|
13
14
|
exports.urlType = void 0;
|
|
14
15
|
|
|
15
16
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -262,4 +263,8 @@ function getTileIndices(_ref) {
|
|
|
262
263
|
function isURLTemplate(s) {
|
|
263
264
|
return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);
|
|
264
265
|
}
|
|
266
|
+
|
|
267
|
+
function isGeoBoundingBox(v) {
|
|
268
|
+
return Number.isFinite(v.west) && Number.isFinite(v.north) && Number.isFinite(v.east) && Number.isFinite(v.south);
|
|
269
|
+
}
|
|
265
270
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/utils.ts"],"names":["TILE_SIZE","DEFAULT_EXTENT","Infinity","urlType","type","value","validate","propType","optional","Array","isArray","every","url","equals","value1","value2","len","length","i","transformBox","bbox","modelMatrix","transformedCoords","transformAsPoint","transformedBox","Math","min","map","max","stringHash","s","abs","split","reduce","a","b","charCodeAt","getURLFromTemplate","template","tile","index","id","Object","keys","key","regex","RegExp","replace","String","Number","isInteger","y","z","pow","getBoundingBox","viewport","zRange","extent","bounds","minZ","maxZ","bounds0","getBounds","bounds1","isGeospatial","getIndexingCoords","scale","modelMatrixInverse","transformedTileIndex","getScale","tileSize","osmTile2lngLat","x","lng","n","PI","lat","atan","exp","tile2XY","tileToBoundingBox","west","north","east","south","left","top","right","bottom","getIdentityTileIndices","minX","minY","maxX","maxY","indices","floor","push","getTileIndices","maxZoom","minZoom","zoomOffset","round","zoom","log2","ceil","isFinite","transformedExtent","isURLTemplate","test"],"mappings":"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","sourcesContent":["import {Viewport} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {getOSMTileIndices} from './tile-2d-traversal';\nimport {Bounds, TileBoundingBox, TileIndex, ZRange} from './types';\n\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT: Bounds = [-Infinity, -Infinity, Infinity, Infinity];\n\nexport const urlType = {\n type: 'url',\n value: null,\n validate: (value, propType) =>\n (propType.optional && value === null) ||\n typeof value === 'string' ||\n (Array.isArray(value) && value.every(url => typeof url === 'string')),\n equals: (value1, value2) => {\n if (value1 === value2) {\n return true;\n }\n if (!Array.isArray(value1) || !Array.isArray(value2)) {\n return false;\n }\n const len = value1.length;\n if (len !== value2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n};\n\nfunction transformBox(bbox: Bounds, modelMatrix: Matrix4): Bounds {\n const transformedCoords = [\n // top-left\n modelMatrix.transformAsPoint([bbox[0], bbox[1]]),\n // top-right\n modelMatrix.transformAsPoint([bbox[2], bbox[1]]),\n // bottom-left\n modelMatrix.transformAsPoint([bbox[0], bbox[3]]),\n // bottom-right\n modelMatrix.transformAsPoint([bbox[2], bbox[3]])\n ];\n const transformedBox: Bounds = [\n // Minimum x coord\n Math.min(...transformedCoords.map(i => i[0])),\n // Minimum y coord\n Math.min(...transformedCoords.map(i => i[1])),\n // Max x coord\n Math.max(...transformedCoords.map(i => i[0])),\n // Max y coord\n Math.max(...transformedCoords.map(i => i[1]))\n ];\n return transformedBox;\n}\n\nfunction stringHash(s: string): number {\n return Math.abs(s.split('').reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0));\n}\n\nexport function getURLFromTemplate(\n template: string | string[],\n tile: {\n index: TileIndex;\n id: string;\n }\n): string | null {\n if (!template || !template.length) {\n return null;\n }\n const {index, id} = tile;\n\n if (Array.isArray(template)) {\n const i = stringHash(id) % template.length;\n template = template[i];\n }\n\n let url = template;\n for (const key of Object.keys(index)) {\n const regex = new RegExp(`{${key}}`, 'g');\n url = url.replace(regex, String(index[key]));\n }\n\n // Back-compatible support for {-y}\n if (Number.isInteger(index.y) && Number.isInteger(index.z)) {\n url = url.replace(/\\{-y\\}/g, String(Math.pow(2, index.z) - index.y - 1));\n }\n return url;\n}\n\n/**\n * gets the bounding box of a viewport\n */\nfunction getBoundingBox(viewport: Viewport, zRange: number[] | null, extent: Bounds): Bounds {\n let bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n bounds = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n bounds = viewport.getBounds();\n }\n if (!viewport.isGeospatial) {\n return [\n // Top corner should not be more then bottom corner in either direction\n Math.max(Math.min(bounds[0], extent[2]), extent[0]),\n Math.max(Math.min(bounds[1], extent[3]), extent[1]),\n // Bottom corner should not be less then top corner in either direction\n Math.min(Math.max(bounds[2], extent[0]), extent[2]),\n Math.min(Math.max(bounds[3], extent[1]), extent[3])\n ];\n }\n return [\n Math.max(bounds[0], extent[0]),\n Math.max(bounds[1], extent[1]),\n Math.min(bounds[2], extent[2]),\n Math.min(bounds[3], extent[3])\n ];\n}\n\nfunction getIndexingCoords(bbox: Bounds, scale: number, modelMatrixInverse?: Matrix4): Bounds {\n if (modelMatrixInverse) {\n const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(\n i => (i * scale) / TILE_SIZE\n );\n return transformedTileIndex as Bounds;\n }\n return bbox.map(i => (i * scale) / TILE_SIZE) as Bounds;\n}\n\nfunction getScale(z: number, tileSize: number): number {\n return (Math.pow(2, z) * TILE_SIZE) / tileSize;\n}\n\n// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2\nexport function osmTile2lngLat(x: number, y: number, z: number): [number, number] {\n const scale = getScale(z, TILE_SIZE);\n const lng = (x / scale) * 360 - 180;\n const n = Math.PI - (2 * Math.PI * y) / scale;\n const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n return [lng, lat];\n}\n\nfunction tile2XY(x: number, y: number, z: number, tileSize: number): [number, number] {\n const scale = getScale(z, tileSize);\n return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];\n}\nexport function tileToBoundingBox(\n viewport: Viewport,\n x: number,\n y: number,\n z: number,\n tileSize: number = TILE_SIZE\n): TileBoundingBox {\n if (viewport.isGeospatial) {\n const [west, north] = osmTile2lngLat(x, y, z);\n const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n return {west, north, east, south};\n }\n const [left, top] = tile2XY(x, y, z, tileSize);\n const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n return {left, top, right, bottom};\n}\n\nfunction getIdentityTileIndices(\n viewport: Viewport,\n z: number,\n tileSize: number,\n extent: Bounds,\n modelMatrixInverse?: Matrix4\n) {\n const bbox = getBoundingBox(viewport, null, extent);\n const scale = getScale(z, tileSize);\n const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n const indices: TileIndex[] = [];\n\n /*\n | TILE | TILE | TILE |\n |(minX) |(maxX)\n */\n for (let x = Math.floor(minX); x < maxX; x++) {\n for (let y = Math.floor(minY); y < maxY; y++) {\n indices.push({x, y, z});\n }\n }\n return indices;\n}\n\n/**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n// eslint-disable-next-line complexity\nexport function getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n extent,\n tileSize = TILE_SIZE,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset = 0\n}: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n extent?: Bounds;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n}) {\n let z = viewport.isGeospatial\n ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset\n : Math.ceil(viewport.zoom) + zoomOffset;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n if (!extent) {\n return [];\n }\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n let transformedExtent = extent;\n if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n transformedExtent = transformBox(extent, modelMatrix);\n }\n return viewport.isGeospatial\n ? getOSMTileIndices(viewport, z, zRange, extent)\n : getIdentityTileIndices(\n viewport,\n z,\n tileSize,\n transformedExtent || DEFAULT_EXTENT,\n modelMatrixInverse\n );\n}\n\n/**\n * Returns true if s is a valid URL template\n */\nexport function isURLTemplate(s: string): boolean {\n return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\n"],"file":"utils.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/utils.ts"],"names":["TILE_SIZE","DEFAULT_EXTENT","Infinity","urlType","type","value","validate","propType","optional","Array","isArray","every","url","equals","value1","value2","len","length","i","transformBox","bbox","modelMatrix","transformedCoords","transformAsPoint","transformedBox","Math","min","map","max","stringHash","s","abs","split","reduce","a","b","charCodeAt","getURLFromTemplate","template","tile","index","id","Object","keys","key","regex","RegExp","replace","String","Number","isInteger","y","z","pow","getBoundingBox","viewport","zRange","extent","bounds","minZ","maxZ","bounds0","getBounds","bounds1","isGeospatial","getIndexingCoords","scale","modelMatrixInverse","transformedTileIndex","getScale","tileSize","osmTile2lngLat","x","lng","n","PI","lat","atan","exp","tile2XY","tileToBoundingBox","west","north","east","south","left","top","right","bottom","getIdentityTileIndices","minX","minY","maxX","maxY","indices","floor","push","getTileIndices","maxZoom","minZoom","zoomOffset","round","zoom","log2","ceil","isFinite","transformedExtent","isURLTemplate","test","isGeoBoundingBox","v"],"mappings":"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","sourcesContent":["import {Viewport} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {getOSMTileIndices} from './tile-2d-traversal';\nimport {Bounds, GeoBoundingBox, TileBoundingBox, TileIndex, ZRange} from './types';\n\nconst TILE_SIZE = 512;\nconst DEFAULT_EXTENT: Bounds = [-Infinity, -Infinity, Infinity, Infinity];\n\nexport const urlType = {\n type: 'url',\n value: null,\n validate: (value, propType) =>\n (propType.optional && value === null) ||\n typeof value === 'string' ||\n (Array.isArray(value) && value.every(url => typeof url === 'string')),\n equals: (value1, value2) => {\n if (value1 === value2) {\n return true;\n }\n if (!Array.isArray(value1) || !Array.isArray(value2)) {\n return false;\n }\n const len = value1.length;\n if (len !== value2.length) {\n return false;\n }\n for (let i = 0; i < len; i++) {\n if (value1[i] !== value2[i]) {\n return false;\n }\n }\n return true;\n }\n};\n\nfunction transformBox(bbox: Bounds, modelMatrix: Matrix4): Bounds {\n const transformedCoords = [\n // top-left\n modelMatrix.transformAsPoint([bbox[0], bbox[1]]),\n // top-right\n modelMatrix.transformAsPoint([bbox[2], bbox[1]]),\n // bottom-left\n modelMatrix.transformAsPoint([bbox[0], bbox[3]]),\n // bottom-right\n modelMatrix.transformAsPoint([bbox[2], bbox[3]])\n ];\n const transformedBox: Bounds = [\n // Minimum x coord\n Math.min(...transformedCoords.map(i => i[0])),\n // Minimum y coord\n Math.min(...transformedCoords.map(i => i[1])),\n // Max x coord\n Math.max(...transformedCoords.map(i => i[0])),\n // Max y coord\n Math.max(...transformedCoords.map(i => i[1]))\n ];\n return transformedBox;\n}\n\nfunction stringHash(s: string): number {\n return Math.abs(s.split('').reduce((a, b) => ((a << 5) - a + b.charCodeAt(0)) | 0, 0));\n}\n\nexport function getURLFromTemplate(\n template: string | string[],\n tile: {\n index: TileIndex;\n id: string;\n }\n): string | null {\n if (!template || !template.length) {\n return null;\n }\n const {index, id} = tile;\n\n if (Array.isArray(template)) {\n const i = stringHash(id) % template.length;\n template = template[i];\n }\n\n let url = template;\n for (const key of Object.keys(index)) {\n const regex = new RegExp(`{${key}}`, 'g');\n url = url.replace(regex, String(index[key]));\n }\n\n // Back-compatible support for {-y}\n if (Number.isInteger(index.y) && Number.isInteger(index.z)) {\n url = url.replace(/\\{-y\\}/g, String(Math.pow(2, index.z) - index.y - 1));\n }\n return url;\n}\n\n/**\n * gets the bounding box of a viewport\n */\nfunction getBoundingBox(viewport: Viewport, zRange: number[] | null, extent: Bounds): Bounds {\n let bounds;\n if (zRange && zRange.length === 2) {\n const [minZ, maxZ] = zRange;\n const bounds0 = viewport.getBounds({z: minZ});\n const bounds1 = viewport.getBounds({z: maxZ});\n bounds = [\n Math.min(bounds0[0], bounds1[0]),\n Math.min(bounds0[1], bounds1[1]),\n Math.max(bounds0[2], bounds1[2]),\n Math.max(bounds0[3], bounds1[3])\n ];\n } else {\n bounds = viewport.getBounds();\n }\n if (!viewport.isGeospatial) {\n return [\n // Top corner should not be more then bottom corner in either direction\n Math.max(Math.min(bounds[0], extent[2]), extent[0]),\n Math.max(Math.min(bounds[1], extent[3]), extent[1]),\n // Bottom corner should not be less then top corner in either direction\n Math.min(Math.max(bounds[2], extent[0]), extent[2]),\n Math.min(Math.max(bounds[3], extent[1]), extent[3])\n ];\n }\n return [\n Math.max(bounds[0], extent[0]),\n Math.max(bounds[1], extent[1]),\n Math.min(bounds[2], extent[2]),\n Math.min(bounds[3], extent[3])\n ];\n}\n\nfunction getIndexingCoords(bbox: Bounds, scale: number, modelMatrixInverse?: Matrix4): Bounds {\n if (modelMatrixInverse) {\n const transformedTileIndex = transformBox(bbox, modelMatrixInverse).map(\n i => (i * scale) / TILE_SIZE\n );\n return transformedTileIndex as Bounds;\n }\n return bbox.map(i => (i * scale) / TILE_SIZE) as Bounds;\n}\n\nfunction getScale(z: number, tileSize: number): number {\n return (Math.pow(2, z) * TILE_SIZE) / tileSize;\n}\n\n// https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2\nexport function osmTile2lngLat(x: number, y: number, z: number): [number, number] {\n const scale = getScale(z, TILE_SIZE);\n const lng = (x / scale) * 360 - 180;\n const n = Math.PI - (2 * Math.PI * y) / scale;\n const lat = (180 / Math.PI) * Math.atan(0.5 * (Math.exp(n) - Math.exp(-n)));\n return [lng, lat];\n}\n\nfunction tile2XY(x: number, y: number, z: number, tileSize: number): [number, number] {\n const scale = getScale(z, tileSize);\n return [(x / scale) * TILE_SIZE, (y / scale) * TILE_SIZE];\n}\nexport function tileToBoundingBox(\n viewport: Viewport,\n x: number,\n y: number,\n z: number,\n tileSize: number = TILE_SIZE\n): TileBoundingBox {\n if (viewport.isGeospatial) {\n const [west, north] = osmTile2lngLat(x, y, z);\n const [east, south] = osmTile2lngLat(x + 1, y + 1, z);\n return {west, north, east, south};\n }\n const [left, top] = tile2XY(x, y, z, tileSize);\n const [right, bottom] = tile2XY(x + 1, y + 1, z, tileSize);\n return {left, top, right, bottom};\n}\n\nfunction getIdentityTileIndices(\n viewport: Viewport,\n z: number,\n tileSize: number,\n extent: Bounds,\n modelMatrixInverse?: Matrix4\n) {\n const bbox = getBoundingBox(viewport, null, extent);\n const scale = getScale(z, tileSize);\n const [minX, minY, maxX, maxY] = getIndexingCoords(bbox, scale, modelMatrixInverse);\n const indices: TileIndex[] = [];\n\n /*\n | TILE | TILE | TILE |\n |(minX) |(maxX)\n */\n for (let x = Math.floor(minX); x < maxX; x++) {\n for (let y = Math.floor(minY); y < maxY; y++) {\n indices.push({x, y, z});\n }\n }\n return indices;\n}\n\n/**\n * Returns all tile indices in the current viewport. If the current zoom level is smaller\n * than minZoom, return an empty array. If the current zoom level is greater than maxZoom,\n * return tiles that are on maxZoom.\n */\n// eslint-disable-next-line complexity\nexport function getTileIndices({\n viewport,\n maxZoom,\n minZoom,\n zRange,\n extent,\n tileSize = TILE_SIZE,\n modelMatrix,\n modelMatrixInverse,\n zoomOffset = 0\n}: {\n viewport: Viewport;\n maxZoom?: number;\n minZoom?: number;\n zRange: ZRange | undefined;\n extent?: Bounds;\n tileSize?: number;\n modelMatrix?: Matrix4;\n modelMatrixInverse?: Matrix4;\n zoomOffset?: number;\n}) {\n let z = viewport.isGeospatial\n ? Math.round(viewport.zoom + Math.log2(TILE_SIZE / tileSize)) + zoomOffset\n : Math.ceil(viewport.zoom) + zoomOffset;\n if (typeof minZoom === 'number' && Number.isFinite(minZoom) && z < minZoom) {\n if (!extent) {\n return [];\n }\n z = minZoom;\n }\n if (typeof maxZoom === 'number' && Number.isFinite(maxZoom) && z > maxZoom) {\n z = maxZoom;\n }\n let transformedExtent = extent;\n if (modelMatrix && modelMatrixInverse && extent && !viewport.isGeospatial) {\n transformedExtent = transformBox(extent, modelMatrix);\n }\n return viewport.isGeospatial\n ? getOSMTileIndices(viewport, z, zRange, extent)\n : getIdentityTileIndices(\n viewport,\n z,\n tileSize,\n transformedExtent || DEFAULT_EXTENT,\n modelMatrixInverse\n );\n}\n\n/**\n * Returns true if s is a valid URL template\n */\nexport function isURLTemplate(s: string): boolean {\n return /(?=.*{z})(?=.*{x})(?=.*({y}|{-y}))/.test(s);\n}\n\nexport function isGeoBoundingBox(v: any): v is GeoBoundingBox {\n return (\n Number.isFinite(v.west) &&\n Number.isFinite(v.north) &&\n Number.isFinite(v.east) &&\n Number.isFinite(v.south)\n );\n}\n"],"file":"utils.js"}
|
package/dist/esm/index.js
CHANGED
|
@@ -10,4 +10,5 @@ export { default as TerrainLayer } from './terrain-layer/terrain-layer';
|
|
|
10
10
|
export { default as MVTLayer } from './mvt-layer/mvt-layer';
|
|
11
11
|
export { getURLFromTemplate as _getURLFromTemplate } from './tile-layer/utils';
|
|
12
12
|
export { default as _Tileset2D } from './tile-layer/tileset-2d';
|
|
13
|
+
export { default as _Tile2DHeader } from './tile-layer/tile-2d-header';
|
|
13
14
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":["default","GreatCircleLayer","S2Layer","QuadkeyLayer","TileLayer","TripsLayer","H3ClusterLayer","H3HexagonLayer","Tile3DLayer","TerrainLayer","MVTLayer","getURLFromTemplate","_getURLFromTemplate","_Tileset2D"],"mappings":"AAqBA,SAAQA,OAAO,IAAIC,gBAAnB,QAA0C,yCAA1C;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,qBAAjC;AACA,SAAQF,OAAO,IAAIG,YAAnB,QAAsC,+BAAtC;AACA,SAAQH,OAAO,IAAII,SAAnB,QAAmC,yBAAnC;AACA,SAAQJ,OAAO,IAAIK,UAAnB,QAAoC,2BAApC;AACA,SAAQL,OAAO,IAAIM,cAAnB,QAAwC,8BAAxC;AACA,SAAQN,OAAO,IAAIO,cAAnB,QAAwC,8BAAxC;AACA,SAAQP,OAAO,IAAIQ,WAAnB,QAAqC,+BAArC;AACA,SAAQR,OAAO,IAAIS,YAAnB,QAAsC,+BAAtC;AACA,SAAQT,OAAO,IAAIU,QAAnB,QAAkC,uBAAlC;AAEA,SAAQC,kBAAkB,IAAIC,mBAA9B,QAAwD,oBAAxD;AACA,SAAQZ,OAAO,IAAIa,UAAnB,QAAoC,yBAApC","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as QuadkeyLayer} from './quadkey-layer/quadkey-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tile-layer/utils';\nexport {default as _Tileset2D} from './tile-layer/tileset-2d';\n\n// Types\
|
|
1
|
+
{"version":3,"sources":["../../src/index.ts"],"names":["default","GreatCircleLayer","S2Layer","QuadkeyLayer","TileLayer","TripsLayer","H3ClusterLayer","H3HexagonLayer","Tile3DLayer","TerrainLayer","MVTLayer","getURLFromTemplate","_getURLFromTemplate","_Tileset2D","_Tile2DHeader"],"mappings":"AAqBA,SAAQA,OAAO,IAAIC,gBAAnB,QAA0C,yCAA1C;AACA,SAAQD,OAAO,IAAIE,OAAnB,QAAiC,qBAAjC;AACA,SAAQF,OAAO,IAAIG,YAAnB,QAAsC,+BAAtC;AACA,SAAQH,OAAO,IAAII,SAAnB,QAAmC,yBAAnC;AACA,SAAQJ,OAAO,IAAIK,UAAnB,QAAoC,2BAApC;AACA,SAAQL,OAAO,IAAIM,cAAnB,QAAwC,8BAAxC;AACA,SAAQN,OAAO,IAAIO,cAAnB,QAAwC,8BAAxC;AACA,SAAQP,OAAO,IAAIQ,WAAnB,QAAqC,+BAArC;AACA,SAAQR,OAAO,IAAIS,YAAnB,QAAsC,+BAAtC;AACA,SAAQT,OAAO,IAAIU,QAAnB,QAAkC,uBAAlC;AAEA,SAAQC,kBAAkB,IAAIC,mBAA9B,QAAwD,oBAAxD;AACA,SAAQZ,OAAO,IAAIa,UAAnB,QAAoC,yBAApC;AACA,SAAQb,OAAO,IAAIc,aAAnB,QAAuC,6BAAvC","sourcesContent":["// Copyright (c) 2015 - 2017 Uber Technologies, Inc.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n/* eslint-disable max-len */\n\nexport {default as GreatCircleLayer} from './great-circle-layer/great-circle-layer';\nexport {default as S2Layer} from './s2-layer/s2-layer';\nexport {default as QuadkeyLayer} from './quadkey-layer/quadkey-layer';\nexport {default as TileLayer} from './tile-layer/tile-layer';\nexport {default as TripsLayer} from './trips-layer/trips-layer';\nexport {default as H3ClusterLayer} from './h3-layers/h3-cluster-layer';\nexport {default as H3HexagonLayer} from './h3-layers/h3-hexagon-layer';\nexport {default as Tile3DLayer} from './tile-3d-layer/tile-3d-layer';\nexport {default as TerrainLayer} from './terrain-layer/terrain-layer';\nexport {default as MVTLayer} from './mvt-layer/mvt-layer';\n\nexport {getURLFromTemplate as _getURLFromTemplate} from './tile-layer/utils';\nexport {default as _Tileset2D} from './tile-layer/tileset-2d';\nexport {default as _Tile2DHeader} from './tile-layer/tile-2d-header';\n\n// Types\nexport type {TileLayerProps} from './tile-layer/tile-layer';\nexport type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';\nexport type {TileLoadProps as _TileLoadProps} from './tile-layer/types';\nexport type {MVTLayerProps} from './mvt-layer/mvt-layer';\n"],"file":"index.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/coordinate-transform.
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/coordinate-transform.ts"],"names":["lerp","availableTransformations","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","pointX","pointY","nw","se","viewport","x","y","unprojectFlat","getPoints","geometry","bbox","map","g","multiPoint","line","multiLineString","lineString","polygon","polygonRing","multiPolygon","transform","projectFlat","west","north","east","south","projectedBbox","coordinates","type"],"mappings":"AACA,SAAQA,IAAR,QAAmB,eAAnB;AAGA,MAAMC,wBAAwB,GAAG;AAC/BC,EAAAA,KAD+B;AAE/BC,EAAAA,UAF+B;AAG/BC,EAAAA,UAH+B;AAI/BC,EAAAA,eAJ+B;AAK/BC,EAAAA,OAL+B;AAM/BC,EAAAA;AAN+B,CAAjC;;AASA,SAASL,KAAT,CAAe,CAACM,MAAD,EAASC,MAAT,CAAf,EAAmD,CAACC,EAAD,EAAKC,EAAL,CAAnD,EAAyEC,QAAzE,EAA6F;AAC3F,QAAMC,CAAC,GAAGb,IAAI,CAACU,EAAE,CAAC,CAAD,CAAH,EAAQC,EAAE,CAAC,CAAD,CAAV,EAAeH,MAAf,CAAd;AACA,QAAMM,CAAC,GAAGd,IAAI,CAACU,EAAE,CAAC,CAAD,CAAH,EAAQC,EAAE,CAAC,CAAD,CAAV,EAAeF,MAAf,CAAd;AAEA,SAAOG,QAAQ,CAACG,aAAT,CAAuB,CAACF,CAAD,EAAIC,CAAJ,CAAvB,CAAP;AACD;;AAED,SAASE,SAAT,CAAmBC,QAAnB,EAA6BC,IAA7B,EAA+CN,QAA/C,EAAmE;AACjE,SAAOK,QAAQ,CAACE,GAAT,CAAaC,CAAC,IAAIlB,KAAK,CAACkB,CAAD,EAAIF,IAAJ,EAAUN,QAAV,CAAvB,CAAP;AACD;;AAED,SAAST,UAAT,CAAoBkB,UAApB,EAAgCH,IAAhC,EAAkDN,QAAlD,EAAsE;AACpE,SAAOI,SAAS,CAACK,UAAD,EAAaH,IAAb,EAAmBN,QAAnB,CAAhB;AACD;;AAED,SAASR,UAAT,CAAoBkB,IAApB,EAA0BJ,IAA1B,EAA4CN,QAA5C,EAAgE;AAC9D,SAAOI,SAAS,CAACM,IAAD,EAAOJ,IAAP,EAAaN,QAAb,CAAhB;AACD;;AAED,SAASP,eAAT,CAAyBkB,eAAzB,EAA0CL,IAA1C,EAA4DN,QAA5D,EAAgF;AAC9E,SAAOW,eAAe,CAACJ,GAAhB,CAAoBK,UAAU,IAAIpB,UAAU,CAACoB,UAAD,EAAaN,IAAb,EAAmBN,QAAnB,CAA5C,CAAP;AACD;;AAED,SAASN,OAAT,CAAiBmB,OAAjB,EAA0BP,IAA1B,EAA4CN,QAA5C,EAAgE;AAC9D,SAAOa,OAAO,CAACN,GAAR,CAAYO,WAAW,IAAIV,SAAS,CAACU,WAAD,EAAcR,IAAd,EAAoBN,QAApB,CAApC,CAAP;AACD;;AAED,SAASL,YAAT,CAAsBoB,YAAtB,EAAoCT,IAApC,EAAsDN,QAAtD,EAA0E;AACxE,SAAOe,YAAY,CAACR,GAAb,CAAiBM,OAAO,IAAInB,OAAO,CAACmB,OAAD,EAAUP,IAAV,EAAgBN,QAAhB,CAAnC,CAAP;AACD;;AAED,OAAO,SAASgB,SAAT,CAAmBX,QAAnB,EAA6BC,IAA7B,EAAmDN,QAAnD,EAAuE;AAC5E,QAAMF,EAAE,GAAGE,QAAQ,CAACiB,WAAT,CAAqB,CAACX,IAAI,CAACY,IAAN,EAAYZ,IAAI,CAACa,KAAjB,CAArB,CAAX;AACA,QAAMpB,EAAE,GAAGC,QAAQ,CAACiB,WAAT,CAAqB,CAACX,IAAI,CAACc,IAAN,EAAYd,IAAI,CAACe,KAAjB,CAArB,CAAX;AACA,QAAMC,aAAa,GAAG,CAACxB,EAAD,EAAKC,EAAL,CAAtB;AAEA,SAAO,EACL,GAAGM,QADE;AAELkB,IAAAA,WAAW,EAAElC,wBAAwB,CAACgB,QAAQ,CAACmB,IAAV,CAAxB,CACXnB,QAAQ,CAACkB,WADE,EAEXD,aAFW,EAGXtB,QAHW;AAFR,GAAP;AAQD","sourcesContent":["import {Viewport} from '@deck.gl/core';\nimport {lerp} from '@math.gl/core';\nimport {GeoBoundingBox} from '../tile-layer/types';\n\nconst availableTransformations = {\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon\n};\n\nfunction Point([pointX, pointY]: [number, number], [nw, se]: number[][], viewport: Viewport) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return viewport.unprojectFlat([x, y]);\n}\n\nfunction getPoints(geometry, bbox: number[][], viewport: Viewport) {\n return geometry.map(g => Point(g, bbox, viewport));\n}\n\nfunction MultiPoint(multiPoint, bbox: number[][], viewport: Viewport) {\n return getPoints(multiPoint, bbox, viewport);\n}\n\nfunction LineString(line, bbox: number[][], viewport: Viewport) {\n return getPoints(line, bbox, viewport);\n}\n\nfunction MultiLineString(multiLineString, bbox: number[][], viewport: Viewport) {\n return multiLineString.map(lineString => LineString(lineString, bbox, viewport));\n}\n\nfunction Polygon(polygon, bbox: number[][], viewport: Viewport) {\n return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));\n}\n\nfunction MultiPolygon(multiPolygon, bbox: number[][], viewport: Viewport) {\n return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));\n}\n\nexport function transform(geometry, bbox: GeoBoundingBox, viewport: Viewport) {\n const nw = viewport.projectFlat([bbox.west, bbox.north]);\n const se = viewport.projectFlat([bbox.east, bbox.south]);\n const projectedBbox = [nw, se];\n\n return {\n ...geometry,\n coordinates: availableTransformations[geometry.type](\n geometry.coordinates,\n projectedBbox,\n viewport\n )\n };\n}\n"],"file":"coordinate-transform.js"}
|
|
@@ -39,7 +39,7 @@ function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
|
|
|
39
39
|
return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;
|
|
40
40
|
} else if (uniqueIdProperty) {
|
|
41
41
|
featureIndex = findIndex(geomData.properties, elem => elem[uniqueIdProperty] === featureId, startFeatureIndex, endFeatureIndex);
|
|
42
|
-
} else {
|
|
42
|
+
} else if (geomData.fields) {
|
|
43
43
|
featureIndex = findIndex(geomData.fields, elem => elem.id === featureId, startFeatureIndex, endFeatureIndex);
|
|
44
44
|
}
|
|
45
45
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/find-index-binary.
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/find-index-binary.ts"],"names":["GEOM_TYPES","findIndexBinary","data","uniqueIdProperty","featureId","layerName","gt","index","findIndexByType","geomData","featureIds","value","length","startFeatureIndex","endFeatureIndex","layerRange","getLayerRange","featureIndex","numericProps","vertexIndex","findIndex","x","i","globalFeatureIds","properties","elem","fields","id","getGlobalFeatureId","__layers","layerNames","key","__ids","result","array","predicate","startIndex","endIndex"],"mappings":"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","sourcesContent":["import type {\n BinaryFeatures,\n BinaryLineFeatures,\n BinaryPointFeatures,\n BinaryPolygonFeatures\n} from '@loaders.gl/schema';\n\ntype FeatureTypes = BinaryPointFeatures | BinaryLineFeatures | BinaryPolygonFeatures;\n\nconst GEOM_TYPES = ['points', 'lines', 'polygons'];\n/**\n * Return the index of feature (numericProps or featureIds) for given feature id\n * Example: findIndexBinary(data, 'id', 33) will return the index in the array of numericProps\n * of the feature 33.\n * @param {Object} data - The data in binary format\n * @param {String} uniqueIdProperty - Name of the unique id property\n * @param {Number|String} featureId - feature id to find\n * @param {String} layerName - the layer to search in\n */\nexport default function findIndexBinary(\n data: BinaryFeatures,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n for (const gt of GEOM_TYPES) {\n const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);\n if (index >= 0) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction findIndexByType(\n geomData: FeatureTypes,\n uniqueIdProperty: string,\n featureId: string | number,\n layerName: string\n): number {\n const featureIds = geomData.featureIds.value;\n\n if (!featureIds.length) {\n return -1;\n }\n\n let startFeatureIndex = 0;\n let endFeatureIndex = featureIds[featureIds.length - 1] + 1;\n if (layerName) {\n const layerRange = getLayerRange(geomData, layerName);\n if (layerRange) {\n startFeatureIndex = layerRange[0];\n endFeatureIndex = layerRange[1] + 1;\n } else {\n return -1;\n }\n }\n\n // Look for the uniqueIdProperty\n let featureIndex = -1;\n if (uniqueIdProperty in geomData.numericProps) {\n const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex(\n (x, i) =>\n x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex\n );\n return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;\n } else if (uniqueIdProperty) {\n featureIndex = findIndex(\n geomData.properties,\n elem => elem[uniqueIdProperty] === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n } else if (geomData.fields) {\n featureIndex = findIndex(\n geomData.fields,\n (elem: any) => elem.id === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n }\n return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\ntype LayerRange = [firstFeatureIndex: number, lastFeatureIndex: number];\n\n// Returns [firstFeatureIndex, lastFeatureIndex]\n// MVTLoader parses tiles layer-by-layer, so each layer is a continuous range\nfunction getLayerRange(\n geomData: FeatureTypes & {\n __layers?: Record<string, LayerRange>;\n },\n layerName: string\n): LayerRange | undefined {\n if (!geomData.__layers) {\n // Cache a map from properties.layerName to index ranges\n const layerNames: Record<string, LayerRange> = {};\n const {properties} = geomData;\n for (let i = 0; i < properties.length; i++) {\n const {layerName: key} = properties[i] as Record<string, any>;\n if (!key) {\n // ignore\n } else if (layerNames[key]) {\n layerNames[key][1] = i;\n } else {\n layerNames[key] = [i, i];\n }\n }\n geomData.__layers = layerNames;\n }\n return geomData.__layers[layerName];\n}\n\n// Returns global feature id\nfunction getGlobalFeatureId(geomData, featureIndex: number) {\n if (!geomData.__ids) {\n // Cache a map from featureId to globalFeatureId\n const result: string[] = [];\n const featureIds = geomData.featureIds.value;\n const globalFeatureIds = geomData.globalFeatureIds.value;\n for (let i = 0; i < featureIds.length; i++) {\n result[featureIds[i]] = globalFeatureIds[i];\n }\n geomData.__ids = result;\n }\n return geomData.__ids[featureIndex];\n}\n\n// Like array.findIndex, but only search within a range\nfunction findIndex<T>(\n array: T[],\n predicate: (v: T, index: number) => boolean,\n startIndex: number,\n endIndex: number\n): number {\n for (let i = startIndex; i < endIndex; i++) {\n if (predicate(array[i], i)) {\n return i;\n }\n }\n return -1;\n}\n"],"file":"find-index-binary.js"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
|
+
import { log, COORDINATE_SYSTEM } from '@deck.gl/core';
|
|
3
|
+
import { GeoJsonLayer } from '@deck.gl/layers';
|
|
2
4
|
import { Matrix4 } from '@math.gl/core';
|
|
3
5
|
import { MVTWorkerLoader } from '@loaders.gl/mvt';
|
|
4
6
|
import { binaryToGeojson } from '@loaders.gl/gis';
|
|
5
|
-
import { COORDINATE_SYSTEM } from '@deck.gl/core';
|
|
6
7
|
import { ClipExtension } from '@deck.gl/extensions';
|
|
7
8
|
import TileLayer from '../tile-layer/tile-layer';
|
|
8
|
-
import { getURLFromTemplate, isURLTemplate } from '../tile-layer/utils';
|
|
9
|
+
import { getURLFromTemplate, isGeoBoundingBox, isURLTemplate } from '../tile-layer/utils';
|
|
9
10
|
import { transform } from './coordinate-transform';
|
|
10
11
|
import findIndexBinary from './find-index-binary';
|
|
11
|
-
import { GeoJsonLayer } from '@deck.gl/layers';
|
|
12
12
|
const WORLD_SIZE = 512;
|
|
13
13
|
const defaultProps = { ...GeoJsonLayer.defaultProps,
|
|
14
14
|
uniqueIdProperty: {
|
|
@@ -31,7 +31,7 @@ export default class MVTLayer extends TileLayer {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
get isLoaded() {
|
|
34
|
-
return this.state.data && this.state.tileset && super.isLoaded;
|
|
34
|
+
return this.state && this.state.data && this.state.tileset && super.isLoaded;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
updateState({
|
|
@@ -40,11 +40,13 @@ export default class MVTLayer extends TileLayer {
|
|
|
40
40
|
context,
|
|
41
41
|
changeFlags
|
|
42
42
|
}) {
|
|
43
|
+
var _this$state;
|
|
44
|
+
|
|
43
45
|
if (changeFlags.dataChanged) {
|
|
44
46
|
this._updateTileData();
|
|
45
47
|
}
|
|
46
48
|
|
|
47
|
-
if (this.state.data) {
|
|
49
|
+
if ((_this$state = this.state) !== null && _this$state !== void 0 && _this$state.data) {
|
|
48
50
|
super.updateState({
|
|
49
51
|
props,
|
|
50
52
|
oldProps,
|
|
@@ -67,9 +69,7 @@ export default class MVTLayer extends TileLayer {
|
|
|
67
69
|
}
|
|
68
70
|
|
|
69
71
|
async _updateTileData() {
|
|
70
|
-
let
|
|
71
|
-
data
|
|
72
|
-
} = this.props;
|
|
72
|
+
let data = this.props.data;
|
|
73
73
|
let tileJSON = null;
|
|
74
74
|
|
|
75
75
|
if (typeof data === 'string' && !isURLTemplate(data)) {
|
|
@@ -94,7 +94,10 @@ export default class MVTLayer extends TileLayer {
|
|
|
94
94
|
}
|
|
95
95
|
|
|
96
96
|
if (onDataLoad) {
|
|
97
|
-
onDataLoad(tileJSON
|
|
97
|
+
onDataLoad(tileJSON, {
|
|
98
|
+
propName: 'data',
|
|
99
|
+
layer: this
|
|
100
|
+
});
|
|
98
101
|
}
|
|
99
102
|
} else if (data.tilejson) {
|
|
100
103
|
tileJSON = data;
|
|
@@ -113,9 +116,7 @@ export default class MVTLayer extends TileLayer {
|
|
|
113
116
|
_getTilesetOptions() {
|
|
114
117
|
const opts = super._getTilesetOptions();
|
|
115
118
|
|
|
116
|
-
const
|
|
117
|
-
tileJSON
|
|
118
|
-
} = this.state;
|
|
119
|
+
const tileJSON = this.state.tileJSON;
|
|
119
120
|
const {
|
|
120
121
|
minZoom,
|
|
121
122
|
maxZoom
|
|
@@ -135,30 +136,33 @@ export default class MVTLayer extends TileLayer {
|
|
|
135
136
|
}
|
|
136
137
|
|
|
137
138
|
renderLayers() {
|
|
138
|
-
|
|
139
|
+
var _this$state2;
|
|
140
|
+
|
|
141
|
+
if (!((_this$state2 = this.state) !== null && _this$state2 !== void 0 && _this$state2.data)) return null;
|
|
139
142
|
return super.renderLayers();
|
|
140
143
|
}
|
|
141
144
|
|
|
142
|
-
getTileData(
|
|
145
|
+
getTileData(loadProps) {
|
|
143
146
|
var _loadOptions;
|
|
144
147
|
|
|
145
|
-
const
|
|
148
|
+
const {
|
|
149
|
+
data,
|
|
150
|
+
binary
|
|
151
|
+
} = this.state;
|
|
152
|
+
const {
|
|
153
|
+
index,
|
|
154
|
+
signal
|
|
155
|
+
} = loadProps;
|
|
156
|
+
const url = getURLFromTemplate(data, loadProps);
|
|
146
157
|
|
|
147
158
|
if (!url) {
|
|
148
159
|
return Promise.reject('Invalid URL');
|
|
149
160
|
}
|
|
150
161
|
|
|
151
162
|
let loadOptions = this.getLoadOptions();
|
|
152
|
-
const {
|
|
153
|
-
binary
|
|
154
|
-
} = this.state;
|
|
155
163
|
const {
|
|
156
164
|
fetch
|
|
157
165
|
} = this.props;
|
|
158
|
-
const {
|
|
159
|
-
signal,
|
|
160
|
-
index
|
|
161
|
-
} = tile;
|
|
162
166
|
loadOptions = { ...loadOptions,
|
|
163
167
|
mimeType: 'application/x-protobuf',
|
|
164
168
|
mvt: { ...((_loadOptions = loadOptions) === null || _loadOptions === void 0 ? void 0 : _loadOptions.mvt),
|
|
@@ -243,7 +247,7 @@ export default class MVTLayer extends TileLayer {
|
|
|
243
247
|
|
|
244
248
|
getPickingInfo(params) {
|
|
245
249
|
const info = super.getPickingInfo(params);
|
|
246
|
-
const isWGS84 = this.context.viewport.resolution;
|
|
250
|
+
const isWGS84 = Boolean(this.context.viewport.resolution);
|
|
247
251
|
|
|
248
252
|
if (this.state.binary && info.index !== -1) {
|
|
249
253
|
const {
|
|
@@ -343,9 +347,7 @@ export default class MVTLayer extends TileLayer {
|
|
|
343
347
|
|
|
344
348
|
_setWGS84PropertyForTiles() {
|
|
345
349
|
const propName = 'dataInWGS84';
|
|
346
|
-
const
|
|
347
|
-
tileset
|
|
348
|
-
} = this.state;
|
|
350
|
+
const tileset = this.state.tileset;
|
|
349
351
|
tileset.selectedTiles.forEach(tile => {
|
|
350
352
|
if (!tile.hasOwnProperty(propName)) {
|
|
351
353
|
Object.defineProperty(tile, propName, {
|
|
@@ -358,9 +360,13 @@ export default class MVTLayer extends TileLayer {
|
|
|
358
360
|
return [];
|
|
359
361
|
}
|
|
360
362
|
|
|
361
|
-
|
|
363
|
+
const {
|
|
364
|
+
bbox
|
|
365
|
+
} = tile;
|
|
366
|
+
|
|
367
|
+
if (tile._contentWGS84 === undefined && isGeoBoundingBox(bbox)) {
|
|
362
368
|
const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;
|
|
363
|
-
tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature,
|
|
369
|
+
tile._contentWGS84 = content.map(feature => transformTileCoordsToWGS84(feature, bbox, this.context.viewport));
|
|
364
370
|
}
|
|
365
371
|
|
|
366
372
|
return tile._contentWGS84;
|
|
@@ -372,8 +378,12 @@ export default class MVTLayer extends TileLayer {
|
|
|
372
378
|
|
|
373
379
|
}
|
|
374
380
|
|
|
381
|
+
_defineProperty(MVTLayer, "layerName", 'MVTLayer');
|
|
382
|
+
|
|
383
|
+
_defineProperty(MVTLayer, "defaultProps", defaultProps);
|
|
384
|
+
|
|
375
385
|
function getFeatureUniqueId(feature, uniqueIdProperty) {
|
|
376
|
-
if (uniqueIdProperty) {
|
|
386
|
+
if (feature.properties && uniqueIdProperty) {
|
|
377
387
|
return feature.properties[uniqueIdProperty];
|
|
378
388
|
}
|
|
379
389
|
|
|
@@ -408,7 +418,4 @@ function transformTileCoordsToWGS84(object, bbox, viewport) {
|
|
|
408
418
|
});
|
|
409
419
|
return feature;
|
|
410
420
|
}
|
|
411
|
-
|
|
412
|
-
MVTLayer.layerName = 'MVTLayer';
|
|
413
|
-
MVTLayer.defaultProps = defaultProps;
|
|
414
421
|
//# sourceMappingURL=mvt-layer.js.map
|