@deck.gl/mapbox 9.0.0-beta.1 → 9.0.0-beta.11
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/{typed → dist}/deck-utils.d.ts +2 -2
- package/dist/deck-utils.d.ts.map +1 -0
- package/dist/deck-utils.js +267 -0
- package/dist/dist.dev.js +777 -151
- package/dist/index.cjs +549 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/{typed → dist}/mapbox-layer.d.ts +1 -1
- package/{typed → dist}/mapbox-layer.d.ts.map +1 -1
- package/dist/mapbox-layer.js +37 -0
- package/{typed → dist}/mapbox-overlay.d.ts.map +1 -1
- package/dist/mapbox-overlay.js +227 -0
- package/dist/resolve-layers.js +74 -0
- package/dist.min.js +1 -2
- package/package.json +16 -8
- package/src/deck-utils.ts +4 -3
- package/src/index.ts +0 -1
- package/src/mapbox-layer.ts +1 -1
- package/src/mapbox-overlay.ts +12 -5
- package/dist/es5/deck-utils.js +0 -300
- package/dist/es5/deck-utils.js.map +0 -1
- package/dist/es5/index.js +0 -24
- package/dist/es5/index.js.map +0 -1
- package/dist/es5/mapbox-layer.js +0 -72
- package/dist/es5/mapbox-layer.js.map +0 -1
- package/dist/es5/mapbox-overlay.js +0 -302
- package/dist/es5/mapbox-overlay.js.map +0 -1
- package/dist/es5/resolve-layers.js +0 -137
- package/dist/es5/resolve-layers.js.map +0 -1
- package/dist/esm/deck-utils.js +0 -263
- package/dist/esm/deck-utils.js.map +0 -1
- package/dist/esm/index.js +0 -3
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/mapbox-layer.js +0 -54
- package/dist/esm/mapbox-layer.js.map +0 -1
- package/dist/esm/mapbox-overlay.js +0 -272
- package/dist/esm/mapbox-overlay.js.map +0 -1
- package/dist/esm/resolve-layers.js +0 -77
- package/dist/esm/resolve-layers.js.map +0 -1
- package/typed/deck-utils.d.ts.map +0 -1
- package/typed/index.d.ts +0 -4
- package/typed/index.d.ts.map +0 -1
- /package/{typed → dist}/mapbox-overlay.d.ts +0 -0
- /package/{typed → dist}/resolve-layers.d.ts +0 -0
- /package/{typed → dist}/resolve-layers.d.ts.map +0 -0
package/dist/es5/deck-utils.js
DELETED
|
@@ -1,300 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.getDeckInstance = getDeckInstance;
|
|
9
|
-
exports.removeDeckInstance = removeDeckInstance;
|
|
10
|
-
exports.getInterleavedProps = getInterleavedProps;
|
|
11
|
-
exports.addLayer = addLayer;
|
|
12
|
-
exports.removeLayer = removeLayer;
|
|
13
|
-
exports.updateLayer = updateLayer;
|
|
14
|
-
exports.drawLayer = drawLayer;
|
|
15
|
-
exports.getViewState = getViewState;
|
|
16
|
-
|
|
17
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
18
|
-
|
|
19
|
-
var _core = require("@deck.gl/core");
|
|
20
|
-
|
|
21
|
-
var _webMercator = require("@math.gl/web-mercator");
|
|
22
|
-
|
|
23
|
-
var _constants = require("@luma.gl/constants");
|
|
24
|
-
|
|
25
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
26
|
-
|
|
27
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
28
|
-
|
|
29
|
-
var TILE_SIZE = 512;
|
|
30
|
-
var DEGREES_TO_RADIANS = Math.PI / 180;
|
|
31
|
-
|
|
32
|
-
function getDeckInstance(_ref) {
|
|
33
|
-
var map = _ref.map,
|
|
34
|
-
gl = _ref.gl,
|
|
35
|
-
deck = _ref.deck;
|
|
36
|
-
|
|
37
|
-
if (map.__deck) {
|
|
38
|
-
return map.__deck;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
var customRender = deck === null || deck === void 0 ? void 0 : deck.props._customRender;
|
|
42
|
-
var onLoad = deck === null || deck === void 0 ? void 0 : deck.props.onLoad;
|
|
43
|
-
var deckProps = getInterleavedProps(_objectSpread(_objectSpread({}, deck === null || deck === void 0 ? void 0 : deck.props), {}, {
|
|
44
|
-
_customRender: function _customRender() {
|
|
45
|
-
map.triggerRepaint();
|
|
46
|
-
customRender === null || customRender === void 0 ? void 0 : customRender('');
|
|
47
|
-
}
|
|
48
|
-
}));
|
|
49
|
-
var deckInstance;
|
|
50
|
-
|
|
51
|
-
if (!deck || deck.props.gl === gl) {
|
|
52
|
-
Object.assign(deckProps, {
|
|
53
|
-
gl: gl,
|
|
54
|
-
width: null,
|
|
55
|
-
height: null,
|
|
56
|
-
touchAction: 'unset',
|
|
57
|
-
viewState: getViewState(map)
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
if (deck !== null && deck !== void 0 && deck.isInitialized) {
|
|
61
|
-
watchMapMove(deck, map);
|
|
62
|
-
} else {
|
|
63
|
-
deckProps.onLoad = function () {
|
|
64
|
-
onLoad === null || onLoad === void 0 ? void 0 : onLoad();
|
|
65
|
-
watchMapMove(deckInstance, map);
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
if (deck) {
|
|
71
|
-
deckInstance = deck;
|
|
72
|
-
deck.setProps(deckProps);
|
|
73
|
-
deck.userData.isExternal = true;
|
|
74
|
-
} else {
|
|
75
|
-
deckInstance = new _core.Deck(deckProps);
|
|
76
|
-
map.on('remove', function () {
|
|
77
|
-
removeDeckInstance(map);
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
deckInstance.userData.mapboxLayers = new Set();
|
|
82
|
-
map.__deck = deckInstance;
|
|
83
|
-
map.on('render', function () {
|
|
84
|
-
if (deckInstance.isInitialized) afterRender(deckInstance, map);
|
|
85
|
-
});
|
|
86
|
-
return deckInstance;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function watchMapMove(deck, map) {
|
|
90
|
-
var _handleMapMove = function _handleMapMove() {
|
|
91
|
-
if (deck.isInitialized) {
|
|
92
|
-
onMapMove(deck, map);
|
|
93
|
-
} else {
|
|
94
|
-
map.off('move', _handleMapMove);
|
|
95
|
-
}
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
map.on('move', _handleMapMove);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function removeDeckInstance(map) {
|
|
102
|
-
var _map$__deck;
|
|
103
|
-
|
|
104
|
-
(_map$__deck = map.__deck) === null || _map$__deck === void 0 ? void 0 : _map$__deck.finalize();
|
|
105
|
-
map.__deck = null;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
function getInterleavedProps(currProps) {
|
|
109
|
-
var nextProps = _objectSpread(_objectSpread({}, currProps), {}, {
|
|
110
|
-
parameters: _objectSpread({
|
|
111
|
-
depthMask: true,
|
|
112
|
-
depthTest: true,
|
|
113
|
-
blend: true,
|
|
114
|
-
blendFunc: [770, 771, 1, 771],
|
|
115
|
-
polygonOffsetFill: true,
|
|
116
|
-
depthFunc: 515,
|
|
117
|
-
blendEquation: 32774
|
|
118
|
-
}, currProps.parameters),
|
|
119
|
-
views: currProps.views || [new _core.MapView({
|
|
120
|
-
id: 'mapbox'
|
|
121
|
-
})]
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
return nextProps;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
function addLayer(deck, layer) {
|
|
128
|
-
deck.userData.mapboxLayers.add(layer);
|
|
129
|
-
updateLayers(deck);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
function removeLayer(deck, layer) {
|
|
133
|
-
deck.userData.mapboxLayers.delete(layer);
|
|
134
|
-
updateLayers(deck);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function updateLayer(deck, layer) {
|
|
138
|
-
updateLayers(deck);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
function drawLayer(deck, map, layer) {
|
|
142
|
-
var _ref2 = deck.userData,
|
|
143
|
-
currentViewport = _ref2.currentViewport;
|
|
144
|
-
var clearStack = false;
|
|
145
|
-
|
|
146
|
-
if (!currentViewport) {
|
|
147
|
-
currentViewport = getViewport(deck, map, true);
|
|
148
|
-
deck.userData.currentViewport = currentViewport;
|
|
149
|
-
clearStack = true;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
if (!deck.isInitialized) {
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
deck._drawLayers('mapbox-repaint', {
|
|
157
|
-
viewports: [currentViewport],
|
|
158
|
-
layerFilter: function layerFilter(_ref3) {
|
|
159
|
-
var deckLayer = _ref3.layer;
|
|
160
|
-
return layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain');
|
|
161
|
-
},
|
|
162
|
-
clearStack: clearStack,
|
|
163
|
-
clearCanvas: false
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
function getViewState(map) {
|
|
168
|
-
var _map$getTerrain;
|
|
169
|
-
|
|
170
|
-
var _map$getCenter = map.getCenter(),
|
|
171
|
-
lng = _map$getCenter.lng,
|
|
172
|
-
lat = _map$getCenter.lat;
|
|
173
|
-
|
|
174
|
-
var viewState = {
|
|
175
|
-
longitude: (lng + 540) % 360 - 180,
|
|
176
|
-
latitude: lat,
|
|
177
|
-
zoom: map.getZoom(),
|
|
178
|
-
bearing: map.getBearing(),
|
|
179
|
-
pitch: map.getPitch(),
|
|
180
|
-
padding: map.getPadding(),
|
|
181
|
-
repeat: map.getRenderWorldCopies()
|
|
182
|
-
};
|
|
183
|
-
|
|
184
|
-
if ((_map$getTerrain = map.getTerrain) !== null && _map$getTerrain !== void 0 && _map$getTerrain.call(map)) {
|
|
185
|
-
centerCameraOnTerrain(map, viewState);
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
return viewState;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
function centerCameraOnTerrain(map, viewState) {
|
|
192
|
-
if (map.getFreeCameraOptions) {
|
|
193
|
-
var _map$getFreeCameraOpt = map.getFreeCameraOptions(),
|
|
194
|
-
position = _map$getFreeCameraOpt.position;
|
|
195
|
-
|
|
196
|
-
if (!position || position.z === undefined) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
var height = map.transform.height;
|
|
201
|
-
var longitude = viewState.longitude,
|
|
202
|
-
latitude = viewState.latitude,
|
|
203
|
-
pitch = viewState.pitch;
|
|
204
|
-
var cameraX = position.x * TILE_SIZE;
|
|
205
|
-
var cameraY = (1 - position.y) * TILE_SIZE;
|
|
206
|
-
var cameraZ = position.z * TILE_SIZE;
|
|
207
|
-
var center = (0, _webMercator.lngLatToWorld)([longitude, latitude]);
|
|
208
|
-
var dx = cameraX - center[0];
|
|
209
|
-
var dy = cameraY - center[1];
|
|
210
|
-
var cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);
|
|
211
|
-
var pitchRadians = pitch * DEGREES_TO_RADIANS;
|
|
212
|
-
var altitudePixels = 1.5 * height;
|
|
213
|
-
var scale = pitchRadians < 0.001 ? altitudePixels * Math.cos(pitchRadians) / cameraZ : altitudePixels * Math.sin(pitchRadians) / cameraToCenterDistanceGround;
|
|
214
|
-
viewState.zoom = Math.log2(scale);
|
|
215
|
-
var cameraZFromSurface = altitudePixels * Math.cos(pitchRadians) / scale;
|
|
216
|
-
var surfaceElevation = cameraZ - cameraZFromSurface;
|
|
217
|
-
viewState.position = [0, 0, surfaceElevation / (0, _webMercator.unitsPerMeter)(latitude)];
|
|
218
|
-
} else if (typeof map.transform.elevation === 'number') {
|
|
219
|
-
viewState.position = [0, 0, map.transform.elevation];
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
function getViewport(deck, map) {
|
|
224
|
-
var useMapboxProjection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
225
|
-
return new _core.WebMercatorViewport(_objectSpread(_objectSpread({
|
|
226
|
-
id: 'mapbox',
|
|
227
|
-
x: 0,
|
|
228
|
-
y: 0,
|
|
229
|
-
width: deck.width,
|
|
230
|
-
height: deck.height
|
|
231
|
-
}, getViewState(map)), {}, {
|
|
232
|
-
nearZMultiplier: useMapboxProjection ? 0.02 : 0.1,
|
|
233
|
-
nearZ: map.transform._nearZ / map.transform.height,
|
|
234
|
-
farZ: map.transform._farZ / map.transform.height
|
|
235
|
-
}));
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
function afterRender(deck, map) {
|
|
239
|
-
var _ref4 = deck.userData,
|
|
240
|
-
mapboxLayers = _ref4.mapboxLayers,
|
|
241
|
-
isExternal = _ref4.isExternal;
|
|
242
|
-
|
|
243
|
-
if (isExternal) {
|
|
244
|
-
var mapboxLayerIds = Array.from(mapboxLayers, function (layer) {
|
|
245
|
-
return layer.id;
|
|
246
|
-
});
|
|
247
|
-
var deckLayers = (0, _core._flatten)(deck.props.layers, Boolean);
|
|
248
|
-
var hasNonMapboxLayers = deckLayers.some(function (layer) {
|
|
249
|
-
return layer && !mapboxLayerIds.includes(layer.id);
|
|
250
|
-
});
|
|
251
|
-
var viewports = deck.getViewports();
|
|
252
|
-
var mapboxViewportIdx = viewports.findIndex(function (vp) {
|
|
253
|
-
return vp.id === 'mapbox';
|
|
254
|
-
});
|
|
255
|
-
var hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;
|
|
256
|
-
|
|
257
|
-
if (hasNonMapboxLayers || hasNonMapboxViews) {
|
|
258
|
-
if (mapboxViewportIdx >= 0) {
|
|
259
|
-
viewports = viewports.slice();
|
|
260
|
-
viewports[mapboxViewportIdx] = getViewport(deck, map, false);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
deck._drawLayers('mapbox-repaint', {
|
|
264
|
-
viewports: viewports,
|
|
265
|
-
layerFilter: function layerFilter(params) {
|
|
266
|
-
return (!deck.props.layerFilter || deck.props.layerFilter(params)) && (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id));
|
|
267
|
-
},
|
|
268
|
-
clearCanvas: false
|
|
269
|
-
});
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
deck.userData.currentViewport = null;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
function onMapMove(deck, map) {
|
|
277
|
-
deck.setProps({
|
|
278
|
-
viewState: getViewState(map)
|
|
279
|
-
});
|
|
280
|
-
deck.needsRedraw({
|
|
281
|
-
clearRedrawFlags: true
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
function updateLayers(deck) {
|
|
286
|
-
if (deck.userData.isExternal) {
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
var layers = [];
|
|
291
|
-
deck.userData.mapboxLayers.forEach(function (deckLayer) {
|
|
292
|
-
var LayerType = deckLayer.props.type;
|
|
293
|
-
var layer = new LayerType(deckLayer.props);
|
|
294
|
-
layers.push(layer);
|
|
295
|
-
});
|
|
296
|
-
deck.setProps({
|
|
297
|
-
layers: layers
|
|
298
|
-
});
|
|
299
|
-
}
|
|
300
|
-
//# sourceMappingURL=deck-utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["TILE_SIZE","DEGREES_TO_RADIANS","Math","PI","getDeckInstance","map","gl","deck","__deck","customRender","props","_customRender","onLoad","deckProps","getInterleavedProps","triggerRepaint","deckInstance","Object","assign","width","height","touchAction","viewState","getViewState","isInitialized","watchMapMove","setProps","userData","isExternal","Deck","on","removeDeckInstance","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","finalize","currProps","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","MapView","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","operation","includes","clearCanvas","getCenter","lng","lat","longitude","latitude","zoom","getZoom","bearing","getBearing","pitch","getPitch","padding","getPadding","repeat","getRenderWorldCopies","getTerrain","centerCameraOnTerrain","getFreeCameraOptions","position","z","undefined","transform","cameraX","x","cameraY","y","cameraZ","center","dx","dy","cameraToCenterDistanceGround","sqrt","pitchRadians","altitudePixels","scale","cos","sin","log2","cameraZFromSurface","surfaceElevation","elevation","useMapboxProjection","WebMercatorViewport","nearZMultiplier","nearZ","_nearZ","farZ","_farZ","mapboxLayerIds","Array","from","deckLayers","layers","Boolean","hasNonMapboxLayers","some","getViewports","mapboxViewportIdx","findIndex","vp","hasNonMapboxViews","length","slice","params","viewport","needsRedraw","clearRedrawFlags","forEach","LayerType","type","push"],"mappings":"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","sourcesContent":["import {Deck, WebMercatorViewport, MapView, _flatten as flatten} from '@deck.gl/core';\nimport type {DeckProps, MapViewState, Layer} from '@deck.gl/core';\nimport type MapboxLayer from './mapbox-layer';\nimport type {Map} from 'mapbox-gl';\n\nimport {lngLatToWorld, unitsPerMeter} from '@math.gl/web-mercator';\nimport {GL} from '@luma.gl/constants';\n\ntype UserData = {\n isExternal: boolean;\n currentViewport?: WebMercatorViewport | null;\n mapboxLayers: Set<MapboxLayer<any>>;\n // mapboxVersion: {minor: number; major: number};\n};\n\n// Mercator constants\nconst TILE_SIZE = 512;\nconst DEGREES_TO_RADIANS = Math.PI / 180;\n\n// Create an interleaved deck instance.\nexport function getDeckInstance({\n map,\n gl,\n deck\n}: {\n map: Map & {__deck?: Deck | null};\n gl: WebGLRenderingContext;\n deck?: Deck;\n}): Deck {\n // Only create one deck instance per context\n if (map.__deck) {\n return map.__deck;\n }\n\n // Only initialize certain props once per context\n const customRender = deck?.props._customRender;\n const onLoad = deck?.props.onLoad;\n\n const deckProps = getInterleavedProps({\n ...deck?.props,\n _customRender: () => {\n map.triggerRepaint();\n // customRender may be subscribed by DeckGL React component to update child props\n // make sure it is still called\n // Hack - do not pass a redraw reason here to prevent the React component from clearing the context\n // Rerender will be triggered by MapboxLayer's render()\n customRender?.('');\n }\n });\n\n let deckInstance: Deck;\n\n if (!deck || deck.props.gl === gl) {\n // If deck isn't defined (Internal MapboxLayer use case),\n // or if deck is defined and is using the WebGLContext created by mapbox (MapboxOverlay and External MapboxLayer use case),\n // block deck from setting the canvas size, and use the map's viewState to drive deck.\n // Otherwise, we use deck's viewState to drive the map.\n Object.assign(deckProps, {\n gl,\n width: null,\n height: null,\n touchAction: 'unset',\n viewState: getViewState(map)\n });\n if (deck?.isInitialized) {\n watchMapMove(deck, map);\n } else {\n deckProps.onLoad = () => {\n onLoad?.();\n watchMapMove(deckInstance, map);\n };\n }\n }\n\n if (deck) {\n deckInstance = deck;\n deck.setProps(deckProps);\n (deck.userData as UserData).isExternal = true;\n } else {\n deckInstance = new Deck(deckProps);\n map.on('remove', () => {\n removeDeckInstance(map);\n });\n }\n\n (deckInstance.userData as UserData).mapboxLayers = new Set();\n // (deckInstance.userData as UserData).mapboxVersion = getMapboxVersion(map);\n map.__deck = deckInstance;\n map.on('render', () => {\n if (deckInstance.isInitialized) afterRender(deckInstance, map);\n });\n\n return deckInstance;\n}\n\nfunction watchMapMove(deck: Deck, map: Map & {__deck?: Deck | null}) {\n const _handleMapMove = () => {\n if (deck.isInitialized) {\n // call view state methods\n onMapMove(deck, map);\n } else {\n // deregister itself when deck is finalized\n map.off('move', _handleMapMove);\n }\n };\n map.on('move', _handleMapMove);\n}\n\nexport function removeDeckInstance(map: Map & {__deck?: Deck | null}) {\n map.__deck?.finalize();\n map.__deck = null;\n}\n\nexport function getInterleavedProps(currProps: DeckProps) {\n const nextProps: DeckProps = {\n ...currProps,\n // TODO: import these defaults from a single source of truth\n parameters: {\n depthMask: true,\n depthTest: true,\n blend: true,\n blendFunc: [GL.SRC_ALPHA, GL.ONE_MINUS_SRC_ALPHA, GL.ONE, GL.ONE_MINUS_SRC_ALPHA],\n polygonOffsetFill: true,\n depthFunc: GL.LEQUAL,\n blendEquation: GL.FUNC_ADD,\n ...currProps.parameters\n },\n views: currProps.views || [new MapView({id: 'mapbox'})]\n };\n\n return nextProps;\n}\n\nexport function addLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.add(layer);\n updateLayers(deck);\n}\n\nexport function removeLayer(deck: Deck, layer: MapboxLayer<any>): void {\n (deck.userData as UserData).mapboxLayers.delete(layer);\n updateLayers(deck);\n}\n\nexport function updateLayer(deck: Deck, layer: MapboxLayer<any>): void {\n updateLayers(deck);\n}\n\nexport function drawLayer(deck: Deck, map: Map, layer: MapboxLayer<any>): void {\n let {currentViewport} = deck.userData as UserData;\n let clearStack: boolean = false;\n if (!currentViewport) {\n // This is the first layer drawn in this render cycle.\n // Generate viewport from the current map state.\n currentViewport = getViewport(deck, map, true);\n (deck.userData as UserData).currentViewport = currentViewport;\n clearStack = true;\n }\n\n if (!deck.isInitialized) {\n return;\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports: [currentViewport],\n layerFilter: ({layer: deckLayer}) =>\n layer.id === deckLayer.id || deckLayer.props.operation.includes('terrain'),\n clearStack,\n clearCanvas: false\n });\n}\n\nexport function getViewState(map: Map): MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n} {\n const {lng, lat} = map.getCenter();\n\n const viewState: MapViewState & {\n repeat: boolean;\n padding: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n } = {\n // Longitude returned by getCenter can be outside of [-180, 180] when zooming near the anti meridian\n // https://github.com/visgl/deck.gl/issues/6894\n longitude: ((lng + 540) % 360) - 180,\n latitude: lat,\n zoom: map.getZoom(),\n bearing: map.getBearing(),\n pitch: map.getPitch(),\n padding: map.getPadding(),\n repeat: map.getRenderWorldCopies()\n };\n\n if (map.getTerrain?.()) {\n // When the base map has terrain, we need to target the camera at the terrain surface\n centerCameraOnTerrain(map, viewState);\n }\n\n return viewState;\n}\n\nfunction centerCameraOnTerrain(map: Map, viewState: MapViewState) {\n if (map.getFreeCameraOptions) {\n // mapbox-gl v2\n const {position} = map.getFreeCameraOptions();\n if (!position || position.z === undefined) {\n return;\n }\n\n // @ts-ignore transform is not typed\n const height = map.transform.height;\n const {longitude, latitude, pitch} = viewState;\n\n // Convert mapbox mercator coordinate to deck common space\n const cameraX = position.x * TILE_SIZE;\n const cameraY = (1 - position.y) * TILE_SIZE;\n const cameraZ = position.z * TILE_SIZE;\n\n // Mapbox manipulates zoom in terrain mode, see discussion here: https://github.com/mapbox/mapbox-gl-js/issues/12040\n const center = lngLatToWorld([longitude, latitude]);\n const dx = cameraX - center[0];\n const dy = cameraY - center[1];\n const cameraToCenterDistanceGround = Math.sqrt(dx * dx + dy * dy);\n\n const pitchRadians = pitch! * DEGREES_TO_RADIANS;\n const altitudePixels = 1.5 * height;\n const scale =\n pitchRadians < 0.001\n ? // Pitch angle too small to deduce the look at point, assume elevation is 0\n (altitudePixels * Math.cos(pitchRadians)) / cameraZ\n : (altitudePixels * Math.sin(pitchRadians)) / cameraToCenterDistanceGround;\n viewState.zoom = Math.log2(scale);\n\n const cameraZFromSurface = (altitudePixels * Math.cos(pitchRadians)) / scale;\n const surfaceElevation = cameraZ - cameraZFromSurface;\n viewState.position = [0, 0, surfaceElevation / unitsPerMeter(latitude)];\n }\n // @ts-ignore transform is not typed\n else if (typeof map.transform.elevation === 'number') {\n // maplibre-gl\n // @ts-ignore transform is not typed\n viewState.position = [0, 0, map.transform.elevation];\n }\n}\n\n// function getMapboxVersion(map: Map): {minor: number; major: number} {\n// // parse mapbox version string\n// let major = 0;\n// let minor = 0;\n// // @ts-ignore (2339) undefined property\n// const version: string = map.version;\n// if (version) {\n// [major, minor] = version.split('.').slice(0, 2).map(Number);\n// }\n// return {major, minor};\n// }\n\nfunction getViewport(deck: Deck, map: Map, useMapboxProjection = true): WebMercatorViewport {\n return new WebMercatorViewport({\n id: 'mapbox',\n x: 0,\n y: 0,\n width: deck.width,\n height: deck.height,\n ...getViewState(map),\n nearZMultiplier: useMapboxProjection\n ? // match mapbox-gl@>=1.3.0's projection matrix\n 0.02\n : // use deck.gl's own default\n 0.1,\n nearZ: map.transform._nearZ / map.transform.height,\n farZ: map.transform._farZ / map.transform.height\n });\n}\n\nfunction afterRender(deck: Deck, map: Map): void {\n const {mapboxLayers, isExternal} = deck.userData as UserData;\n\n if (isExternal) {\n // Draw non-Mapbox layers\n const mapboxLayerIds = Array.from(mapboxLayers, layer => layer.id);\n const deckLayers = flatten(deck.props.layers, Boolean) as Layer[];\n const hasNonMapboxLayers = deckLayers.some(\n layer => layer && !mapboxLayerIds.includes(layer.id)\n );\n let viewports = deck.getViewports();\n const mapboxViewportIdx = viewports.findIndex(vp => vp.id === 'mapbox');\n const hasNonMapboxViews = viewports.length > 1 || mapboxViewportIdx < 0;\n\n if (hasNonMapboxLayers || hasNonMapboxViews) {\n if (mapboxViewportIdx >= 0) {\n viewports = viewports.slice();\n viewports[mapboxViewportIdx] = getViewport(deck, map, false);\n }\n\n deck._drawLayers('mapbox-repaint', {\n viewports,\n layerFilter: params =>\n (!deck.props.layerFilter || deck.props.layerFilter(params)) &&\n (params.viewport.id !== 'mapbox' || !mapboxLayerIds.includes(params.layer.id)),\n clearCanvas: false\n });\n }\n }\n\n // End of render cycle, clear generated viewport\n (deck.userData as UserData).currentViewport = null;\n}\n\nfunction onMapMove(deck: Deck, map: Map): void {\n deck.setProps({\n viewState: getViewState(map)\n });\n // Camera changed, will trigger a map repaint right after this\n // Clear any change flag triggered by setting viewState so that deck does not request\n // a second repaint\n deck.needsRedraw({clearRedrawFlags: true});\n}\n\nfunction updateLayers(deck: Deck): void {\n if ((deck.userData as UserData).isExternal) {\n return;\n }\n\n const layers: Layer[] = [];\n (deck.userData as UserData).mapboxLayers.forEach(deckLayer => {\n const LayerType = deckLayer.props.type;\n const layer = new LayerType(deckLayer.props);\n layers.push(layer);\n });\n deck.setProps({layers});\n}\n"],"file":"deck-utils.js"}
|
package/dist/es5/index.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
Object.defineProperty(exports, "MapboxLayer", {
|
|
9
|
-
enumerable: true,
|
|
10
|
-
get: function get() {
|
|
11
|
-
return _mapboxLayer.default;
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
Object.defineProperty(exports, "MapboxOverlay", {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: function get() {
|
|
17
|
-
return _mapboxOverlay.default;
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
var _mapboxLayer = _interopRequireDefault(require("./mapbox-layer"));
|
|
22
|
-
|
|
23
|
-
var _mapboxOverlay = _interopRequireDefault(require("./mapbox-overlay"));
|
|
24
|
-
//# sourceMappingURL=index.js.map
|
package/dist/es5/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export {default as MapboxLayer} from './mapbox-layer';\nexport {default as MapboxOverlay} from './mapbox-overlay';\n\nexport type {MapboxOverlayProps} from './mapbox-overlay';\n"],"file":"index.js"}
|
package/dist/es5/mapbox-layer.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "__esModule", {
|
|
6
|
-
value: true
|
|
7
|
-
});
|
|
8
|
-
exports.default = void 0;
|
|
9
|
-
|
|
10
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
|
-
var _deckUtils = require("./deck-utils");
|
|
13
|
-
|
|
14
|
-
var MapboxLayer = function () {
|
|
15
|
-
function MapboxLayer(props) {
|
|
16
|
-
(0, _classCallCheck2.default)(this, MapboxLayer);
|
|
17
|
-
this.id = void 0;
|
|
18
|
-
this.type = void 0;
|
|
19
|
-
this.renderingMode = void 0;
|
|
20
|
-
this.map = void 0;
|
|
21
|
-
this.deck = void 0;
|
|
22
|
-
this.props = void 0;
|
|
23
|
-
|
|
24
|
-
if (!props.id) {
|
|
25
|
-
throw new Error('Layer must have an unique id');
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
this.id = props.id;
|
|
29
|
-
this.type = 'custom';
|
|
30
|
-
this.renderingMode = props.renderingMode || '3d';
|
|
31
|
-
this.map = null;
|
|
32
|
-
this.deck = null;
|
|
33
|
-
this.props = props;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
var _proto = MapboxLayer.prototype;
|
|
37
|
-
|
|
38
|
-
_proto.onAdd = function onAdd(map, gl) {
|
|
39
|
-
this.map = map;
|
|
40
|
-
this.deck = (0, _deckUtils.getDeckInstance)({
|
|
41
|
-
map: map,
|
|
42
|
-
gl: gl,
|
|
43
|
-
deck: this.props.deck
|
|
44
|
-
});
|
|
45
|
-
(0, _deckUtils.addLayer)(this.deck, this);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
_proto.onRemove = function onRemove() {
|
|
49
|
-
if (this.deck) {
|
|
50
|
-
(0, _deckUtils.removeLayer)(this.deck, this);
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
_proto.setProps = function setProps(props) {
|
|
55
|
-
Object.assign(this.props, props, {
|
|
56
|
-
id: this.id
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
if (this.deck) {
|
|
60
|
-
(0, _deckUtils.updateLayer)(this.deck, this);
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
|
|
64
|
-
_proto.render = function render() {
|
|
65
|
-
(0, _deckUtils.drawLayer)(this.deck, this.map, this);
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
return MapboxLayer;
|
|
69
|
-
}();
|
|
70
|
-
|
|
71
|
-
exports.default = MapboxLayer;
|
|
72
|
-
//# sourceMappingURL=mapbox-layer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":";;;;;;;;;;;AAAA;;IAUqBA,W;AASnB,uBAAYC,KAAZ,EAA6C;AAAA;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;;;SAIDO,K,GAAA,eAAMH,GAAN,EAAgBI,EAAhB,EAAiD;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAY,gCAAgB;AAACD,MAAAA,GAAG,EAAHA,GAAD;AAAMI,MAAAA,EAAE,EAAFA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAhB,CAAZ;AACA,6BAAS,KAAKA,IAAd,EAAoB,IAApB;AACD,G;;SAEDI,Q,GAAA,oBAAiB;AACf,QAAI,KAAKJ,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDK,Q,GAAA,kBAASV,KAAT,EAA0C;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDQ,M,GAAA,kBAAS;AACP,8BAAU,KAAKR,IAAf,EAAsB,KAAKD,GAA3B,EAAgC,IAAhC;AACD,G","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n renderingMode?: '2d' | '3d';\n deck?: Deck;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|