@deck.gl/geo-layers 8.8.0-alpha.2 → 8.8.0-alpha.3
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 +2060 -2044
- package/dist/es5/geo-cell-layer/GeoCellLayer.js +3 -3
- package/dist/es5/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +10 -7
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-layer.js +4 -2
- package/dist/es5/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/es5/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +21 -21
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/esm/geo-cell-layer/GeoCellLayer.js +6 -3
- package/dist/esm/geo-cell-layer/GeoCellLayer.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +8 -4
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-layer.js +5 -2
- package/dist/esm/quadkey-layer/quadkey-layer.js.map +1 -1
- package/dist/esm/quadkey-layer/quadkey-utils.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +4 -5
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/utils.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
- package/src/geo-cell-layer/{GeoCellLayer.js → GeoCellLayer.ts} +14 -10
- package/src/index.ts +1 -0
- package/src/mvt-layer/mvt-layer.js +5 -4
- package/src/quadkey-layer/quadkey-layer.ts +39 -0
- package/src/quadkey-layer/{quadkey-utils.js → quadkey-utils.ts} +2 -2
- package/src/tile-layer/tile-layer.ts +42 -39
- package/src/tile-layer/utils.ts +7 -2
- package/src/quadkey-layer/quadkey-layer.js +0 -22
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\n\nexport type {TileLayerProps} from './tile-layer/tile-layer';\n"],"file":"index.js"}
|
|
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\n\nexport type {TileLayerProps} from './tile-layer/tile-layer';\nexport type {QuadkeyLayerProps} from './quadkey-layer/quadkey-layer';\n"],"file":"index.js"}
|
|
@@ -110,19 +110,23 @@ export default class MVTLayer extends TileLayer {
|
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
112
|
|
|
113
|
-
_getTilesetOptions(
|
|
114
|
-
const opts = super._getTilesetOptions(
|
|
113
|
+
_getTilesetOptions() {
|
|
114
|
+
const opts = super._getTilesetOptions();
|
|
115
115
|
|
|
116
116
|
const {
|
|
117
117
|
tileJSON
|
|
118
118
|
} = this.state;
|
|
119
|
+
const {
|
|
120
|
+
minZoom,
|
|
121
|
+
maxZoom
|
|
122
|
+
} = this.props;
|
|
119
123
|
|
|
120
124
|
if (tileJSON) {
|
|
121
|
-
if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom >
|
|
125
|
+
if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {
|
|
122
126
|
opts.minZoom = tileJSON.minzoom;
|
|
123
127
|
}
|
|
124
128
|
|
|
125
|
-
if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(
|
|
129
|
+
if (Number.isFinite(tileJSON.maxzoom) && (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)) {
|
|
126
130
|
opts.maxZoom = tileJSON.maxzoom;
|
|
127
131
|
}
|
|
128
132
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","context","viewport","resolution","undefined","props","setState","data","tileJSON","isLoaded","state","tileset","updateState","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","Number","isFinite","minzoom","minZoom","maxzoom","maxZoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","index","mimeType","mvt","coordinates","tileIndex","gis","format","renderSubLayers","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"AAAA,SAAQA,GAAR,QAAkB,eAAlB;AACA,SAAQC,OAAR,QAAsB,eAAtB;AACA,SAAQC,eAAR,QAA8B,iBAA9B;AACA,SAAQC,eAAR,QAA8B,iBAA9B;AACA,SAAQC,iBAAR,QAAgC,eAAhC;AACA,SAAQC,aAAR,QAA4B,qBAA5B;AAEA,OAAOC,SAAP,MAAsB,0BAAtB;AACA,SAAQC,kBAAR,EAA4BC,aAA5B,QAAgD,qBAAhD;AACA,SAAQC,SAAR,QAAwB,wBAAxB;AACA,OAAOC,eAAP,MAA4B,qBAA5B;AAEA,SAAQC,YAAR,QAA2B,iBAA3B;AAEA,MAAMC,UAAU,GAAG,GAAnB;AAEA,MAAMC,YAAY,GAAG,EACnB,GAAGF,YAAY,CAACE,YADG;AAEnBC,EAAAA,gBAAgB,EAAE;AAACC,IAAAA,IAAI,EAAE,QAAP;AAAiBC,IAAAA,KAAK,EAAE;AAAxB,GAFC;AAGnBC,EAAAA,oBAAoB,EAAE,IAHH;AAInBC,EAAAA,OAAO,EAAE,CAAChB,eAAD,CAJU;AAKnBiB,EAAAA,MAAM,EAAE;AALW,CAArB;AAQA,eAAe,MAAMC,QAAN,SAAuBd,SAAvB,CAAiC;AAC9Ce,EAAAA,eAAe,GAAG;AAChB,UAAMA,eAAN;AAEA,UAAMF,MAAM,GAAG,KAAKG,OAAL,CAAaC,QAAb,CAAsBC,UAAtB,KAAqCC,SAArC,GAAiD,KAAjD,GAAyD,KAAKC,KAAL,CAAWP,MAAnF;AACA,SAAKQ,QAAL,CAAc;AACZR,MAAAA,MADY;AAEZS,MAAAA,IAAI,EAAE,IAFM;AAGZC,MAAAA,QAAQ,EAAE;AAHE,KAAd;AAKD;;AAEW,MAARC,QAAQ,GAAG;AACb,WAAO,KAAKC,KAAL,CAAWH,IAAX,IAAmB,KAAKG,KAAL,CAAWC,OAA9B,IAAyC,MAAMF,QAAtD;AACD;;AAEDG,EAAAA,WAAW,CAAC;AAACP,IAAAA,KAAD;AAAQQ,IAAAA,QAAR;AAAkBZ,IAAAA,OAAlB;AAA2Ba,IAAAA;AAA3B,GAAD,EAA0C;AACnD,QAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,WAAKC,eAAL;AACD;;AAED,QAAI,KAAKN,KAAL,CAAWH,IAAf,EAAqB;AACnB,YAAMK,WAAN,CAAkB;AAACP,QAAAA,KAAD;AAAQQ,QAAAA,QAAR;AAAkBZ,QAAAA,OAAlB;AAA2Ba,QAAAA;AAA3B,OAAlB;;AACA,WAAKG,yBAAL;AACD;;AACD,UAAM;AAACC,MAAAA;AAAD,QAAmBb,KAAzB;;AACA,QAAIa,cAAc,KAAKL,QAAQ,CAACK,cAA5B,IAA8CC,KAAK,CAACC,OAAN,CAAcF,cAAd,CAAlD,EAAiF;AAC/E,WAAKZ,QAAL,CAAc;AAACY,QAAAA;AAAD,OAAd;AACD;AACF;;AAGoB,QAAfF,eAAe,GAAG;AACtB,QAAI;AAACT,MAAAA;AAAD,QAAS,KAAKF,KAAlB;AACA,QAAIG,QAAQ,GAAG,IAAf;;AAEA,QAAI,OAAOD,IAAP,KAAgB,QAAhB,IAA4B,CAACpB,aAAa,CAACoB,IAAD,CAA9C,EAAsD;AACpD,YAAM;AAACc,QAAAA,UAAD;AAAaC,QAAAA;AAAb,UAAsB,KAAKjB,KAAjC;AACA,WAAKC,QAAL,CAAc;AAACC,QAAAA,IAAI,EAAE,IAAP;AAAaC,QAAAA,QAAQ,EAAE;AAAvB,OAAd;;AACA,UAAI;AACFA,QAAAA,QAAQ,GAAG,MAAMc,KAAK,CAACf,IAAD,EAAO;AAACgB,UAAAA,QAAQ,EAAE,MAAX;AAAmBC,UAAAA,KAAK,EAAE,IAA1B;AAAgC3B,UAAAA,OAAO,EAAE;AAAzC,SAAP,CAAtB;AACD,OAFD,CAEE,OAAO4B,KAAP,EAAc;AACd,aAAKC,UAAL,CAAgBD,KAAhB,EAAuB,kBAAvB;AACAlB,QAAAA,IAAI,GAAG,IAAP;AACD;;AAED,UAAIc,UAAJ,EAAgB;AACdA,QAAAA,UAAU,CAACb,QAAD,CAAV;AACD;AACF,KAbD,MAaO,IAAID,IAAI,CAACoB,QAAT,EAAmB;AACxBnB,MAAAA,QAAQ,GAAGD,IAAX;AACD;;AAED,QAAIC,QAAJ,EAAc;AACZD,MAAAA,IAAI,GAAGC,QAAQ,CAACoB,KAAhB;AACD;;AAED,SAAKtB,QAAL,CAAc;AAACC,MAAAA,IAAD;AAAOC,MAAAA;AAAP,KAAd;AACD;;AAEDqB,EAAAA,kBAAkB,CAACxB,KAAD,EAAQ;AACxB,UAAMyB,IAAI,GAAG,MAAMD,kBAAN,CAAyBxB,KAAzB,CAAb;;AACA,UAAM;AAACG,MAAAA;AAAD,QAAa,KAAKE,KAAxB;;AAEA,QAAIF,QAAJ,EAAc;AACZ,UAAIuB,MAAM,CAACC,QAAP,CAAgBxB,QAAQ,CAACyB,OAAzB,KAAqCzB,QAAQ,CAACyB,OAAT,GAAmB5B,KAAK,CAAC6B,OAAlE,EAA2E;AACzEJ,QAAAA,IAAI,CAACI,OAAL,GAAe1B,QAAQ,CAACyB,OAAxB;AACD;;AAED,UACEF,MAAM,CAACC,QAAP,CAAgBxB,QAAQ,CAAC2B,OAAzB,MACC,CAACJ,MAAM,CAACC,QAAP,CAAgB3B,KAAK,CAAC+B,OAAtB,CAAD,IAAmC5B,QAAQ,CAAC2B,OAAT,GAAmB9B,KAAK,CAAC+B,OAD7D,CADF,EAGE;AACAN,QAAAA,IAAI,CAACM,OAAL,GAAe5B,QAAQ,CAAC2B,OAAxB;AACD;AACF;;AACD,WAAOL,IAAP;AACD;;AAIDO,EAAAA,YAAY,GAAG;AACb,QAAI,CAAC,KAAK3B,KAAL,CAAWH,IAAhB,EAAsB,OAAO,IAAP;AACtB,WAAO,MAAM8B,YAAN,EAAP;AACD;;AAEDC,EAAAA,WAAW,CAACC,IAAD,EAAO;AAAA;;AAChB,UAAMC,GAAG,GAAGtD,kBAAkB,CAAC,KAAKwB,KAAL,CAAWH,IAAZ,EAAkBgC,IAAlB,CAA9B;;AACA,QAAI,CAACC,GAAL,EAAU;AACR,aAAOC,OAAO,CAACC,MAAR,CAAe,aAAf,CAAP;AACD;;AACD,QAAIC,WAAW,GAAG,KAAKC,cAAL,EAAlB;AACA,UAAM;AAAC9C,MAAAA;AAAD,QAAW,KAAKY,KAAtB;AACA,UAAM;AAACY,MAAAA;AAAD,QAAU,KAAKjB,KAArB;AACA,UAAM;AAACwC,MAAAA,MAAD;AAASC,MAAAA;AAAT,QAAkBP,IAAxB;AACAI,IAAAA,WAAW,GAAG,EACZ,GAAGA,WADS;AAEZI,MAAAA,QAAQ,EAAE,wBAFE;AAGZC,MAAAA,GAAG,EAAE,EACH,oBAAGL,WAAH,iDAAG,aAAaK,GAAhB,CADG;AAEHC,QAAAA,WAAW,EAAE,KAAKhD,OAAL,CAAaC,QAAb,CAAsBC,UAAtB,GAAmC,OAAnC,GAA6C,OAFvD;AAGH+C,QAAAA,SAAS,EAAEJ;AAHR,OAHO;AAYZK,MAAAA,GAAG,EAAErD,MAAM,GAAG;AAACsD,QAAAA,MAAM,EAAE;AAAT,OAAH,GAAwB;AAZvB,KAAd;AAcA,WAAO9B,KAAK,CAACkB,GAAD,EAAM;AAACjB,MAAAA,QAAQ,EAAE,MAAX;AAAmBC,MAAAA,KAAK,EAAE,IAA1B;AAAgCmB,MAAAA,WAAhC;AAA6CE,MAAAA;AAA7C,KAAN,CAAZ;AACD;;AAEDQ,EAAAA,eAAe,CAAChD,KAAD,EAAQ;AACrB,UAAM;AAACiD,MAAAA,CAAD;AAAIC,MAAAA,CAAJ;AAAOC,MAAAA;AAAP,QAAYnD,KAAK,CAACkC,IAAN,CAAWO,KAA7B;AACA,UAAMW,UAAU,GAAGC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,CAAZ,CAAnB;AAEA,UAAMI,MAAM,GAAGrE,UAAU,GAAGkE,UAA5B;AACA,UAAMI,MAAM,GAAG,CAACD,MAAhB;AAEA,UAAME,OAAO,GAAIvE,UAAU,GAAG+D,CAAd,GAAmBG,UAAnC;AACA,UAAMM,OAAO,GAAGxE,UAAU,IAAI,IAAIgE,CAAC,GAAGE,UAAZ,CAA1B;AAEA,UAAMO,WAAW,GAAG,IAAIpF,OAAJ,GAAcqF,KAAd,CAAoB,CAACL,MAAD,EAASC,MAAT,EAAiB,CAAjB,CAApB,CAApB;AAEAxD,IAAAA,KAAK,CAAC6D,aAAN,GAAsB,KAAtB;;AAEA,QAAI,CAAC,KAAKjE,OAAL,CAAaC,QAAb,CAAsBC,UAA3B,EAAuC;AACrCE,MAAAA,KAAK,CAAC2D,WAAN,GAAoBA,WAApB;AACA3D,MAAAA,KAAK,CAAC8D,gBAAN,GAAyB,CAACL,OAAD,EAAUC,OAAV,EAAmB,CAAnB,CAAzB;AACA1D,MAAAA,KAAK,CAAC+D,gBAAN,GAAyBrF,iBAAiB,CAACsF,SAA3C;AACAhE,MAAAA,KAAK,CAACiE,UAAN,GAAmB,CAAC,IAAIjE,KAAK,CAACiE,UAAN,IAAoB,EAAxB,CAAD,EAA8B,IAAItF,aAAJ,EAA9B,CAAnB;AACD;;AAED,UAAMuF,SAAS,GAAG,MAAMlB,eAAN,CAAsBhD,KAAtB,CAAlB;;AAEA,QAAI,KAAKK,KAAL,CAAWZ,MAAX,IAAqB,EAAEyE,SAAS,YAAYjF,YAAvB,CAAzB,EAA+D;AAC7DX,MAAAA,GAAG,CAAC6F,IAAJ,CAAS,mEAAT;AACD;;AAED,WAAOD,SAAP;AACD;;AAEDE,EAAAA,oBAAoB,CAACC,IAAD,EAAO;AACzB,UAAM;AAACjF,MAAAA;AAAD,QAAqB,KAAKY,KAAhC;AAEA,UAAM;AAACsE,MAAAA,gBAAD;AAAmBC,MAAAA;AAAnB,QAA8C,KAAKlE,KAAzD;AACA,UAAMmE,cAAc,GAAGH,IAAI,CAACI,MAA5B;AACA,QAAIC,mBAAJ;AACA,QAAIC,0BAAJ;;AAEA,QAAIH,cAAJ,EAAoB;AAClBE,MAAAA,mBAAmB,GAAGE,kBAAkB,CAACJ,cAAD,EAAiBpF,gBAAjB,CAAxC;AACAuF,MAAAA,0BAA0B,GAAGE,mBAAmB,CAACL,cAAD,CAAhD;AACD;;AACD,QAAI;AAAC3D,MAAAA;AAAD,QAAmB,KAAKb,KAA5B;;AACA,QAAI,OAAOa,cAAP,KAA0B,UAA9B,EAA0C;AACxCA,MAAAA,cAAc,GAAGA,cAAc,CAACwD,IAAD,CAA/B;AACD;;AAED,QACEC,gBAAgB,KAAKI,mBAArB,IACAH,uBAAuB,KAAKI,0BAF9B,EAGE;AACA,WAAK1E,QAAL,CAAc;AACZY,QAAAA,cADY;AAEZyD,QAAAA,gBAAgB,EAAEI,mBAFN;AAGZH,QAAAA,uBAAuB,EAAEI;AAHb,OAAd;AAKD;AACF;;AAEDG,EAAAA,cAAc,CAACC,MAAD,EAAS;AACrB,UAAMV,IAAI,GAAG,MAAMS,cAAN,CAAqBC,MAArB,CAAb;AAEA,UAAMC,OAAO,GAAG,KAAKpF,OAAL,CAAaC,QAAb,CAAsBC,UAAtC;;AAEA,QAAI,KAAKO,KAAL,CAAWZ,MAAX,IAAqB4E,IAAI,CAAC5B,KAAL,KAAe,CAAC,CAAzC,EAA4C;AAC1C,YAAM;AAACvC,QAAAA;AAAD,UAAS6E,MAAM,CAACE,WAAP,CAAmBjF,KAAlC;AACAqE,MAAAA,IAAI,CAACI,MAAL,GAAchG,eAAe,CAACyB,IAAD,EAAO;AAACgF,QAAAA,eAAe,EAAEb,IAAI,CAAC5B;AAAvB,OAAP,CAA7B;AACD;;AACD,QAAI4B,IAAI,CAACI,MAAL,IAAe,CAACO,OAApB,EAA6B;AAC3BX,MAAAA,IAAI,CAACI,MAAL,GAAcU,0BAA0B,CAACd,IAAI,CAACI,MAAN,EAAcJ,IAAI,CAACnC,IAAL,CAAUkD,IAAxB,EAA8B,KAAKxF,OAAL,CAAaC,QAA3C,CAAxC;AACD;;AAED,WAAOwE,IAAP;AACD;;AAEDgB,EAAAA,sBAAsB,CAACnD,IAAD,EAAO;AAC3B,WAAO;AACLoD,MAAAA,sBAAsB,EAAE,KAAKC,yBAAL,CAA+BrD,IAA/B,CADnB;AAELrB,MAAAA,cAAc,EAAE,KAAKR,KAAL,CAAWQ;AAFtB,KAAP;AAID;;AAED0E,EAAAA,yBAAyB,CAACrD,IAAD,EAAO;AAC9B,UAAM;AAACoC,MAAAA,gBAAD;AAAmBC,MAAAA,uBAAnB;AAA4C9E,MAAAA;AAA5C,QAAsD,KAAKY,KAAjE;AACA,UAAM;AAACjB,MAAAA,gBAAD;AAAmBG,MAAAA;AAAnB,QAA2C,KAAKS,KAAtD;AACA,UAAME,IAAI,GAAGgC,IAAI,CAACsD,OAAlB;AAEA,UAAMC,aAAa,GAAGC,kBAAkB,CAACnG,oBAAD,CAAxC;AACA,UAAMoG,kBAAkB,GAAGD,kBAAkB,CAACpB,gBAAD,CAAlB,IAAwCmB,aAAnE;;AAEA,QAAI,CAACE,kBAAL,EAAyB;AACvB,aAAO,CAAC,CAAR;AACD;;AAED,UAAMC,oBAAoB,GAAGH,aAAa,GAAGlG,oBAAH,GAA0B+E,gBAApE;;AAGA,QAAIxD,KAAK,CAACC,OAAN,CAAcb,IAAd,CAAJ,EAAyB;AACvB,aAAOA,IAAI,CAAC2F,SAAL,CAAeC,OAAO,IAAI;AAC/B,cAAMC,YAAY,GAAGnB,kBAAkB,CAACkB,OAAD,EAAU1G,gBAAV,CAAlB,KAAkDwG,oBAAvE;AACA,cAAMI,eAAe,GACnBP,aAAa,IAAIZ,mBAAmB,CAACiB,OAAD,CAAnB,KAAiCvB,uBADpD;AAEA,eAAOwB,YAAY,IAAIC,eAAvB;AACD,OALM,CAAP;AAQD,KATD,MASO,IAAI9F,IAAI,IAAIT,MAAZ,EAAoB;AAEzB,aAAOT,eAAe,CACpBkB,IADoB,EAEpBd,gBAFoB,EAGpBwG,oBAHoB,EAIpBH,aAAa,GAAG,EAAH,GAAQlB,uBAJD,CAAtB;AAMD;;AAED,WAAO,CAAC,CAAR;AACD;;AAED0B,EAAAA,YAAY,CAACC,UAAD,EAAa;AACvB,UAAM;AAACC,MAAAA,IAAD;AAAOtG,MAAAA;AAAP,QAAmB,KAAKD,OAA9B;AACA,UAAMwG,KAAK,GAAGvG,QAAQ,CAACuG,KAAvB;AACA,UAAMC,MAAM,GAAGxG,QAAQ,CAACwG,MAAxB;AACA,UAAMpD,CAAC,GAAGpD,QAAQ,CAACoD,CAAnB;AACA,UAAMC,CAAC,GAAGrD,QAAQ,CAACqD,CAAnB;AACA,UAAMoD,QAAQ,GAAG,CAAC,KAAKC,EAAN,CAAjB;AACA,WAAOJ,IAAI,CAACK,WAAL,CAAiB;AAACvD,MAAAA,CAAD;AAAIC,MAAAA,CAAJ;AAAOkD,MAAAA,KAAP;AAAcC,MAAAA,MAAd;AAAsBC,MAAAA,QAAtB;AAAgCJ,MAAAA;AAAhC,KAAjB,CAAP;AACD;;AAEDO,EAAAA,mBAAmB,CAACC,WAAW,GAAG,IAAf,EAAqB;AACtC,UAAMC,QAAQ,GAAG,KAAKV,YAAL,CAAkBS,WAAlB,CAAjB;;AACA,UAAME,YAAY,GAAG,IAAIC,GAAJ,EAArB;AACA,UAAMC,gBAAgB,GAAG,EAAzB;;AAEA,SAAK,MAAMC,CAAX,IAAgBJ,QAAhB,EAA0B;AACxB,YAAMK,SAAS,GAAGpC,kBAAkB,CAACmC,CAAC,CAACtC,MAAH,EAAW,KAAKzE,KAAL,CAAWZ,gBAAtB,CAApC;;AAEA,UAAI4H,SAAS,KAAKjH,SAAlB,EAA6B;AAE3B+G,QAAAA,gBAAgB,CAACG,IAAjB,CAAsBF,CAAC,CAACtC,MAAxB;AACD,OAHD,MAGO,IAAI,CAACmC,YAAY,CAACM,GAAb,CAAiBF,SAAjB,CAAL,EAAkC;AAEvCJ,QAAAA,YAAY,CAACO,GAAb,CAAiBH,SAAjB;AACAF,QAAAA,gBAAgB,CAACG,IAAjB,CAAsBF,CAAC,CAACtC,MAAxB;AACD;AACF;;AAED,WAAOqC,gBAAP;AACD;;AAEDlG,EAAAA,yBAAyB,GAAG;AAC1B,UAAMM,QAAQ,GAAG,aAAjB;AACA,UAAM;AAACZ,MAAAA;AAAD,QAAY,KAAKD,KAAvB;AAEAC,IAAAA,OAAO,CAAC8G,aAAR,CAAsBC,OAAtB,CAA8BnF,IAAI,IAAI;AACpC,UAAI,CAACA,IAAI,CAACoF,cAAL,CAAoBpG,QAApB,CAAL,EAAoC;AAElCqG,QAAAA,MAAM,CAACC,cAAP,CAAsBtF,IAAtB,EAA4BhB,QAA5B,EAAsC;AACpCuG,UAAAA,GAAG,EAAE,MAAM;AAET,gBAAI,CAACvF,IAAI,CAACsD,OAAV,EAAmB;AACjB,qBAAO,IAAP;AACD;;AAED,gBAAI,KAAKnF,KAAL,CAAWZ,MAAX,IAAqBqB,KAAK,CAACC,OAAN,CAAcmB,IAAI,CAACsD,OAAnB,CAArB,IAAoD,CAACtD,IAAI,CAACsD,OAAL,CAAakC,MAAtE,EAA8E;AAG5E,qBAAO,EAAP;AACD;;AAED,gBAAIxF,IAAI,CAACyF,aAAL,KAAuB5H,SAA3B,EAAsC;AAEpC,oBAAMyF,OAAO,GAAG,KAAKnF,KAAL,CAAWZ,MAAX,GAAoBhB,eAAe,CAACyD,IAAI,CAACsD,OAAN,CAAnC,GAAoDtD,IAAI,CAACsD,OAAzE;AACAtD,cAAAA,IAAI,CAACyF,aAAL,GAAqBnC,OAAO,CAACoC,GAAR,CAAY9B,OAAO,IACtCX,0BAA0B,CAACW,OAAD,EAAU5D,IAAI,CAACkD,IAAf,EAAqB,KAAKxF,OAAL,CAAaC,QAAlC,CADP,CAArB;AAGD;;AACD,mBAAOqC,IAAI,CAACyF,aAAZ;AACD;AArBmC,SAAtC;AAuBD;AACF,KA3BD;AA4BD;;AAtS6C;;AAyShD,SAAS/C,kBAAT,CAA4BkB,OAA5B,EAAqC1G,gBAArC,EAAuD;AACrD,MAAIA,gBAAJ,EAAsB;AACpB,WAAO0G,OAAO,CAAC+B,UAAR,CAAmBzI,gBAAnB,CAAP;AACD;;AAED,MAAI,QAAQ0G,OAAZ,EAAqB;AACnB,WAAOA,OAAO,CAACS,EAAf;AACD;;AAED,SAAOxG,SAAP;AACD;;AAED,SAAS8E,mBAAT,CAA6BiB,OAA7B,EAAsC;AAAA;;AACpC,SAAO,wBAAAA,OAAO,CAAC+B,UAAR,4EAAoBC,SAApB,KAAiC,IAAxC;AACD;;AAED,SAASpC,kBAAT,CAA4BpG,KAA5B,EAAmC;AACjC,SAAOA,KAAK,KAAKS,SAAV,IAAuBT,KAAK,KAAK,IAAjC,IAAyCA,KAAK,KAAK,EAA1D;AACD;;AAED,SAAS6F,0BAAT,CAAoCV,MAApC,EAA4CW,IAA5C,EAAkDvF,QAAlD,EAA4D;AAC1D,QAAMiG,OAAO,GAAG,EACd,GAAGrB,MADW;AAEdsD,IAAAA,QAAQ,EAAE;AACR1I,MAAAA,IAAI,EAAEoF,MAAM,CAACsD,QAAP,CAAgB1I;AADd;AAFI,GAAhB;AAQAkI,EAAAA,MAAM,CAACC,cAAP,CAAsB1B,OAAO,CAACiC,QAA9B,EAAwC,aAAxC,EAAuD;AACrDN,IAAAA,GAAG,EAAE,MAAM;AACT,YAAMO,SAAS,GAAGjJ,SAAS,CAAC0F,MAAM,CAACsD,QAAR,EAAkB3C,IAAlB,EAAwBvF,QAAxB,CAA3B;AACA,aAAOmI,SAAS,CAACpF,WAAjB;AACD;AAJoD,GAAvD;AAOA,SAAOkD,OAAP;AACD;;AAEDpG,QAAQ,CAACoI,SAAT,GAAqB,UAArB;AACApI,QAAQ,CAACP,YAAT,GAAwBA,YAAxB","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n ...GeoJsonLayer.defaultProps,\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions(props) {\n const opts = super._getTilesetOptions(props);\n const {tileJSON} = this.state;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > props.minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(props.maxZoom) || tileJSON.maxzoom < props.maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary} = this.state;\n const {fetch} = this.props;\n const {signal, index} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/mvt-layer.js"],"names":["log","Matrix4","MVTWorkerLoader","binaryToGeojson","COORDINATE_SYSTEM","ClipExtension","TileLayer","getURLFromTemplate","isURLTemplate","transform","findIndexBinary","GeoJsonLayer","WORLD_SIZE","defaultProps","uniqueIdProperty","type","value","highlightedFeatureId","loaders","binary","MVTLayer","initializeState","context","viewport","resolution","undefined","props","setState","data","tileJSON","isLoaded","state","tileset","updateState","oldProps","changeFlags","dataChanged","_updateTileData","_setWGS84PropertyForTiles","highlightColor","Array","isArray","onDataLoad","fetch","propName","layer","error","raiseError","tilejson","tiles","_getTilesetOptions","opts","minZoom","maxZoom","Number","isFinite","minzoom","maxzoom","renderLayers","getTileData","tile","url","Promise","reject","loadOptions","getLoadOptions","signal","index","mimeType","mvt","coordinates","tileIndex","gis","format","renderSubLayers","x","y","z","worldScale","Math","pow","xScale","yScale","xOffset","yOffset","modelMatrix","scale","autoHighlight","coordinateOrigin","coordinateSystem","CARTESIAN","extensions","subLayers","warn","_updateAutoHighlight","info","hoveredFeatureId","hoveredFeatureLayerName","hoveredFeature","object","newHoveredFeatureId","newHoveredFeatureLayerName","getFeatureUniqueId","getFeatureLayerName","getPickingInfo","params","isWGS84","sourceLayer","globalFeatureId","transformTileCoordsToWGS84","bbox","getSubLayerPropsByTile","highlightedObjectIndex","getHighlightedObjectIndex","content","isHighlighted","isFeatureIdDefined","isFeatureIdPresent","featureIdToHighlight","findIndex","feature","isMatchingId","isMatchingLayer","_pickObjects","maxObjects","deck","width","height","layerIds","id","pickObjects","getRenderedFeatures","maxFeatures","features","featureCache","Set","renderedFeatures","f","featureId","push","has","add","selectedTiles","forEach","hasOwnProperty","Object","defineProperty","get","length","_contentWGS84","map","properties","layerName","geometry","wgs84Geom"],"mappings":"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","sourcesContent":["import {log} from '@deck.gl/core';\nimport {Matrix4} from '@math.gl/core';\nimport {MVTWorkerLoader} from '@loaders.gl/mvt';\nimport {binaryToGeojson} from '@loaders.gl/gis';\nimport {COORDINATE_SYSTEM} from '@deck.gl/core';\nimport {ClipExtension} from '@deck.gl/extensions';\n\nimport TileLayer from '../tile-layer/tile-layer';\nimport {getURLFromTemplate, isURLTemplate} from '../tile-layer/utils';\nimport {transform} from './coordinate-transform';\nimport findIndexBinary from './find-index-binary';\n\nimport {GeoJsonLayer} from '@deck.gl/layers';\n\nconst WORLD_SIZE = 512;\n\nconst defaultProps = {\n ...GeoJsonLayer.defaultProps,\n uniqueIdProperty: {type: 'string', value: ''},\n highlightedFeatureId: null,\n loaders: [MVTWorkerLoader],\n binary: true\n};\n\nexport default class MVTLayer extends TileLayer {\n initializeState() {\n super.initializeState();\n // GlobeView doesn't work well with binary data\n const binary = this.context.viewport.resolution !== undefined ? false : this.props.binary;\n this.setState({\n binary,\n data: null,\n tileJSON: null\n });\n }\n\n get isLoaded() {\n return this.state.data && this.state.tileset && super.isLoaded;\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n this._updateTileData();\n }\n\n if (this.state.data) {\n super.updateState({props, oldProps, context, changeFlags});\n this._setWGS84PropertyForTiles();\n }\n const {highlightColor} = props;\n if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {\n this.setState({highlightColor});\n }\n }\n\n /* eslint-disable complexity */\n async _updateTileData() {\n let {data} = this.props;\n let tileJSON = null;\n\n if (typeof data === 'string' && !isURLTemplate(data)) {\n const {onDataLoad, fetch} = this.props;\n this.setState({data: null, tileJSON: null});\n try {\n tileJSON = await fetch(data, {propName: 'data', layer: this, loaders: []});\n } catch (error) {\n this.raiseError(error, 'loading TileJSON');\n data = null;\n }\n\n if (onDataLoad) {\n onDataLoad(tileJSON);\n }\n } else if (data.tilejson) {\n tileJSON = data;\n }\n\n if (tileJSON) {\n data = tileJSON.tiles;\n }\n\n this.setState({data, tileJSON});\n }\n\n _getTilesetOptions() {\n const opts = super._getTilesetOptions();\n const {tileJSON} = this.state;\n const {minZoom, maxZoom} = this.props;\n\n if (tileJSON) {\n if (Number.isFinite(tileJSON.minzoom) && tileJSON.minzoom > minZoom) {\n opts.minZoom = tileJSON.minzoom;\n }\n\n if (\n Number.isFinite(tileJSON.maxzoom) &&\n (!Number.isFinite(maxZoom) || tileJSON.maxzoom < maxZoom)\n ) {\n opts.maxZoom = tileJSON.maxzoom;\n }\n }\n return opts;\n }\n\n /* eslint-disable complexity */\n\n renderLayers() {\n if (!this.state.data) return null;\n return super.renderLayers();\n }\n\n getTileData(tile) {\n const url = getURLFromTemplate(this.state.data, tile);\n if (!url) {\n return Promise.reject('Invalid URL');\n }\n let loadOptions = this.getLoadOptions();\n const {binary} = this.state;\n const {fetch} = this.props;\n const {signal, index} = tile;\n loadOptions = {\n ...loadOptions,\n mimeType: 'application/x-protobuf',\n mvt: {\n ...loadOptions?.mvt,\n coordinates: this.context.viewport.resolution ? 'wgs84' : 'local',\n tileIndex: index\n // Local worker debug\n // workerUrl: `modules/mvt/dist/mvt-loader.worker.js`\n // Set worker to null to skip web workers\n // workerUrl: null\n },\n gis: binary ? {format: 'binary'} : {}\n };\n return fetch(url, {propName: 'data', layer: this, loadOptions, signal});\n }\n\n renderSubLayers(props) {\n const {x, y, z} = props.tile.index;\n const worldScale = Math.pow(2, z);\n\n const xScale = WORLD_SIZE / worldScale;\n const yScale = -xScale;\n\n const xOffset = (WORLD_SIZE * x) / worldScale;\n const yOffset = WORLD_SIZE * (1 - y / worldScale);\n\n const modelMatrix = new Matrix4().scale([xScale, yScale, 1]);\n\n props.autoHighlight = false;\n\n if (!this.context.viewport.resolution) {\n props.modelMatrix = modelMatrix;\n props.coordinateOrigin = [xOffset, yOffset, 0];\n props.coordinateSystem = COORDINATE_SYSTEM.CARTESIAN;\n props.extensions = [...(props.extensions || []), new ClipExtension()];\n }\n\n const subLayers = super.renderSubLayers(props);\n\n if (this.state.binary && !(subLayers instanceof GeoJsonLayer)) {\n log.warn('renderSubLayers() must return GeoJsonLayer when using binary:true')();\n }\n\n return subLayers;\n }\n\n _updateAutoHighlight(info) {\n const {uniqueIdProperty} = this.props;\n\n const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;\n const hoveredFeature = info.object;\n let newHoveredFeatureId;\n let newHoveredFeatureLayerName;\n\n if (hoveredFeature) {\n newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);\n newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);\n }\n let {highlightColor} = this.props;\n if (typeof highlightColor === 'function') {\n highlightColor = highlightColor(info);\n }\n\n if (\n hoveredFeatureId !== newHoveredFeatureId ||\n hoveredFeatureLayerName !== newHoveredFeatureLayerName\n ) {\n this.setState({\n highlightColor,\n hoveredFeatureId: newHoveredFeatureId,\n hoveredFeatureLayerName: newHoveredFeatureLayerName\n });\n }\n }\n\n getPickingInfo(params) {\n const info = super.getPickingInfo(params);\n\n const isWGS84 = this.context.viewport.resolution;\n\n if (this.state.binary && info.index !== -1) {\n const {data} = params.sourceLayer.props;\n info.object = binaryToGeojson(data, {globalFeatureId: info.index});\n }\n if (info.object && !isWGS84) {\n info.object = transformTileCoordsToWGS84(info.object, info.tile.bbox, this.context.viewport);\n }\n\n return info;\n }\n\n getSubLayerPropsByTile(tile) {\n return {\n highlightedObjectIndex: this.getHighlightedObjectIndex(tile),\n highlightColor: this.state.highlightColor\n };\n }\n\n getHighlightedObjectIndex(tile) {\n const {hoveredFeatureId, hoveredFeatureLayerName, binary} = this.state;\n const {uniqueIdProperty, highlightedFeatureId} = this.props;\n const data = tile.content;\n\n const isHighlighted = isFeatureIdDefined(highlightedFeatureId);\n const isFeatureIdPresent = isFeatureIdDefined(hoveredFeatureId) || isHighlighted;\n\n if (!isFeatureIdPresent) {\n return -1;\n }\n\n const featureIdToHighlight = isHighlighted ? highlightedFeatureId : hoveredFeatureId;\n\n // Iterable data\n if (Array.isArray(data)) {\n return data.findIndex(feature => {\n const isMatchingId = getFeatureUniqueId(feature, uniqueIdProperty) === featureIdToHighlight;\n const isMatchingLayer =\n isHighlighted || getFeatureLayerName(feature) === hoveredFeatureLayerName;\n return isMatchingId && isMatchingLayer;\n });\n\n // Non-iterable data\n } else if (data && binary) {\n // Get the feature index of the selected item to highlight\n return findIndexBinary(\n data,\n uniqueIdProperty,\n featureIdToHighlight,\n isHighlighted ? '' : hoveredFeatureLayerName\n );\n }\n\n return -1;\n }\n\n _pickObjects(maxObjects) {\n const {deck, viewport} = this.context;\n const width = viewport.width;\n const height = viewport.height;\n const x = viewport.x;\n const y = viewport.y;\n const layerIds = [this.id];\n return deck.pickObjects({x, y, width, height, layerIds, maxObjects});\n }\n\n getRenderedFeatures(maxFeatures = null) {\n const features = this._pickObjects(maxFeatures);\n const featureCache = new Set();\n const renderedFeatures = [];\n\n for (const f of features) {\n const featureId = getFeatureUniqueId(f.object, this.props.uniqueIdProperty);\n\n if (featureId === undefined) {\n // we have no id for the feature, we just add to the list\n renderedFeatures.push(f.object);\n } else if (!featureCache.has(featureId)) {\n // Add removing duplicates\n featureCache.add(featureId);\n renderedFeatures.push(f.object);\n }\n }\n\n return renderedFeatures;\n }\n\n _setWGS84PropertyForTiles() {\n const propName = 'dataInWGS84';\n const {tileset} = this.state;\n\n tileset.selectedTiles.forEach(tile => {\n if (!tile.hasOwnProperty(propName)) {\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(tile, propName, {\n get: () => {\n // Still loading or encountered an error\n if (!tile.content) {\n return null;\n }\n\n if (this.state.binary && Array.isArray(tile.content) && !tile.content.length) {\n // TODO: @loaders.gl/mvt returns [] when no content. It should return a valid empty binary.\n // https://github.com/visgl/loaders.gl/pull/1137\n return [];\n }\n\n if (tile._contentWGS84 === undefined) {\n // Create a cache to transform only once\n const content = this.state.binary ? binaryToGeojson(tile.content) : tile.content;\n tile._contentWGS84 = content.map(feature =>\n transformTileCoordsToWGS84(feature, tile.bbox, this.context.viewport)\n );\n }\n return tile._contentWGS84;\n }\n });\n }\n });\n }\n}\n\nfunction getFeatureUniqueId(feature, uniqueIdProperty) {\n if (uniqueIdProperty) {\n return feature.properties[uniqueIdProperty];\n }\n\n if ('id' in feature) {\n return feature.id;\n }\n\n return undefined;\n}\n\nfunction getFeatureLayerName(feature) {\n return feature.properties?.layerName || null;\n}\n\nfunction isFeatureIdDefined(value) {\n return value !== undefined && value !== null && value !== '';\n}\n\nfunction transformTileCoordsToWGS84(object, bbox, viewport) {\n const feature = {\n ...object,\n geometry: {\n type: object.geometry.type\n }\n };\n\n // eslint-disable-next-line accessor-pairs\n Object.defineProperty(feature.geometry, 'coordinates', {\n get: () => {\n const wgs84Geom = transform(object.geometry, bbox, viewport);\n return wgs84Geom.coordinates;\n }\n });\n\n return feature;\n}\n\nMVTLayer.layerName = 'MVTLayer';\nMVTLayer.defaultProps = defaultProps;\n"],"file":"mvt-layer.js"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
1
2
|
import GeoCellLayer from '../geo-cell-layer/GeoCellLayer';
|
|
2
3
|
import { getQuadkeyPolygon } from './quadkey-utils';
|
|
3
4
|
const defaultProps = {
|
|
@@ -21,6 +22,8 @@ export default class QuadkeyLayer extends GeoCellLayer {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
}
|
|
24
|
-
|
|
25
|
-
QuadkeyLayer
|
|
25
|
+
|
|
26
|
+
_defineProperty(QuadkeyLayer, "layerName", 'QuadkeyLayer');
|
|
27
|
+
|
|
28
|
+
_defineProperty(QuadkeyLayer, "defaultProps", defaultProps);
|
|
26
29
|
//# sourceMappingURL=quadkey-layer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.
|
|
1
|
+
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-layer.ts"],"names":["GeoCellLayer","getQuadkeyPolygon","defaultProps","getQuadkey","type","value","d","quadkey","QuadkeyLayer","indexToBounds","data","props","_normalize","positionFormat","getPolygon","x","objectInfo"],"mappings":";AACA,OAAOA,YAAP,MAAyB,gCAAzB;AACA,SAAQC,iBAAR,QAAgC,iBAAhC;AAEA,MAAMC,YAAY,GAAG;AACnBC,EAAAA,UAAU,EAAE;AAACC,IAAAA,IAAI,EAAE,UAAP;AAAmBC,IAAAA,KAAK,EAAEC,CAAC,IAAIA,CAAC,CAACC;AAAjC;AADO,CAArB;AAgBA,eAAe,MAAMC,YAAN,SAAyDR,YAAzD,CAGb;AAIAS,EAAAA,aAAa,GAA0C;AACrD,UAAM;AAACC,MAAAA,IAAD;AAAOP,MAAAA;AAAP,QAAqB,KAAKQ,KAAhC;AAEA,WAAO;AACLD,MAAAA,IADK;AAELE,MAAAA,UAAU,EAAE,KAFP;AAGLC,MAAAA,cAAc,EAAE,IAHX;AAKLC,MAAAA,UAAU,EAAE,CAACC,CAAD,EAAWC,UAAX,KAA0Bf,iBAAiB,CAACE,UAAU,CAACY,CAAD,EAAIC,UAAJ,CAAX;AALlD,KAAP;AAOD;;AAdD;;gBAHmBR,Y,eAIA,c;;gBAJAA,Y,kBAKQN,Y","sourcesContent":["import {AccessorFunction} from '@deck.gl/core';\nimport GeoCellLayer from '../geo-cell-layer/GeoCellLayer';\nimport {getQuadkeyPolygon} from './quadkey-utils';\n\nconst defaultProps = {\n getQuadkey: {type: 'accessor', value: d => d.quadkey}\n};\n\n/**\n * Properties of `QuadkeyLayer`.\n */\ntype QuadkeyLayerProps<DataT = any> = {\n /**\n * Called for each data object to retrieve the quadkey string identifier.\n *\n * By default, it reads `quadkey` property of data object.\n */\n getQuadkey?: AccessorFunction<DataT, string>;\n};\n\nexport default class QuadkeyLayer<DataT = any, ExtraProps = {}> extends GeoCellLayer<\n DataT,\n Required<QuadkeyLayerProps> & ExtraProps\n> {\n static layerName = 'QuadkeyLayer';\n static defaultProps: any = defaultProps;\n\n indexToBounds(): Partial<GeoCellLayer['props']> | null {\n const {data, getQuadkey} = this.props;\n\n return {\n data,\n _normalize: false,\n positionFormat: 'XY',\n\n getPolygon: (x: DataT, objectInfo) => getQuadkeyPolygon(getQuadkey(x, objectInfo))\n };\n }\n}\n"],"file":"quadkey-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.
|
|
1
|
+
{"version":3,"sources":["../../../src/quadkey-layer/quadkey-utils.ts"],"names":["worldToLngLat","TILE_SIZE","quadkeyToWorldBounds","quadkey","x","y","mask","length","scale","i","q","parseInt","getQuadkeyPolygon","topLeft","bottomRight","w","n","e","s"],"mappings":"AAAA,SAAQA,aAAR,QAA4B,uBAA5B;AAEA,MAAMC,SAAS,GAAG,GAAlB;AAEA,OAAO,SAASC,oBAAT,CAA8BC,OAA9B,EAAqE;AAC1E,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,CAAC,GAAG,CAAR;AACA,MAAIC,IAAI,GAAG,KAAKH,OAAO,CAACI,MAAxB;AACA,QAAMC,KAAK,GAAGF,IAAI,GAAGL,SAArB;;AAEA,OAAK,IAAIQ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGN,OAAO,CAACI,MAA5B,EAAoCE,CAAC,EAArC,EAAyC;AACvCH,IAAAA,IAAI,KAAK,CAAT;AACA,UAAMI,CAAC,GAAGC,QAAQ,CAACR,OAAO,CAACM,CAAD,CAAR,CAAlB;AACA,QAAIC,CAAC,GAAG,CAAR,EAAWN,CAAC,IAAIE,IAAL;AACX,QAAII,CAAC,GAAG,CAAR,EAAWL,CAAC,IAAIC,IAAL;AACZ;;AACD,SAAO,CACL,CAACF,CAAC,GAAGI,KAAL,EAAYP,SAAS,GAAGI,CAAC,GAAGG,KAA5B,CADK,EAEL,CAAC,CAACJ,CAAC,GAAG,IAAL,IAAaI,KAAd,EAAqBP,SAAS,GAAG,CAACI,CAAC,GAAG,IAAL,IAAaG,KAA9C,CAFK,CAAP;AAID;AAED,OAAO,SAASI,iBAAT,CAA2BT,OAA3B,EAAsD;AAC3D,QAAM,CAACU,OAAD,EAAUC,WAAV,IAAyBZ,oBAAoB,CAACC,OAAD,CAAnD;AACA,QAAM,CAACY,CAAD,EAAIC,CAAJ,IAAShB,aAAa,CAACa,OAAD,CAA5B;AACA,QAAM,CAACI,CAAD,EAAIC,CAAJ,IAASlB,aAAa,CAACc,WAAD,CAA5B;AACA,SAAO,CAACG,CAAD,EAAID,CAAJ,EAAOC,CAAP,EAAUC,CAAV,EAAaH,CAAb,EAAgBG,CAAhB,EAAmBH,CAAnB,EAAsBC,CAAtB,EAAyBC,CAAzB,EAA4BD,CAA5B,CAAP;AACD","sourcesContent":["import {worldToLngLat} from '@math.gl/web-mercator';\n\nconst TILE_SIZE = 512;\n\nexport function quadkeyToWorldBounds(quadkey: string): [number[], number[]] {\n let x = 0;\n let y = 0;\n let mask = 1 << quadkey.length;\n const scale = mask / TILE_SIZE;\n\n for (let i = 0; i < quadkey.length; i++) {\n mask >>= 1;\n const q = parseInt(quadkey[i]);\n if (q % 2) x |= mask;\n if (q > 1) y |= mask;\n }\n return [\n [x / scale, TILE_SIZE - y / scale],\n [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]\n ];\n}\n\nexport function getQuadkeyPolygon(quadkey: string): number[] {\n const [topLeft, bottomRight] = quadkeyToWorldBounds(quadkey);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\n"],"file":"quadkey-utils.js"}
|
|
@@ -82,7 +82,6 @@ export default class TileLayer extends CompositeLayer {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
updateState({
|
|
85
|
-
props,
|
|
86
85
|
changeFlags
|
|
87
86
|
}) {
|
|
88
87
|
assert(this.state);
|
|
@@ -93,12 +92,12 @@ export default class TileLayer extends CompositeLayer {
|
|
|
93
92
|
const dataChanged = changeFlags.dataChanged || changeFlags.updateTriggersChanged && (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData);
|
|
94
93
|
|
|
95
94
|
if (!tileset) {
|
|
96
|
-
tileset = new this.props.TilesetClass(this._getTilesetOptions(
|
|
95
|
+
tileset = new this.props.TilesetClass(this._getTilesetOptions());
|
|
97
96
|
this.setState({
|
|
98
97
|
tileset
|
|
99
98
|
});
|
|
100
99
|
} else if (propsChanged) {
|
|
101
|
-
tileset.setOptions(this._getTilesetOptions(
|
|
100
|
+
tileset.setOptions(this._getTilesetOptions());
|
|
102
101
|
|
|
103
102
|
if (dataChanged) {
|
|
104
103
|
tileset.reloadAll();
|
|
@@ -112,7 +111,7 @@ export default class TileLayer extends CompositeLayer {
|
|
|
112
111
|
this._updateTileset();
|
|
113
112
|
}
|
|
114
113
|
|
|
115
|
-
_getTilesetOptions(
|
|
114
|
+
_getTilesetOptions() {
|
|
116
115
|
const {
|
|
117
116
|
tileSize,
|
|
118
117
|
maxCacheSize,
|
|
@@ -123,7 +122,7 @@ export default class TileLayer extends CompositeLayer {
|
|
|
123
122
|
minZoom,
|
|
124
123
|
maxRequests,
|
|
125
124
|
zoomOffset
|
|
126
|
-
} = props;
|
|
125
|
+
} = this.props;
|
|
127
126
|
return {
|
|
128
127
|
maxCacheSize,
|
|
129
128
|
maxCacheByteSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["assert","CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","dataComparator","equals","renderSubLayers","type","value","props","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","context","modelMatrix","frameNumber","update","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","id","_offset","Boolean","clone","Object","keys","some","filterSubLayer","isVisible"],"mappings":"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","sourcesContent":["import {\n assert,\n ChangeFlags,\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from 'modules/core/src/lib/layer-manager';\nimport Tile2DHeader from './tile-2d-header';\n\nimport Tileset2D, {RefinementStrategy, STRATEGY_DEFAULT, Tileset2DProps} from './tileset-2d';\nimport {TileLoadProps, ZRange} from './types';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n TilesetClass: Tileset2D,\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\nexport type TileLayerProps<DataT = any> = CompositeLayerProps<DataT> & {\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers: (\n props: TileLayerProps & {\n id: string;\n data: any;\n _offset: number;\n tile: Tile2DHeader;\n }\n ) => LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData: (props: TileLoadProps) => Promise<any> | any;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: (tiles: Tile2DHeader[]) => void;\n\n /** Called when a tile successfully loads. */\n onTileLoad: (tile: Tile2DHeader) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload: (tile: Tile2DHeader) => void;\n\n /** Called when a tile failed to load. */\n onTileError: (err: any) => void;\n\n /** The bounding box of the layer's data. */\n extent: number[] | undefined | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize: number;\n\n /** The max zoom level of the layer's data. */\n maxZoom: number;\n\n /** The min zoom level of the layer's data. */\n minZoom: number;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize: number | undefined | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize: number | undefined;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset: number;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<\n DataT = any,\n PropsT extends TileLayerProps<DataT> = TileLayerProps<DataT>\n> extends CompositeLayer<PropsT> {\n static defaultProps = defaultProps as any;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({\n props,\n changeFlags\n }: {\n props: TileLayerProps;\n oldProps: TileLayerProps;\n context: any;\n changeFlags: ChangeFlags;\n }) {\n assert(this.state);\n\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions(props));\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions(props));\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(props: TileLayerProps): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset(): void {\n assert(this.state && this.context);\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n assert(this.state);\n\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: TileLayerProps & {\n id: string;\n data: any;\n _offset: number;\n tile: Tile2DHeader;\n }\n ): LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): LayerProps | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers(): Layer[] {\n assert(this.state);\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.id}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = flatten(layers, Boolean).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n"],"file":"tile-layer.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/tile-layer/tile-layer.ts"],"names":["assert","CompositeLayer","_flatten","flatten","GeoJsonLayer","Tileset2D","STRATEGY_DEFAULT","urlType","getURLFromTemplate","defaultProps","TilesetClass","data","dataComparator","equals","renderSubLayers","type","value","props","compare","getTileData","optional","onViewportLoad","onTileLoad","tile","onTileUnload","onTileError","err","console","error","extent","tileSize","maxZoom","minZoom","maxCacheSize","maxCacheByteSize","refinementStrategy","zRange","maxRequests","zoomOffset","TileLayer","initializeState","state","tileset","isLoaded","finalizeState","finalize","selectedTiles","every","layers","layer","shouldUpdateState","changeFlags","somethingChanged","updateState","propsChanged","propsOrDataChanged","updateTriggersChanged","dataChanged","all","_getTilesetOptions","setState","setOptions","reloadAll","tiles","forEach","_updateTileset","bind","_onTileLoad","_onTileError","_onTileUnload","context","modelMatrix","frameNumber","update","viewport","loadingStateChanged","tilesetChanged","_onViewportLoad","setNeedsUpdate","fetch","signal","url","Array","isArray","propName","getSubLayerPropsByTile","getPickingInfo","info","sourceLayer","_updateAutoHighlight","updateAutoHighlight","renderLayers","map","subLayerProps","content","id","_offset","Boolean","clone","Object","keys","some","filterSubLayer","isVisible"],"mappings":"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","sourcesContent":["import {\n assert,\n CompositeLayer,\n CompositeLayerProps,\n Layer,\n LayerProps,\n UpdateParameters,\n _flatten as flatten\n} from '@deck.gl/core';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {LayersList} from 'modules/core/src/lib/layer-manager';\nimport Tile2DHeader from './tile-2d-header';\n\nimport Tileset2D, {RefinementStrategy, STRATEGY_DEFAULT, Tileset2DProps} from './tileset-2d';\nimport {TileLoadProps, ZRange} from './types';\nimport {urlType, getURLFromTemplate} from './utils';\n\nconst defaultProps = {\n TilesetClass: Tileset2D,\n data: [],\n dataComparator: urlType.equals,\n renderSubLayers: {type: 'function', value: props => new GeoJsonLayer(props), compare: false},\n getTileData: {type: 'function', optional: true, value: null, compare: false},\n // TODO - change to onViewportLoad to align with Tile3DLayer\n onViewportLoad: {type: 'function', optional: true, value: null, compare: false},\n onTileLoad: {type: 'function', value: tile => {}, compare: false},\n onTileUnload: {type: 'function', value: tile => {}, compare: false},\n // eslint-disable-next-line\n onTileError: {type: 'function', value: err => console.error(err), compare: false},\n extent: {type: 'array', optional: true, value: null, compare: true},\n tileSize: 512,\n maxZoom: null,\n minZoom: 0,\n maxCacheSize: null,\n maxCacheByteSize: null,\n refinementStrategy: STRATEGY_DEFAULT,\n zRange: null,\n maxRequests: 6,\n zoomOffset: 0\n};\n\n/** All props supported by the TileLayer */\nexport type TileLayerProps<DataT> = _TileLayerProps<DataT> & CompositeLayerProps<DataT>;\n\n/** Props added by the TileLayer */\ntype _TileLayerProps<DataT> = {\n /**\n * Optionally implement a custom indexing scheme.\n */\n TilesetClass: typeof Tileset2D;\n /**\n * Renders one or an array of Layer instances.\n */\n renderSubLayers?: (\n props: TileLayerProps<DataT> & {\n id: string;\n data: any;\n _offset: number;\n tile: Tile2DHeader;\n }\n ) => LayersList;\n /**\n * If supplied, `getTileData` is called to retrieve the data of each tile.\n */\n getTileData?: (props: TileLoadProps) => Promise<DataT> | DataT;\n\n /** Called when all tiles in the current viewport are loaded. */\n onViewportLoad?: (tiles: Tile2DHeader[]) => void;\n\n /** Called when a tile successfully loads. */\n onTileLoad?: (tile: Tile2DHeader) => void;\n\n /** Called when a tile is cleared from cache. */\n onTileUnload?: (tile: Tile2DHeader) => void;\n\n /** Called when a tile failed to load. */\n onTileError?: (err: any) => void;\n\n /** The bounding box of the layer's data. */\n extent?: number[] | null;\n\n /** The pixel dimension of the tiles, usually a power of 2. */\n tileSize?: number;\n\n /** The max zoom level of the layer's data.\n * @default null\n */\n maxZoom?: number | null;\n\n /** The min zoom level of the layer's data.\n * @default 0\n */\n minZoom?: number | null;\n\n /** The maximum number of tiles that can be cached. */\n maxCacheSize?: number | null;\n\n /**\n * The maximum memory used for caching tiles.\n *\n * @default null\n */\n maxCacheByteSize?: number | null;\n\n /**\n * How the tile layer refines the visibility of tiles.\n *\n * @default 'best-available'\n */\n refinementStrategy?: RefinementStrategy;\n\n /** Range of minimum and maximum heights in the tile. */\n zRange?: ZRange | null;\n\n /**\n * The maximum number of concurrent getTileData calls.\n *\n * @default 6\n */\n maxRequests?: number;\n\n /**\n * This offset changes the zoom level at which the tiles are fetched.\n *\n * Needs to be an integer.\n *\n * @default 0\n */\n zoomOffset?: number;\n};\n\n/**\n * The TileLayer is a composite layer that makes it possible to visualize very large datasets.\n *\n * Instead of fetching the entire dataset, it only loads and renders what's visible in the current viewport.\n */\nexport default class TileLayer<DataT = any, ExtraPropsT = {}> extends CompositeLayer<\n ExtraPropsT & Required<_TileLayerProps<DataT>>\n> {\n static defaultProps = defaultProps as any;\n static layerName = 'TileLayer';\n\n initializeState() {\n this.state = {\n tileset: null,\n isLoaded: false\n };\n }\n\n finalizeState() {\n this.state?.tileset?.finalize();\n }\n\n get isLoaded(): boolean {\n return this.state?.tileset?.selectedTiles.every(\n tile => tile.isLoaded && tile.layers && tile.layers.every(layer => layer.isLoaded)\n );\n }\n\n shouldUpdateState({changeFlags}): boolean {\n return changeFlags.somethingChanged;\n }\n\n updateState({changeFlags}: UpdateParameters<TileLayer>) {\n assert(this.state);\n\n let {tileset} = this.state;\n const propsChanged = changeFlags.propsOrDataChanged || changeFlags.updateTriggersChanged;\n const dataChanged =\n changeFlags.dataChanged ||\n (changeFlags.updateTriggersChanged &&\n (changeFlags.updateTriggersChanged.all || changeFlags.updateTriggersChanged.getTileData));\n\n if (!tileset) {\n tileset = new this.props.TilesetClass(this._getTilesetOptions());\n this.setState({tileset});\n } else if (propsChanged) {\n tileset.setOptions(this._getTilesetOptions());\n\n if (dataChanged) {\n // reload all tiles\n // use cached layers until new content is loaded\n tileset.reloadAll();\n } else {\n // some render options changed, regenerate sub layers now\n this.state.tileset.tiles.forEach(tile => {\n tile.layers = null;\n });\n }\n }\n\n this._updateTileset();\n }\n\n _getTilesetOptions(): Tileset2DProps {\n const {\n tileSize,\n maxCacheSize,\n maxCacheByteSize,\n refinementStrategy,\n extent,\n maxZoom,\n minZoom,\n maxRequests,\n zoomOffset\n } = this.props;\n\n return {\n maxCacheSize,\n maxCacheByteSize,\n maxZoom,\n minZoom,\n tileSize,\n refinementStrategy,\n extent,\n maxRequests,\n zoomOffset,\n\n getTileData: this.getTileData.bind(this),\n onTileLoad: this._onTileLoad.bind(this),\n onTileError: this._onTileError.bind(this),\n onTileUnload: this._onTileUnload.bind(this)\n };\n }\n\n _updateTileset(): void {\n assert(this.state && this.context);\n const {tileset} = this.state;\n const {zRange, modelMatrix} = this.props;\n const frameNumber = tileset.update(this.context.viewport, {zRange, modelMatrix});\n const {isLoaded} = tileset;\n\n const loadingStateChanged = this.state.isLoaded !== isLoaded;\n const tilesetChanged = this.state.frameNumber !== frameNumber;\n\n if (isLoaded && (loadingStateChanged || tilesetChanged)) {\n this._onViewportLoad();\n }\n\n if (tilesetChanged) {\n // Save the tileset frame number - trigger a rerender\n this.setState({frameNumber});\n }\n // Save the loaded state - should not trigger a rerender\n this.state.isLoaded = isLoaded;\n }\n\n _onViewportLoad(): void {\n assert(this.state);\n\n const {tileset} = this.state;\n const {onViewportLoad} = this.props;\n\n if (onViewportLoad) {\n onViewportLoad(tileset.selectedTiles);\n }\n }\n\n _onTileLoad(tile: Tile2DHeader): void {\n this.props.onTileLoad(tile);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileError(error: any, tile: Tile2DHeader) {\n this.props.onTileError(error);\n tile.layers = null;\n\n this.setNeedsUpdate();\n }\n\n _onTileUnload(tile: Tile2DHeader) {\n this.props.onTileUnload(tile);\n }\n\n // Methods for subclass to override\n\n getTileData(tile: TileLoadProps) {\n const {data, getTileData, fetch} = this.props;\n const {signal} = tile;\n\n tile.url =\n typeof data === 'string' || Array.isArray(data) ? getURLFromTemplate(data, tile) : null;\n\n if (getTileData) {\n return getTileData(tile);\n }\n if (fetch && tile.url) {\n return fetch(tile.url, {propName: 'data', layer: this, signal});\n }\n return null;\n }\n\n renderSubLayers(\n props: _TileLayerProps<DataT> & {\n id: string;\n data: any;\n _offset: number;\n tile: Tile2DHeader;\n }\n ): LayersList {\n return this.props.renderSubLayers(props);\n }\n\n getSubLayerPropsByTile(tile: Tile2DHeader): LayerProps | null {\n return null;\n }\n\n getPickingInfo({info, sourceLayer}) {\n info.tile = sourceLayer.props.tile;\n return info;\n }\n\n _updateAutoHighlight(info) {\n if (info.sourceLayer) {\n info.sourceLayer.updateAutoHighlight(info);\n }\n }\n\n renderLayers(): Layer[] {\n assert(this.state);\n return this.state.tileset.tiles.map((tile: Tile2DHeader) => {\n const subLayerProps = this.getSubLayerPropsByTile(tile);\n // cache the rendered layer in the tile\n if (!tile.isLoaded && !tile.content) {\n // nothing to show\n } else if (!tile.layers) {\n const layers = this.renderSubLayers({\n ...this.props,\n id: `${this.id}-${tile.id}`,\n data: tile.content,\n _offset: 0,\n tile\n });\n tile.layers = (flatten(layers, Boolean) as Layer[]).map(layer =>\n layer.clone({\n tile,\n ...subLayerProps\n })\n );\n } else if (\n subLayerProps &&\n tile.layers[0] &&\n Object.keys(subLayerProps).some(\n propName => tile.layers![0].props[propName] !== subLayerProps[propName]\n )\n ) {\n tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));\n }\n return tile.layers;\n });\n }\n\n filterSubLayer({layer}) {\n return layer.props.tile.isVisible;\n }\n}\n"],"file":"tile-layer.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tile-layer/utils.ts"],"names":["getOSMTileIndices","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","key","Object","keys","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 Tile2DHeader from './tile-2d-header';\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(template: string | string[], tile: Tile2DHeader): 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":["getOSMTileIndices","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","key","Object","keys","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"}
|