@deck.gl/geo-layers 8.6.0 → 8.6.4
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 +15 -15
- package/dist/es5/great-circle-layer/great-circle-layer.js +1 -26
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +87 -149
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +226 -321
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +9 -9
- package/dist/es5/mesh-layer/mesh-layer.js +125 -151
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +19 -45
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +26 -45
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +282 -374
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +32 -43
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +69 -104
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +28 -27
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +208 -254
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +329 -382
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +119 -183
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +115 -178
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +214 -258
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +290 -435
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +61 -110
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +44 -81
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist.min.js +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/coordinate-transform.js"],"names":["availableTransformations","Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon","
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/coordinate-transform.js"],"names":["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":";;;;;;;AAAA;;AAEA,MAAMA,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,EAAiC,CAACC,EAAD,EAAKC,EAAL,CAAjC,EAA2CC,QAA3C,EAAqD;AACnD,QAAMC,CAAC,GAAG,gBAAKH,EAAE,CAAC,CAAD,CAAP,EAAYC,EAAE,CAAC,CAAD,CAAd,EAAmBH,MAAnB,CAAV;AACA,QAAMM,CAAC,GAAG,gBAAKJ,EAAE,CAAC,CAAD,CAAP,EAAYC,EAAE,CAAC,CAAD,CAAd,EAAmBF,MAAnB,CAAV;AAEA,SAAOG,QAAQ,CAACG,aAAT,CAAuB,CAACF,CAAD,EAAIC,CAAJ,CAAvB,CAAP;AACD;;AAED,SAASE,SAAT,CAAmBC,QAAnB,EAA6BC,IAA7B,EAAmCN,QAAnC,EAA6C;AAC3C,SAAOK,QAAQ,CAACE,GAAT,CAAaC,CAAC,IAAIlB,KAAK,CAACkB,CAAD,EAAIF,IAAJ,EAAUN,QAAV,CAAvB,CAAP;AACD;;AAED,SAAST,UAAT,CAAoBkB,UAApB,EAAgCH,IAAhC,EAAsCN,QAAtC,EAAgD;AAC9C,SAAOI,SAAS,CAACK,UAAD,EAAaH,IAAb,EAAmBN,QAAnB,CAAhB;AACD;;AAED,SAASR,UAAT,CAAoBkB,IAApB,EAA0BJ,IAA1B,EAAgCN,QAAhC,EAA0C;AACxC,SAAOI,SAAS,CAACM,IAAD,EAAOJ,IAAP,EAAaN,QAAb,CAAhB;AACD;;AAED,SAASP,eAAT,CAAyBkB,eAAzB,EAA0CL,IAA1C,EAAgDN,QAAhD,EAA0D;AACxD,SAAOW,eAAe,CAACJ,GAAhB,CAAoBK,UAAU,IAAIpB,UAAU,CAACoB,UAAD,EAAaN,IAAb,EAAmBN,QAAnB,CAA5C,CAAP;AACD;;AAED,SAASN,OAAT,CAAiBmB,OAAjB,EAA0BP,IAA1B,EAAgCN,QAAhC,EAA0C;AACxC,SAAOa,OAAO,CAACN,GAAR,CAAYO,WAAW,IAAIV,SAAS,CAACU,WAAD,EAAcR,IAAd,EAAoBN,QAApB,CAApC,CAAP;AACD;;AAED,SAASL,YAAT,CAAsBoB,YAAtB,EAAoCT,IAApC,EAA0CN,QAA1C,EAAoD;AAClD,SAAOe,YAAY,CAACR,GAAb,CAAiBM,OAAO,IAAInB,OAAO,CAACmB,OAAD,EAAUP,IAAV,EAAgBN,QAAhB,CAAnC,CAAP;AACD;;AAEM,SAASgB,SAAT,CAAmBX,QAAnB,EAA6BC,IAA7B,EAAmCN,QAAnC,EAA6C;AAClD,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 {lerp} from 'math.gl';\n\nconst availableTransformations = {\n Point,\n MultiPoint,\n LineString,\n MultiLineString,\n Polygon,\n MultiPolygon\n};\n\nfunction Point([pointX, pointY], [nw, se], 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, viewport) {\n return geometry.map(g => Point(g, bbox, viewport));\n}\n\nfunction MultiPoint(multiPoint, bbox, viewport) {\n return getPoints(multiPoint, bbox, viewport);\n}\n\nfunction LineString(line, bbox, viewport) {\n return getPoints(line, bbox, viewport);\n}\n\nfunction MultiLineString(multiLineString, bbox, viewport) {\n return multiLineString.map(lineString => LineString(lineString, bbox, viewport));\n}\n\nfunction Polygon(polygon, bbox, viewport) {\n return polygon.map(polygonRing => getPoints(polygonRing, bbox, viewport));\n}\n\nfunction MultiPolygon(multiPolygon, bbox, viewport) {\n return multiPolygon.map(polygon => Polygon(polygon, bbox, viewport));\n}\n\nexport function transform(geometry, bbox, 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"}
|
|
@@ -4,49 +4,32 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = findIndexBinary;
|
|
7
|
-
|
|
8
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { 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 = o[Symbol.iterator](); }, 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; } } }; }
|
|
9
|
-
|
|
10
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
11
|
-
|
|
12
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
13
|
-
|
|
14
|
-
var GEOM_TYPES = ['points', 'lines', 'polygons'];
|
|
7
|
+
const GEOM_TYPES = ['points', 'lines', 'polygons'];
|
|
15
8
|
|
|
16
9
|
function findIndexBinary(data, uniqueIdProperty, featureId, layerName) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
22
|
-
var gt = _step.value;
|
|
23
|
-
var index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);
|
|
10
|
+
for (const gt of GEOM_TYPES) {
|
|
11
|
+
const index = data[gt] && findIndexByType(data[gt], uniqueIdProperty, featureId, layerName);
|
|
24
12
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
13
|
+
if (index >= 0) {
|
|
14
|
+
return index;
|
|
28
15
|
}
|
|
29
|
-
} catch (err) {
|
|
30
|
-
_iterator.e(err);
|
|
31
|
-
} finally {
|
|
32
|
-
_iterator.f();
|
|
33
16
|
}
|
|
34
17
|
|
|
35
18
|
return -1;
|
|
36
19
|
}
|
|
37
20
|
|
|
38
21
|
function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
|
|
39
|
-
|
|
22
|
+
const featureIds = geomData.featureIds.value;
|
|
40
23
|
|
|
41
24
|
if (!featureIds.length) {
|
|
42
25
|
return -1;
|
|
43
26
|
}
|
|
44
27
|
|
|
45
|
-
|
|
46
|
-
|
|
28
|
+
let startFeatureIndex = 0;
|
|
29
|
+
let endFeatureIndex = featureIds[featureIds.length - 1] + 1;
|
|
47
30
|
|
|
48
31
|
if (layerName) {
|
|
49
|
-
|
|
32
|
+
const layerRange = getLayerRange(geomData, layerName);
|
|
50
33
|
|
|
51
34
|
if (layerRange) {
|
|
52
35
|
startFeatureIndex = layerRange[0];
|
|
@@ -56,21 +39,15 @@ function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
|
|
|
56
39
|
}
|
|
57
40
|
}
|
|
58
41
|
|
|
59
|
-
|
|
42
|
+
let featureIndex = -1;
|
|
60
43
|
|
|
61
44
|
if (uniqueIdProperty in geomData.numericProps) {
|
|
62
|
-
|
|
63
|
-
return x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex;
|
|
64
|
-
});
|
|
45
|
+
const vertexIndex = geomData.numericProps[uniqueIdProperty].value.findIndex((x, i) => x === featureId && featureIds[i] >= startFeatureIndex && featureIds[i] < endFeatureIndex);
|
|
65
46
|
return vertexIndex >= 0 ? geomData.globalFeatureIds.value[vertexIndex] : -1;
|
|
66
47
|
} else if (uniqueIdProperty) {
|
|
67
|
-
featureIndex = findIndex(geomData.properties,
|
|
68
|
-
return elem[uniqueIdProperty] === featureId;
|
|
69
|
-
}, startFeatureIndex, endFeatureIndex);
|
|
48
|
+
featureIndex = findIndex(geomData.properties, elem => elem[uniqueIdProperty] === featureId, startFeatureIndex, endFeatureIndex);
|
|
70
49
|
} else {
|
|
71
|
-
featureIndex = findIndex(geomData.fields,
|
|
72
|
-
return elem.id === featureId;
|
|
73
|
-
}, startFeatureIndex, endFeatureIndex);
|
|
50
|
+
featureIndex = findIndex(geomData.fields, elem => elem.id === featureId, startFeatureIndex, endFeatureIndex);
|
|
74
51
|
}
|
|
75
52
|
|
|
76
53
|
return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;
|
|
@@ -78,11 +55,15 @@ function findIndexByType(geomData, uniqueIdProperty, featureId, layerName) {
|
|
|
78
55
|
|
|
79
56
|
function getLayerRange(geomData, layerName) {
|
|
80
57
|
if (!geomData.__layers) {
|
|
81
|
-
|
|
82
|
-
|
|
58
|
+
const layerNames = {};
|
|
59
|
+
const {
|
|
60
|
+
properties
|
|
61
|
+
} = geomData;
|
|
83
62
|
|
|
84
|
-
for (
|
|
85
|
-
|
|
63
|
+
for (let i = 0; i < properties.length; i++) {
|
|
64
|
+
const {
|
|
65
|
+
layerName: key
|
|
66
|
+
} = properties[i];
|
|
86
67
|
|
|
87
68
|
if (!key) {} else if (layerNames[key]) {
|
|
88
69
|
layerNames[key][1] = i;
|
|
@@ -99,11 +80,11 @@ function getLayerRange(geomData, layerName) {
|
|
|
99
80
|
|
|
100
81
|
function getGlobalFeatureId(geomData, featureIndex) {
|
|
101
82
|
if (!geomData.__ids) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
83
|
+
const result = [];
|
|
84
|
+
const featureIds = geomData.featureIds.value;
|
|
85
|
+
const globalFeatureIds = geomData.globalFeatureIds.value;
|
|
105
86
|
|
|
106
|
-
for (
|
|
87
|
+
for (let i = 0; i < featureIds.length; i++) {
|
|
107
88
|
result[featureIds[i]] = globalFeatureIds[i];
|
|
108
89
|
}
|
|
109
90
|
|
|
@@ -114,7 +95,7 @@ function getGlobalFeatureId(geomData, featureIndex) {
|
|
|
114
95
|
}
|
|
115
96
|
|
|
116
97
|
function findIndex(array, predicate, startIndex, endIndex) {
|
|
117
|
-
for (
|
|
98
|
+
for (let i = startIndex; i < endIndex; i++) {
|
|
118
99
|
if (predicate(array[i], i)) {
|
|
119
100
|
return i;
|
|
120
101
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/mvt-layer/find-index-binary.js"],"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":"
|
|
1
|
+
{"version":3,"sources":["../../../src/mvt-layer/find-index-binary.js"],"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":["const 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(data, uniqueIdProperty, featureId, layerName) {\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(geomData, uniqueIdProperty, featureId, layerName) {\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 {\n featureIndex = findIndex(\n geomData.fields,\n elem => elem.id === featureId,\n startFeatureIndex,\n endFeatureIndex\n );\n }\n return featureIndex >= 0 ? getGlobalFeatureId(geomData, featureIndex) : -1;\n}\n\n// Returns [firstFeatureIndex, lastFeatureIndex]\n// MVTLoader parses tiles layer-by-layer, so each layer is a continuous range\nfunction getLayerRange(geomData, layerName) {\n if (!geomData.__layers) {\n // Cache a map from properties.layerName to index ranges\n const layerNames = {};\n const {properties} = geomData;\n for (let i = 0; i < properties.length; i++) {\n const {layerName: key} = properties[i];\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) {\n if (!geomData.__ids) {\n // Cache a map from featureId to globalFeatureId\n const result = [];\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(array, predicate, startIndex, endIndex) {\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"}
|