@deck.gl/geo-layers 8.6.3 → 8.7.0-alpha.10
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 +9747 -6413
- package/dist/es5/great-circle-layer/great-circle-layer.js +26 -1
- package/dist/es5/great-circle-layer/great-circle-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-cluster-layer.js +149 -87
- package/dist/es5/h3-layers/h3-cluster-layer.js.map +1 -1
- package/dist/es5/h3-layers/h3-hexagon-layer.js +326 -230
- package/dist/es5/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/es5/index.js +9 -9
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/es5/mesh-layer/mesh-layer.js +153 -132
- package/dist/es5/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/es5/mvt-layer/coordinate-transform.js +46 -20
- package/dist/es5/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/es5/mvt-layer/find-index-binary.js +45 -26
- package/dist/es5/mvt-layer/find-index-binary.js.map +1 -1
- package/dist/es5/mvt-layer/mvt-layer.js +395 -280
- package/dist/es5/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-geometry.js +43 -32
- package/dist/es5/s2-layer/s2-geometry.js.map +1 -1
- package/dist/es5/s2-layer/s2-layer.js +104 -69
- package/dist/es5/s2-layer/s2-layer.js.map +1 -1
- package/dist/es5/s2-layer/s2-utils.js +27 -28
- package/dist/es5/s2-layer/s2-utils.js.map +1 -1
- package/dist/es5/terrain-layer/terrain-layer.js +250 -208
- package/dist/es5/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/es5/tile-3d-layer/tile-3d-layer.js +384 -329
- package/dist/es5/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-header.js +182 -118
- package/dist/es5/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/es5/tile-layer/tile-2d-traversal.js +176 -113
- package/dist/es5/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/es5/tile-layer/tile-layer.js +254 -213
- package/dist/es5/tile-layer/tile-layer.js.map +1 -1
- package/dist/es5/tile-layer/tileset-2d.js +519 -300
- package/dist/es5/tile-layer/tileset-2d.js.map +1 -1
- package/dist/es5/tile-layer/utils.js +110 -61
- package/dist/es5/tile-layer/utils.js.map +1 -1
- package/dist/es5/trips-layer/trips-layer.js +81 -44
- package/dist/es5/trips-layer/trips-layer.js.map +1 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js +2 -1
- package/dist/esm/h3-layers/h3-hexagon-layer.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js +1 -1
- package/dist/esm/mesh-layer/mesh-layer-vertex.glsl.js.map +1 -1
- package/dist/esm/mesh-layer/mesh-layer.js +2 -8
- package/dist/esm/mesh-layer/mesh-layer.js.map +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js +1 -1
- package/dist/esm/mvt-layer/coordinate-transform.js.map +1 -1
- package/dist/esm/mvt-layer/mvt-layer.js +27 -1
- package/dist/esm/mvt-layer/mvt-layer.js.map +1 -1
- package/dist/esm/s2-layer/s2-utils.js.map +1 -1
- package/dist/esm/terrain-layer/terrain-layer.js +8 -10
- package/dist/esm/terrain-layer/terrain-layer.js.map +1 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js +2 -1
- package/dist/esm/tile-3d-layer/tile-3d-layer.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-header.js.map +1 -1
- package/dist/esm/tile-layer/tile-2d-traversal.js.map +1 -1
- package/dist/esm/tile-layer/tile-layer.js +8 -16
- package/dist/esm/tile-layer/tile-layer.js.map +1 -1
- package/dist/esm/tile-layer/tileset-2d.js +85 -79
- package/dist/esm/tile-layer/tileset-2d.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +12 -12
- package/src/h3-layers/h3-hexagon-layer.js +2 -1
- package/src/{index.js → index.ts} +0 -0
- package/src/mesh-layer/mesh-layer-vertex.glsl.js +24 -23
- package/src/mesh-layer/mesh-layer.js +5 -4
- package/src/mvt-layer/coordinate-transform.js +1 -1
- package/src/mvt-layer/mvt-layer.js +17 -1
- package/src/s2-layer/s2-utils.js +7 -1
- package/src/terrain-layer/terrain-layer.js +10 -9
- package/src/tile-3d-layer/tile-3d-layer.js +12 -9
- package/src/tile-layer/tile-2d-traversal.js +17 -3
- package/src/tile-layer/tile-layer.js +11 -12
- package/src/tile-layer/tileset-2d.js +103 -90
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/geo-layers",
|
|
3
3
|
"description": "deck.gl layers supporting geospatial use cases and GIS formats",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "8.
|
|
5
|
+
"version": "8.7.0-alpha.10",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env.dev"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@loaders.gl/3d-tiles": "^3.
|
|
33
|
-
"@loaders.gl/gis": "^3.
|
|
34
|
-
"@loaders.gl/loader-utils": "^3.
|
|
35
|
-
"@loaders.gl/mvt": "^3.
|
|
36
|
-
"@loaders.gl/terrain": "^3.
|
|
37
|
-
"@loaders.gl/tiles": "^3.
|
|
32
|
+
"@loaders.gl/3d-tiles": "^3.1.3",
|
|
33
|
+
"@loaders.gl/gis": "^3.1.3",
|
|
34
|
+
"@loaders.gl/loader-utils": "^3.1.3",
|
|
35
|
+
"@loaders.gl/mvt": "^3.1.3",
|
|
36
|
+
"@loaders.gl/terrain": "^3.1.3",
|
|
37
|
+
"@loaders.gl/tiles": "^3.1.3",
|
|
38
38
|
"@luma.gl/experimental": "^8.5.10",
|
|
39
|
-
"@math.gl/
|
|
40
|
-
"@math.gl/
|
|
39
|
+
"@math.gl/core": "^3.5.6",
|
|
40
|
+
"@math.gl/culling": "^3.5.6",
|
|
41
|
+
"@math.gl/web-mercator": "^3.5.6",
|
|
41
42
|
"h3-js": "^3.6.0",
|
|
42
|
-
"long": "^3.2.0"
|
|
43
|
-
"math.gl": "^3.5.4"
|
|
43
|
+
"long": "^3.2.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"@deck.gl/core": "^8.0.0",
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"@deck.gl/mesh-layers": "^8.0.0",
|
|
50
50
|
"@loaders.gl/core": "^3.0.0"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "b6c48fb68b66755743c28776a0642b56a2df086a"
|
|
53
53
|
}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
edgeLength,
|
|
9
9
|
UNITS
|
|
10
10
|
} from 'h3-js';
|
|
11
|
-
import {lerp} from 'math.gl';
|
|
11
|
+
import {lerp} from '@math.gl/core';
|
|
12
12
|
import {CompositeLayer, createIterable} from '@deck.gl/core';
|
|
13
13
|
import {ColumnLayer, PolygonLayer} from '@deck.gl/layers';
|
|
14
14
|
|
|
@@ -304,6 +304,7 @@ export default class H3HexagonLayer extends CompositeLayer {
|
|
|
304
304
|
forwardProps,
|
|
305
305
|
this.getSubLayerProps({
|
|
306
306
|
id: 'hexagon-cell',
|
|
307
|
+
flatShading: true,
|
|
307
308
|
updateTriggers: forwardProps.updateTriggers
|
|
308
309
|
}),
|
|
309
310
|
{
|
|
File without changes
|
|
@@ -26,12 +26,18 @@ out vec3 normals_commonspace;
|
|
|
26
26
|
out vec4 position_commonspace;
|
|
27
27
|
out vec4 vColor;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
vec2 applyUVRegion(vec2 uv) {
|
|
30
|
+
#ifdef HAS_UV_REGIONS
|
|
31
|
+
// https://github.com/Esri/i3s-spec/blob/master/docs/1.7/geometryUVRegion.cmn.md
|
|
32
|
+
return fract(uv) * (uvRegions.zw - uvRegions.xy) + uvRegions.xy;
|
|
33
|
+
#else
|
|
34
|
+
return uv;
|
|
35
|
+
#endif
|
|
36
|
+
}
|
|
32
37
|
|
|
38
|
+
void main(void) {
|
|
39
|
+
vec2 uv = applyUVRegion(texCoords);
|
|
33
40
|
geometry.uv = uv;
|
|
34
|
-
geometry.uv = texCoords;
|
|
35
41
|
|
|
36
42
|
if (u_pickFeatureIds) {
|
|
37
43
|
geometry.pickingColor = featureIdsPickingColors;
|
|
@@ -39,26 +45,9 @@ void main(void) {
|
|
|
39
45
|
geometry.pickingColor = instancePickingColors;
|
|
40
46
|
}
|
|
41
47
|
|
|
42
|
-
#ifdef MODULE_PBR
|
|
43
|
-
// set PBR data
|
|
44
|
-
#ifdef HAS_NORMALS
|
|
45
|
-
pbr_vNormal = project_normal(instanceModelMatrix * normals);
|
|
46
|
-
geometry.normal = pbr_vNormal;
|
|
47
|
-
#endif
|
|
48
|
-
|
|
49
|
-
#ifdef HAS_UV
|
|
50
|
-
pbr_vUV = uv;
|
|
51
|
-
#else
|
|
52
|
-
pbr_vUV = vec2(0., 0.);
|
|
53
|
-
#endif
|
|
54
|
-
geometry.uv = pbr_vUV;
|
|
55
|
-
#endif
|
|
56
|
-
|
|
57
48
|
vTexCoord = uv;
|
|
58
49
|
cameraPosition = project_uCameraPosition;
|
|
59
|
-
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
60
50
|
vColor = vec4(colors * instanceColors.rgb, instanceColors.a);
|
|
61
|
-
geometry.normal = normals_commonspace;
|
|
62
51
|
|
|
63
52
|
vec3 pos = (instanceModelMatrix * positions) * sizeScale;
|
|
64
53
|
vec3 projectedPosition = project_position(positions);
|
|
@@ -66,13 +55,25 @@ void main(void) {
|
|
|
66
55
|
gl_Position = project_common_position_to_clipspace(position_commonspace);
|
|
67
56
|
|
|
68
57
|
geometry.position = position_commonspace;
|
|
58
|
+
normals_commonspace = project_normal(instanceModelMatrix * normals);
|
|
59
|
+
geometry.normal = normals_commonspace;
|
|
60
|
+
|
|
61
|
+
DECKGL_FILTER_GL_POSITION(gl_Position, geometry);
|
|
69
62
|
|
|
70
63
|
#ifdef MODULE_PBR
|
|
71
64
|
// set PBR data
|
|
72
65
|
pbr_vPosition = geometry.position.xyz;
|
|
73
|
-
|
|
66
|
+
#ifdef HAS_NORMALS
|
|
67
|
+
pbr_vNormal = geometry.normal;
|
|
68
|
+
#endif
|
|
74
69
|
|
|
75
|
-
|
|
70
|
+
#ifdef HAS_UV
|
|
71
|
+
pbr_vUV = uv;
|
|
72
|
+
#else
|
|
73
|
+
pbr_vUV = vec2(0., 0.);
|
|
74
|
+
#endif
|
|
75
|
+
geometry.uv = pbr_vUV;
|
|
76
|
+
#endif
|
|
76
77
|
|
|
77
78
|
DECKGL_FILTER_COLOR(vColor, geometry);
|
|
78
79
|
}
|
|
@@ -11,9 +11,6 @@ function validateGeometryAttributes(attributes) {
|
|
|
11
11
|
if (!hasColorAttribute) {
|
|
12
12
|
attributes.colors = {constant: true, value: new Float32Array([1, 1, 1])};
|
|
13
13
|
}
|
|
14
|
-
if (!attributes.uvRegions) {
|
|
15
|
-
attributes.uvRegions = {constant: true, value: new Float32Array([0, 0, 1, 1])};
|
|
16
|
-
}
|
|
17
14
|
}
|
|
18
15
|
|
|
19
16
|
const defaultProps = {
|
|
@@ -76,7 +73,11 @@ export default class _MeshLayer extends SimpleMeshLayer {
|
|
|
76
73
|
...this.getShaders(),
|
|
77
74
|
id,
|
|
78
75
|
geometry: mesh,
|
|
79
|
-
defines: {
|
|
76
|
+
defines: {
|
|
77
|
+
...shaders.defines,
|
|
78
|
+
...materialParser?.defines,
|
|
79
|
+
HAS_UV_REGIONS: mesh.attributes.uvRegions
|
|
80
|
+
},
|
|
80
81
|
parameters: materialParser?.parameters,
|
|
81
82
|
isInstanced: true
|
|
82
83
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {log} from '@deck.gl/core';
|
|
2
|
-
import {Matrix4} from 'math.gl';
|
|
2
|
+
import {Matrix4} from '@math.gl/core';
|
|
3
3
|
import {MVTWorkerLoader} from '@loaders.gl/mvt';
|
|
4
4
|
import {binaryToGeojson} from '@loaders.gl/gis';
|
|
5
5
|
import {COORDINATE_SYSTEM} from '@deck.gl/core';
|
|
@@ -43,6 +43,10 @@ export default class MVTLayer extends TileLayer {
|
|
|
43
43
|
super.updateState({props, oldProps, context, changeFlags});
|
|
44
44
|
this._setWGS84PropertyForTiles();
|
|
45
45
|
}
|
|
46
|
+
const {highlightColor} = props;
|
|
47
|
+
if (highlightColor !== oldProps.highlightColor && Array.isArray(highlightColor)) {
|
|
48
|
+
this.setState({highlightColor});
|
|
49
|
+
}
|
|
46
50
|
}
|
|
47
51
|
|
|
48
52
|
/* eslint-disable complexity */
|
|
@@ -167,12 +171,17 @@ export default class MVTLayer extends TileLayer {
|
|
|
167
171
|
newHoveredFeatureId = getFeatureUniqueId(hoveredFeature, uniqueIdProperty);
|
|
168
172
|
newHoveredFeatureLayerName = getFeatureLayerName(hoveredFeature);
|
|
169
173
|
}
|
|
174
|
+
let {highlightColor} = this.props;
|
|
175
|
+
if (typeof highlightColor === 'function') {
|
|
176
|
+
highlightColor = highlightColor(info);
|
|
177
|
+
}
|
|
170
178
|
|
|
171
179
|
if (
|
|
172
180
|
hoveredFeatureId !== newHoveredFeatureId ||
|
|
173
181
|
hoveredFeatureLayerName !== newHoveredFeatureLayerName
|
|
174
182
|
) {
|
|
175
183
|
this.setState({
|
|
184
|
+
highlightColor,
|
|
176
185
|
hoveredFeatureId: newHoveredFeatureId,
|
|
177
186
|
hoveredFeatureLayerName: newHoveredFeatureLayerName
|
|
178
187
|
});
|
|
@@ -195,6 +204,13 @@ export default class MVTLayer extends TileLayer {
|
|
|
195
204
|
return info;
|
|
196
205
|
}
|
|
197
206
|
|
|
207
|
+
getSubLayerPropsByTile(tile) {
|
|
208
|
+
return {
|
|
209
|
+
highlightedObjectIndex: this.getHighlightedObjectIndex(tile),
|
|
210
|
+
highlightColor: this.state.highlightColor
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
|
|
198
214
|
getHighlightedObjectIndex(tile) {
|
|
199
215
|
const {hoveredFeatureId, hoveredFeatureLayerName} = this.state;
|
|
200
216
|
const {uniqueIdProperty, highlightedFeatureId, binary} = this.props;
|
package/src/s2-layer/s2-utils.js
CHANGED
|
@@ -25,7 +25,13 @@ const MAX_RESOLUTION = 100;
|
|
|
25
25
|
/* Adapted from s2-geometry's S2Cell.getCornerLatLngs */
|
|
26
26
|
/* eslint-disable max-statements */
|
|
27
27
|
function getGeoBounds({face, ij, level}) {
|
|
28
|
-
const offsets = [
|
|
28
|
+
const offsets = [
|
|
29
|
+
[0, 0],
|
|
30
|
+
[0, 1],
|
|
31
|
+
[1, 1],
|
|
32
|
+
[1, 0],
|
|
33
|
+
[0, 0]
|
|
34
|
+
];
|
|
29
35
|
|
|
30
36
|
// The S2 cell edge is curved: http://s2geometry.io/
|
|
31
37
|
// This is more prominent at lower levels
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
|
|
21
21
|
import {CompositeLayer, log} from '@deck.gl/core';
|
|
22
22
|
import {SimpleMeshLayer} from '@deck.gl/mesh-layers';
|
|
23
|
-
import {
|
|
23
|
+
import {COORDINATE_SYSTEM} from '@deck.gl/core';
|
|
24
24
|
import {TerrainWorkerLoader} from '@loaders.gl/terrain';
|
|
25
25
|
import TileLayer from '../tile-layer/tile-layer';
|
|
26
26
|
import {urlType, getURLFromTemplate} from '../tile-layer/utils';
|
|
@@ -123,17 +123,17 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
123
123
|
|
|
124
124
|
getTiledTerrainData(tile) {
|
|
125
125
|
const {elevationData, fetch, texture, elevationDecoder, meshMaxError} = this.props;
|
|
126
|
+
const {viewport} = this.context;
|
|
126
127
|
const dataUrl = getURLFromTemplate(elevationData, tile);
|
|
127
128
|
const textureUrl = getURLFromTemplate(texture, tile);
|
|
128
129
|
|
|
129
|
-
const {bbox, signal
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const topRight = viewport.projectFlat([bbox.east, bbox.north]);
|
|
130
|
+
const {bbox, signal} = tile;
|
|
131
|
+
const bottomLeft = viewport.isGeospatial
|
|
132
|
+
? viewport.projectFlat([bbox.west, bbox.south])
|
|
133
|
+
: [bbox.left, bbox.bottom];
|
|
134
|
+
const topRight = viewport.isGeospatial
|
|
135
|
+
? viewport.projectFlat([bbox.east, bbox.north])
|
|
136
|
+
: [bbox.right, bbox.top];
|
|
137
137
|
const bounds = [bottomLeft[0], bottomLeft[1], topRight[0], topRight[1]];
|
|
138
138
|
|
|
139
139
|
const terrain = this.loadTerrain({
|
|
@@ -165,6 +165,7 @@ export default class TerrainLayer extends CompositeLayer {
|
|
|
165
165
|
data: DUMMY_DATA,
|
|
166
166
|
mesh,
|
|
167
167
|
texture,
|
|
168
|
+
_instanced: false,
|
|
168
169
|
coordinateSystem: COORDINATE_SYSTEM.CARTESIAN,
|
|
169
170
|
getPosition: d => [0, 0, 0],
|
|
170
171
|
getColor: color
|
|
@@ -192,13 +192,8 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
192
192
|
}
|
|
193
193
|
|
|
194
194
|
_makePointCloudLayer(tileHeader, oldLayer) {
|
|
195
|
-
const {
|
|
196
|
-
|
|
197
|
-
pointCount,
|
|
198
|
-
constantRGBA,
|
|
199
|
-
cartographicOrigin,
|
|
200
|
-
modelMatrix
|
|
201
|
-
} = tileHeader.content;
|
|
195
|
+
const {attributes, pointCount, constantRGBA, cartographicOrigin, modelMatrix} =
|
|
196
|
+
tileHeader.content;
|
|
202
197
|
const {positions, normals, colors} = attributes;
|
|
203
198
|
|
|
204
199
|
if (!positions) {
|
|
@@ -267,7 +262,15 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
267
262
|
|
|
268
263
|
_makeSimpleMeshLayer(tileHeader, oldLayer) {
|
|
269
264
|
const content = tileHeader.content;
|
|
270
|
-
const {
|
|
265
|
+
const {
|
|
266
|
+
attributes,
|
|
267
|
+
indices,
|
|
268
|
+
modelMatrix,
|
|
269
|
+
cartographicOrigin,
|
|
270
|
+
coordinateSystem = COORDINATE_SYSTEM.METER_OFFSETS,
|
|
271
|
+
material,
|
|
272
|
+
featureIds
|
|
273
|
+
} = content;
|
|
271
274
|
const {_getMeshColor} = this.props;
|
|
272
275
|
|
|
273
276
|
const geometry =
|
|
@@ -293,7 +296,7 @@ export default class Tile3DLayer extends CompositeLayer {
|
|
|
293
296
|
pbrMaterial: material,
|
|
294
297
|
modelMatrix,
|
|
295
298
|
coordinateOrigin: cartographicOrigin,
|
|
296
|
-
coordinateSystem
|
|
299
|
+
coordinateSystem,
|
|
297
300
|
featureIds,
|
|
298
301
|
_offset: 0
|
|
299
302
|
}
|
|
@@ -12,9 +12,23 @@ const TILE_SIZE = 512;
|
|
|
12
12
|
// number of world copies to check
|
|
13
13
|
const MAX_MAPS = 3;
|
|
14
14
|
// for calculating bounding volume of a tile in a non-web-mercator viewport
|
|
15
|
-
const REF_POINTS_5 = [
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
const REF_POINTS_5 = [
|
|
16
|
+
[0.5, 0.5],
|
|
17
|
+
[0, 0],
|
|
18
|
+
[0, 1],
|
|
19
|
+
[1, 0],
|
|
20
|
+
[1, 1]
|
|
21
|
+
]; // 4 corners and center
|
|
22
|
+
const REF_POINTS_9 = REF_POINTS_5.concat([
|
|
23
|
+
[0, 0.5],
|
|
24
|
+
[0.5, 0],
|
|
25
|
+
[1, 0.5],
|
|
26
|
+
[0.5, 1]
|
|
27
|
+
]); // 4 corners, center and 4 mid points
|
|
28
|
+
const REF_POINTS_11 = REF_POINTS_9.concat([
|
|
29
|
+
[0.25, 0.5],
|
|
30
|
+
[0.75, 0.5]
|
|
31
|
+
]); // 2 additional points on equator for top tile
|
|
18
32
|
|
|
19
33
|
class OSMNode {
|
|
20
34
|
constructor(x, y, z) {
|
|
@@ -144,18 +144,14 @@ export default class TileLayer extends CompositeLayer {
|
|
|
144
144
|
this.props.onTileLoad(tile);
|
|
145
145
|
tile.layers = null;
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
this.setNeedsUpdate();
|
|
149
|
-
}
|
|
147
|
+
this.setNeedsUpdate();
|
|
150
148
|
}
|
|
151
149
|
|
|
152
150
|
_onTileError(error, tile) {
|
|
153
151
|
this.props.onTileError(error);
|
|
154
152
|
tile.layers = null;
|
|
155
153
|
|
|
156
|
-
|
|
157
|
-
this.setNeedsUpdate();
|
|
158
|
-
}
|
|
154
|
+
this.setNeedsUpdate();
|
|
159
155
|
}
|
|
160
156
|
|
|
161
157
|
_onTileUnload(tile) {
|
|
@@ -183,8 +179,8 @@ export default class TileLayer extends CompositeLayer {
|
|
|
183
179
|
return this.props.renderSubLayers(props);
|
|
184
180
|
}
|
|
185
181
|
|
|
186
|
-
|
|
187
|
-
return
|
|
182
|
+
getSubLayerPropsByTile(tile) {
|
|
183
|
+
return null;
|
|
188
184
|
}
|
|
189
185
|
|
|
190
186
|
getPickingInfo({info, sourceLayer}) {
|
|
@@ -200,7 +196,7 @@ export default class TileLayer extends CompositeLayer {
|
|
|
200
196
|
|
|
201
197
|
renderLayers() {
|
|
202
198
|
return this.state.tileset.tiles.map(tile => {
|
|
203
|
-
const
|
|
199
|
+
const subLayerProps = this.getSubLayerPropsByTile(tile);
|
|
204
200
|
// cache the rendered layer in the tile
|
|
205
201
|
if (!tile.isLoaded && !tile.content) {
|
|
206
202
|
// nothing to show
|
|
@@ -215,14 +211,17 @@ export default class TileLayer extends CompositeLayer {
|
|
|
215
211
|
tile.layers = flatten(layers, Boolean).map(layer =>
|
|
216
212
|
layer.clone({
|
|
217
213
|
tile,
|
|
218
|
-
|
|
214
|
+
...subLayerProps
|
|
219
215
|
})
|
|
220
216
|
);
|
|
221
217
|
} else if (
|
|
218
|
+
subLayerProps &&
|
|
222
219
|
tile.layers[0] &&
|
|
223
|
-
|
|
220
|
+
Object.keys(subLayerProps).some(
|
|
221
|
+
propName => tile.layers[0].props[propName] !== subLayerProps[propName]
|
|
222
|
+
)
|
|
224
223
|
) {
|
|
225
|
-
tile.layers = tile.layers.map(layer => layer.clone(
|
|
224
|
+
tile.layers = tile.layers.map(layer => layer.clone(subLayerProps));
|
|
226
225
|
}
|
|
227
226
|
return tile.layers;
|
|
228
227
|
});
|