@deck.gl/mapbox 9.0.0-alpha.7 → 9.0.0-beta.2
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 +14 -9
- package/dist/es5/deck-utils.js.map +1 -1
- package/dist/es5/mapbox-layer.js +8 -0
- package/dist/es5/mapbox-layer.js.map +1 -1
- package/dist/esm/deck-utils.js.map +1 -1
- package/dist/esm/mapbox-layer.js +6 -0
- package/dist/esm/mapbox-layer.js.map +1 -1
- package/dist.min.js +2 -2
- package/package.json +3 -3
- package/src/deck-utils.ts +1 -1
- package/src/mapbox-layer.ts +6 -1
- package/typed/deck-utils.d.ts +1 -1
- package/typed/deck-utils.d.ts.map +1 -1
- package/typed/mapbox-layer.d.ts +1 -1
- package/typed/mapbox-layer.d.ts.map +1 -1
package/dist/dist.dev.js
CHANGED
|
@@ -330,6 +330,7 @@ var __exports__ = (() => {
|
|
|
330
330
|
}
|
|
331
331
|
|
|
332
332
|
// src/mapbox-layer.ts
|
|
333
|
+
var import_core3 = __toESM(require_core());
|
|
333
334
|
var MapboxLayer = class {
|
|
334
335
|
constructor(props) {
|
|
335
336
|
if (!props.id) {
|
|
@@ -343,6 +344,10 @@ var __exports__ = (() => {
|
|
|
343
344
|
this.props = props;
|
|
344
345
|
}
|
|
345
346
|
onAdd(map, gl) {
|
|
347
|
+
if (gl instanceof WebGLRenderingContext) {
|
|
348
|
+
import_core3.log.warn("Use useWebGL2:true in mapboxgl.Map()")();
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
346
351
|
this.map = map;
|
|
347
352
|
this.deck = getDeckInstance({
|
|
348
353
|
map,
|
|
@@ -370,18 +375,18 @@ var __exports__ = (() => {
|
|
|
370
375
|
};
|
|
371
376
|
|
|
372
377
|
// src/mapbox-overlay.ts
|
|
373
|
-
var
|
|
378
|
+
var import_core5 = __toESM(require_core());
|
|
374
379
|
|
|
375
380
|
// src/resolve-layers.ts
|
|
376
|
-
var
|
|
381
|
+
var import_core4 = __toESM(require_core());
|
|
377
382
|
var UNDEFINED_BEFORE_ID = "__UNDEFINED__";
|
|
378
383
|
function resolveLayers(map, deck, oldLayers, newLayers) {
|
|
379
384
|
if (!map || !deck || !map.style || !map.style._loaded) {
|
|
380
385
|
return;
|
|
381
386
|
}
|
|
382
|
-
const layers = (0,
|
|
387
|
+
const layers = (0, import_core4._flatten)(newLayers, Boolean);
|
|
383
388
|
if (oldLayers !== newLayers) {
|
|
384
|
-
const prevLayers = (0,
|
|
389
|
+
const prevLayers = (0, import_core4._flatten)(oldLayers, Boolean);
|
|
385
390
|
const prevLayerIds = new Set(prevLayers.map((l) => l.id));
|
|
386
391
|
for (const layer of layers) {
|
|
387
392
|
prevLayerIds.delete(layer.id);
|
|
@@ -466,7 +471,7 @@ var __exports__ = (() => {
|
|
|
466
471
|
pointerEvents: "none"
|
|
467
472
|
});
|
|
468
473
|
this._container = container;
|
|
469
|
-
this._deck = new
|
|
474
|
+
this._deck = new import_core5.Deck({
|
|
470
475
|
...this._props,
|
|
471
476
|
parent: container,
|
|
472
477
|
viewState: getViewState(map)
|
|
@@ -488,7 +493,7 @@ var __exports__ = (() => {
|
|
|
488
493
|
this._deck = getDeckInstance({
|
|
489
494
|
map,
|
|
490
495
|
gl: map.painter.context.gl,
|
|
491
|
-
deck: new
|
|
496
|
+
deck: new import_core5.Deck({
|
|
492
497
|
...this._props,
|
|
493
498
|
gl: map.painter.context.gl
|
|
494
499
|
})
|
|
@@ -532,15 +537,15 @@ var __exports__ = (() => {
|
|
|
532
537
|
return "top-left";
|
|
533
538
|
}
|
|
534
539
|
pickObject(params) {
|
|
535
|
-
(0,
|
|
540
|
+
(0, import_core5.assert)(this._deck);
|
|
536
541
|
return this._deck.pickObject(params);
|
|
537
542
|
}
|
|
538
543
|
pickMultipleObjects(params) {
|
|
539
|
-
(0,
|
|
544
|
+
(0, import_core5.assert)(this._deck);
|
|
540
545
|
return this._deck.pickMultipleObjects(params);
|
|
541
546
|
}
|
|
542
547
|
pickObjects(params) {
|
|
543
|
-
(0,
|
|
548
|
+
(0, import_core5.assert)(this._deck);
|
|
544
549
|
return this._deck.pickObjects(params);
|
|
545
550
|
}
|
|
546
551
|
finalize() {
|
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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: WebGL2RenderingContext;\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/mapbox-layer.js
CHANGED
|
@@ -11,6 +11,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
|
|
|
11
11
|
|
|
12
12
|
var _deckUtils = require("./deck-utils");
|
|
13
13
|
|
|
14
|
+
var _core = require("@deck.gl/core");
|
|
15
|
+
|
|
14
16
|
var MapboxLayer = function () {
|
|
15
17
|
function MapboxLayer(props) {
|
|
16
18
|
(0, _classCallCheck2.default)(this, MapboxLayer);
|
|
@@ -36,6 +38,12 @@ var MapboxLayer = function () {
|
|
|
36
38
|
var _proto = MapboxLayer.prototype;
|
|
37
39
|
|
|
38
40
|
_proto.onAdd = function onAdd(map, gl) {
|
|
41
|
+
if (gl instanceof WebGLRenderingContext) {
|
|
42
|
+
_core.log.warn('Use useWebGL2:true in mapboxgl.Map()')();
|
|
43
|
+
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
39
47
|
this.map = map;
|
|
40
48
|
this.deck = (0, _deckUtils.getDeckInstance)({
|
|
41
49
|
map: map,
|
|
@@ -1 +1 @@
|
|
|
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;;
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","type","renderingMode","map","deck","Error","onAdd","gl","WebGLRenderingContext","log","warn","onRemove","setProps","Object","assign","render"],"mappings":";;;;;;;;;;;AAAA;;AAEA;;IASqBA,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,EAA0E;AACxE,QAAIA,EAAE,YAAYC,qBAAlB,EAAyC;AACvCC,gBAAIC,IAAJ,CAAS,sCAAT;;AACA;AACD;;AACD,SAAKP,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;;SAEDO,Q,GAAA,oBAAiB;AACf,QAAI,KAAKP,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDQ,Q,GAAA,kBAASb,KAAT,EAA0C;AAExCc,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKf,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;;SAEDW,M,GAAA,kBAAS;AACP,8BAAU,KAAKX,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 {log} from '@deck.gl/core';\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 | WebGL2RenderingContext): void {\n if (gl instanceof WebGLRenderingContext) {\n log.warn('Use useWebGL2:true in mapboxgl.Map()')();\n return;\n }\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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["Deck","WebMercatorViewport","MapView","_flatten","flatten","lngLatToWorld","unitsPerMeter","GL","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","on","removeDeckInstance","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","finalize","currProps","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","operation","includes","clearCanvas","lng","lat","getCenter","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","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":"AAAA,SAAQA,IAAR,EAAcC,mBAAd,EAAmCC,OAAnC,EAA4CC,QAAQ,IAAIC,OAAxD,QAAsE,eAAtE;AAKA,SAAQC,aAAR,EAAuBC,aAAvB,QAA2C,uBAA3C;AACA,SAAQC,EAAR,QAAiB,oBAAjB;AAUA,MAAMC,SAAS,GAAG,GAAlB;AACA,MAAMC,kBAAkB,GAAGC,IAAI,CAACC,EAAL,GAAU,GAArC;AAGA,OAAO,SAASC,eAAT,CAAyB;AAC9BC,EAAAA,GAD8B;AAE9BC,EAAAA,EAF8B;AAG9BC,EAAAA;AAH8B,CAAzB,EAQE;AAEP,MAAIF,GAAG,CAACG,MAAR,EAAgB;AACd,WAAOH,GAAG,CAACG,MAAX;AACD;;AAGD,QAAMC,YAAY,GAAGF,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYC,aAAjC;AACA,QAAMC,MAAM,GAAGL,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAN,CAAYE,MAA3B;AAEA,QAAMC,SAAS,GAAGC,mBAAmB,CAAC,EACpC,IAAGP,IAAH,aAAGA,IAAH,uBAAGA,IAAI,CAAEG,KAAT,CADoC;AAEpCC,IAAAA,aAAa,EAAE,MAAM;AACnBN,MAAAA,GAAG,CAACU,cAAJ;AAKAN,MAAAA,YAAY,SAAZ,IAAAA,YAAY,WAAZ,YAAAA,YAAY,CAAG,EAAH,CAAZ;AACD;AATmC,GAAD,CAArC;AAYA,MAAIO,YAAJ;;AAEA,MAAI,CAACT,IAAD,IAASA,IAAI,CAACG,KAAL,CAAWJ,EAAX,KAAkBA,EAA/B,EAAmC;AAKjCW,IAAAA,MAAM,CAACC,MAAP,CAAcL,SAAd,EAAyB;AACvBP,MAAAA,EADuB;AAEvBa,MAAAA,KAAK,EAAE,IAFgB;AAGvBC,MAAAA,MAAM,EAAE,IAHe;AAIvBC,MAAAA,WAAW,EAAE,OAJU;AAKvBC,MAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AALA,KAAzB;;AAOA,QAAIE,IAAJ,aAAIA,IAAJ,eAAIA,IAAI,CAAEiB,aAAV,EAAyB;AACvBC,MAAAA,YAAY,CAAClB,IAAD,EAAOF,GAAP,CAAZ;AACD,KAFD,MAEO;AACLQ,MAAAA,SAAS,CAACD,MAAV,GAAmB,MAAM;AACvBA,QAAAA,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM;AACNa,QAAAA,YAAY,CAACT,YAAD,EAAeX,GAAf,CAAZ;AACD,OAHD;AAID;AACF;;AAED,MAAIE,IAAJ,EAAU;AACRS,IAAAA,YAAY,GAAGT,IAAf;AACAA,IAAAA,IAAI,CAACmB,QAAL,CAAcb,SAAd;AACCN,IAAAA,IAAI,CAACoB,QAAN,CAA4BC,UAA5B,GAAyC,IAAzC;AACD,GAJD,MAIO;AACLZ,IAAAA,YAAY,GAAG,IAAIxB,IAAJ,CAASqB,SAAT,CAAf;AACAR,IAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrBC,MAAAA,kBAAkB,CAACzB,GAAD,CAAlB;AACD,KAFD;AAGD;;AAEAW,EAAAA,YAAY,CAACW,QAAd,CAAoCI,YAApC,GAAmD,IAAIC,GAAJ,EAAnD;AAEA3B,EAAAA,GAAG,CAACG,MAAJ,GAAaQ,YAAb;AACAX,EAAAA,GAAG,CAACwB,EAAJ,CAAO,QAAP,EAAiB,MAAM;AACrB,QAAIb,YAAY,CAACQ,aAAjB,EAAgCS,WAAW,CAACjB,YAAD,EAAeX,GAAf,CAAX;AACjC,GAFD;AAIA,SAAOW,YAAP;AACD;;AAED,SAASS,YAAT,CAAsBlB,IAAtB,EAAkCF,GAAlC,EAAqE;AACnE,QAAM6B,cAAc,GAAG,MAAM;AAC3B,QAAI3B,IAAI,CAACiB,aAAT,EAAwB;AAEtBW,MAAAA,SAAS,CAAC5B,IAAD,EAAOF,GAAP,CAAT;AACD,KAHD,MAGO;AAELA,MAAAA,GAAG,CAAC+B,GAAJ,CAAQ,MAAR,EAAgBF,cAAhB;AACD;AACF,GARD;;AASA7B,EAAAA,GAAG,CAACwB,EAAJ,CAAO,MAAP,EAAeK,cAAf;AACD;;AAED,OAAO,SAASJ,kBAAT,CAA4BzB,GAA5B,EAA+D;AAAA;;AACpE,iBAAAA,GAAG,CAACG,MAAJ,4DAAY6B,QAAZ;AACAhC,EAAAA,GAAG,CAACG,MAAJ,GAAa,IAAb;AACD;AAED,OAAO,SAASM,mBAAT,CAA6BwB,SAA7B,EAAmD;AACxD,QAAMC,SAAoB,GAAG,EAC3B,GAAGD,SADwB;AAG3BE,IAAAA,UAAU,EAAE;AACVC,MAAAA,SAAS,EAAE,IADD;AAEVC,MAAAA,SAAS,EAAE,IAFD;AAGVC,MAAAA,KAAK,EAAE,IAHG;AAIVC,MAAAA,SAAS,EAAE,kBAJD;AAKVC,MAAAA,iBAAiB,EAAE,IALT;AAMVC,MAAAA,SAAS,KANC;AAOVC,MAAAA,aAAa,OAPH;AAQV,SAAGT,SAAS,CAACE;AARH,KAHe;AAa3BQ,IAAAA,KAAK,EAAEV,SAAS,CAACU,KAAV,IAAmB,CAAC,IAAItD,OAAJ,CAAY;AAACuD,MAAAA,EAAE,EAAE;AAAL,KAAZ,CAAD;AAbC,GAA7B;AAgBA,SAAOV,SAAP;AACD;AAED,OAAO,SAASW,QAAT,CAAkB3C,IAAlB,EAA8B4C,KAA9B,EAA6D;AACjE5C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCqB,GAAzC,CAA6CD,KAA7C;AACAE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAAS+C,WAAT,CAAqB/C,IAArB,EAAiC4C,KAAjC,EAAgE;AACpE5C,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCwB,MAAzC,CAAgDJ,KAAhD;AACAE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAASiD,WAAT,CAAqBjD,IAArB,EAAiC4C,KAAjC,EAAgE;AACrEE,EAAAA,YAAY,CAAC9C,IAAD,CAAZ;AACD;AAED,OAAO,SAASkD,SAAT,CAAmBlD,IAAnB,EAA+BF,GAA/B,EAAyC8C,KAAzC,EAAwE;AAC7E,MAAI;AAACO,IAAAA;AAAD,MAAoBnD,IAAI,CAACoB,QAA7B;AACA,MAAIgC,UAAmB,GAAG,KAA1B;;AACA,MAAI,CAACD,eAAL,EAAsB;AAGpBA,IAAAA,eAAe,GAAGE,WAAW,CAACrD,IAAD,EAAOF,GAAP,EAAY,IAAZ,CAA7B;AACCE,IAAAA,IAAI,CAACoB,QAAN,CAA4B+B,eAA5B,GAA8CA,eAA9C;AACAC,IAAAA,UAAU,GAAG,IAAb;AACD;;AAED,MAAI,CAACpD,IAAI,CAACiB,aAAV,EAAyB;AACvB;AACD;;AAEDjB,EAAAA,IAAI,CAACsD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,IAAAA,SAAS,EAAE,CAACJ,eAAD,CADsB;AAEjCK,IAAAA,WAAW,EAAE,CAAC;AAACZ,MAAAA,KAAK,EAAEa;AAAR,KAAD,KACXb,KAAK,CAACF,EAAN,KAAae,SAAS,CAACf,EAAvB,IAA6Be,SAAS,CAACtD,KAAV,CAAgBuD,SAAhB,CAA0BC,QAA1B,CAAmC,SAAnC,CAHE;AAIjCP,IAAAA,UAJiC;AAKjCQ,IAAAA,WAAW,EAAE;AALoB,GAAnC;AAOD;AAED,OAAO,SAAS5C,YAAT,CAAsBlB,GAAtB,EAQL;AAAA;;AACA,QAAM;AAAC+D,IAAAA,GAAD;AAAMC,IAAAA;AAAN,MAAahE,GAAG,CAACiE,SAAJ,EAAnB;AAEA,QAAMhD,SAQL,GAAG;AAGFiD,IAAAA,SAAS,EAAG,CAACH,GAAG,GAAG,GAAP,IAAc,GAAf,GAAsB,GAH/B;AAIFI,IAAAA,QAAQ,EAAEH,GAJR;AAKFI,IAAAA,IAAI,EAAEpE,GAAG,CAACqE,OAAJ,EALJ;AAMFC,IAAAA,OAAO,EAAEtE,GAAG,CAACuE,UAAJ,EANP;AAOFC,IAAAA,KAAK,EAAExE,GAAG,CAACyE,QAAJ,EAPL;AAQFC,IAAAA,OAAO,EAAE1E,GAAG,CAAC2E,UAAJ,EARP;AASFC,IAAAA,MAAM,EAAE5E,GAAG,CAAC6E,oBAAJ;AATN,GARJ;;AAoBA,yBAAI7E,GAAG,CAAC8E,UAAR,4CAAI,qBAAA9E,GAAG,CAAP,EAAwB;AAEtB+E,IAAAA,qBAAqB,CAAC/E,GAAD,EAAMiB,SAAN,CAArB;AACD;;AAED,SAAOA,SAAP;AACD;;AAED,SAAS8D,qBAAT,CAA+B/E,GAA/B,EAAyCiB,SAAzC,EAAkE;AAChE,MAAIjB,GAAG,CAACgF,oBAAR,EAA8B;AAE5B,UAAM;AAACC,MAAAA;AAAD,QAAajF,GAAG,CAACgF,oBAAJ,EAAnB;;AACA,QAAI,CAACC,QAAD,IAAaA,QAAQ,CAACC,CAAT,KAAeC,SAAhC,EAA2C;AACzC;AACD;;AAGD,UAAMpE,MAAM,GAAGf,GAAG,CAACoF,SAAJ,CAAcrE,MAA7B;AACA,UAAM;AAACmD,MAAAA,SAAD;AAAYC,MAAAA,QAAZ;AAAsBK,MAAAA;AAAtB,QAA+BvD,SAArC;AAGA,UAAMoE,OAAO,GAAGJ,QAAQ,CAACK,CAAT,GAAa3F,SAA7B;AACA,UAAM4F,OAAO,GAAG,CAAC,IAAIN,QAAQ,CAACO,CAAd,IAAmB7F,SAAnC;AACA,UAAM8F,OAAO,GAAGR,QAAQ,CAACC,CAAT,GAAavF,SAA7B;AAGA,UAAM+F,MAAM,GAAGlG,aAAa,CAAC,CAAC0E,SAAD,EAAYC,QAAZ,CAAD,CAA5B;AACA,UAAMwB,EAAE,GAAGN,OAAO,GAAGK,MAAM,CAAC,CAAD,CAA3B;AACA,UAAME,EAAE,GAAGL,OAAO,GAAGG,MAAM,CAAC,CAAD,CAA3B;AACA,UAAMG,4BAA4B,GAAGhG,IAAI,CAACiG,IAAL,CAAUH,EAAE,GAAGA,EAAL,GAAUC,EAAE,GAAGA,EAAzB,CAArC;AAEA,UAAMG,YAAY,GAAGvB,KAAK,GAAI5E,kBAA9B;AACA,UAAMoG,cAAc,GAAG,MAAMjF,MAA7B;AACA,UAAMkF,KAAK,GACTF,YAAY,GAAG,KAAf,GAEKC,cAAc,GAAGnG,IAAI,CAACqG,GAAL,CAASH,YAAT,CAAlB,GAA4CN,OAFhD,GAGKO,cAAc,GAAGnG,IAAI,CAACsG,GAAL,CAASJ,YAAT,CAAlB,GAA4CF,4BAJlD;AAKA5E,IAAAA,SAAS,CAACmD,IAAV,GAAiBvE,IAAI,CAACuG,IAAL,CAAUH,KAAV,CAAjB;AAEA,UAAMI,kBAAkB,GAAIL,cAAc,GAAGnG,IAAI,CAACqG,GAAL,CAASH,YAAT,CAAlB,GAA4CE,KAAvE;AACA,UAAMK,gBAAgB,GAAGb,OAAO,GAAGY,kBAAnC;AACApF,IAAAA,SAAS,CAACgE,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAOqB,gBAAgB,GAAG7G,aAAa,CAAC0E,QAAD,CAAvC,CAArB;AACD,GAlCD,MAoCK,IAAI,OAAOnE,GAAG,CAACoF,SAAJ,CAAcmB,SAArB,KAAmC,QAAvC,EAAiD;AAGpDtF,IAAAA,SAAS,CAACgE,QAAV,GAAqB,CAAC,CAAD,EAAI,CAAJ,EAAOjF,GAAG,CAACoF,SAAJ,CAAcmB,SAArB,CAArB;AACD;AACF;;AAcD,SAAShD,WAAT,CAAqBrD,IAArB,EAAiCF,GAAjC,EAA2CwG,mBAAmB,GAAG,IAAjE,EAA4F;AAC1F,SAAO,IAAIpH,mBAAJ,CAAwB;AAC7BwD,IAAAA,EAAE,EAAE,QADyB;AAE7B0C,IAAAA,CAAC,EAAE,CAF0B;AAG7BE,IAAAA,CAAC,EAAE,CAH0B;AAI7B1E,IAAAA,KAAK,EAAEZ,IAAI,CAACY,KAJiB;AAK7BC,IAAAA,MAAM,EAAEb,IAAI,CAACa,MALgB;AAM7B,OAAGG,YAAY,CAAClB,GAAD,CANc;AAO7ByG,IAAAA,eAAe,EAAED,mBAAmB,GAEhC,IAFgC,GAIhC,GAXyB;AAY7BE,IAAAA,KAAK,EAAE1G,GAAG,CAACoF,SAAJ,CAAcuB,MAAd,GAAuB3G,GAAG,CAACoF,SAAJ,CAAcrE,MAZf;AAa7B6F,IAAAA,IAAI,EAAE5G,GAAG,CAACoF,SAAJ,CAAcyB,KAAd,GAAsB7G,GAAG,CAACoF,SAAJ,CAAcrE;AAbb,GAAxB,CAAP;AAeD;;AAED,SAASa,WAAT,CAAqB1B,IAArB,EAAiCF,GAAjC,EAAiD;AAC/C,QAAM;AAAC0B,IAAAA,YAAD;AAAeH,IAAAA;AAAf,MAA6BrB,IAAI,CAACoB,QAAxC;;AAEA,MAAIC,UAAJ,EAAgB;AAEd,UAAMuF,cAAc,GAAGC,KAAK,CAACC,IAAN,CAAWtF,YAAX,EAAyBoB,KAAK,IAAIA,KAAK,CAACF,EAAxC,CAAvB;AACA,UAAMqE,UAAU,GAAG1H,OAAO,CAACW,IAAI,CAACG,KAAL,CAAW6G,MAAZ,EAAoBC,OAApB,CAA1B;AACA,UAAMC,kBAAkB,GAAGH,UAAU,CAACI,IAAX,CACzBvE,KAAK,IAAIA,KAAK,IAAI,CAACgE,cAAc,CAACjD,QAAf,CAAwBf,KAAK,CAACF,EAA9B,CADM,CAA3B;AAGA,QAAIa,SAAS,GAAGvD,IAAI,CAACoH,YAAL,EAAhB;AACA,UAAMC,iBAAiB,GAAG9D,SAAS,CAAC+D,SAAV,CAAoBC,EAAE,IAAIA,EAAE,CAAC7E,EAAH,KAAU,QAApC,CAA1B;AACA,UAAM8E,iBAAiB,GAAGjE,SAAS,CAACkE,MAAV,GAAmB,CAAnB,IAAwBJ,iBAAiB,GAAG,CAAtE;;AAEA,QAAIH,kBAAkB,IAAIM,iBAA1B,EAA6C;AAC3C,UAAIH,iBAAiB,IAAI,CAAzB,EAA4B;AAC1B9D,QAAAA,SAAS,GAAGA,SAAS,CAACmE,KAAV,EAAZ;AACAnE,QAAAA,SAAS,CAAC8D,iBAAD,CAAT,GAA+BhE,WAAW,CAACrD,IAAD,EAAOF,GAAP,EAAY,KAAZ,CAA1C;AACD;;AAEDE,MAAAA,IAAI,CAACsD,WAAL,CAAiB,gBAAjB,EAAmC;AACjCC,QAAAA,SADiC;AAEjCC,QAAAA,WAAW,EAAEmE,MAAM,IACjB,CAAC,CAAC3H,IAAI,CAACG,KAAL,CAAWqD,WAAZ,IAA2BxD,IAAI,CAACG,KAAL,CAAWqD,WAAX,CAAuBmE,MAAvB,CAA5B,MACCA,MAAM,CAACC,QAAP,CAAgBlF,EAAhB,KAAuB,QAAvB,IAAmC,CAACkE,cAAc,CAACjD,QAAf,CAAwBgE,MAAM,CAAC/E,KAAP,CAAaF,EAArC,CADrC,CAH+B;AAKjCkB,QAAAA,WAAW,EAAE;AALoB,OAAnC;AAOD;AACF;;AAGA5D,EAAAA,IAAI,CAACoB,QAAN,CAA4B+B,eAA5B,GAA8C,IAA9C;AACD;;AAED,SAASvB,SAAT,CAAmB5B,IAAnB,EAA+BF,GAA/B,EAA+C;AAC7CE,EAAAA,IAAI,CAACmB,QAAL,CAAc;AACZJ,IAAAA,SAAS,EAAEC,YAAY,CAAClB,GAAD;AADX,GAAd;AAMAE,EAAAA,IAAI,CAAC6H,WAAL,CAAiB;AAACC,IAAAA,gBAAgB,EAAE;AAAnB,GAAjB;AACD;;AAED,SAAShF,YAAT,CAAsB9C,IAAtB,EAAwC;AACtC,MAAKA,IAAI,CAACoB,QAAN,CAA4BC,UAAhC,EAA4C;AAC1C;AACD;;AAED,QAAM2F,MAAe,GAAG,EAAxB;AACChH,EAAAA,IAAI,CAACoB,QAAN,CAA4BI,YAA5B,CAAyCuG,OAAzC,CAAiDtE,SAAS,IAAI;AAC5D,UAAMuE,SAAS,GAAGvE,SAAS,CAACtD,KAAV,CAAgB8H,IAAlC;AACA,UAAMrF,KAAK,GAAG,IAAIoF,SAAJ,CAAcvE,SAAS,CAACtD,KAAxB,CAAd;AACA6G,IAAAA,MAAM,CAACkB,IAAP,CAAYtF,KAAZ;AACD,GAJD;AAKA5C,EAAAA,IAAI,CAACmB,QAAL,CAAc;AAAC6F,IAAAA;AAAD,GAAd;AACD","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"}
|
|
1
|
+
{"version":3,"sources":["../../src/deck-utils.ts"],"names":["Deck","WebMercatorViewport","MapView","_flatten","flatten","lngLatToWorld","unitsPerMeter","GL","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","on","removeDeckInstance","mapboxLayers","Set","afterRender","_handleMapMove","onMapMove","off","finalize","currProps","nextProps","parameters","depthMask","depthTest","blend","blendFunc","polygonOffsetFill","depthFunc","blendEquation","views","id","addLayer","layer","add","updateLayers","removeLayer","delete","updateLayer","drawLayer","currentViewport","clearStack","getViewport","_drawLayers","viewports","layerFilter","deckLayer","operation","includes","clearCanvas","lng","lat","getCenter","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","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: WebGL2RenderingContext;\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/esm/mapbox-layer.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
|
|
2
|
+
import { log } from '@deck.gl/core';
|
|
2
3
|
export default class MapboxLayer {
|
|
3
4
|
constructor(props) {
|
|
4
5
|
this.id = void 0;
|
|
@@ -21,6 +22,11 @@ export default class MapboxLayer {
|
|
|
21
22
|
}
|
|
22
23
|
|
|
23
24
|
onAdd(map, gl) {
|
|
25
|
+
if (gl instanceof WebGLRenderingContext) {
|
|
26
|
+
log.warn('Use useWebGL2:true in mapboxgl.Map()')();
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
24
30
|
this.map = map;
|
|
25
31
|
this.deck = getDeckInstance({
|
|
26
32
|
map,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","MapboxLayer","constructor","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":"AAAA,SAAQA,eAAR,EAAyBC,QAAzB,EAAmCC,WAAnC,EAAgDC,WAAhD,EAA6DC,SAA7D,QAA6E,cAA7E;
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","log","MapboxLayer","constructor","props","id","type","renderingMode","map","deck","Error","onAdd","gl","WebGLRenderingContext","warn","onRemove","setProps","Object","assign","render"],"mappings":"AAAA,SAAQA,eAAR,EAAyBC,QAAzB,EAAmCC,WAAnC,EAAgDC,WAAhD,EAA6DC,SAA7D,QAA6E,cAA7E;AAEA,SAAQC,GAAR,QAAkB,eAAlB;AASA,eAAe,MAAMC,WAAN,CAAwE;AASrFC,EAAAA,WAAW,CAACC,KAAD,EAAkC;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;;AAIDO,EAAAA,KAAK,CAACH,GAAD,EAAWI,EAAX,EAAqE;AACxE,QAAIA,EAAE,YAAYC,qBAAlB,EAAyC;AACvCZ,MAAAA,GAAG,CAACa,IAAJ,CAAS,sCAAT;AACA;AACD;;AACD,SAAKN,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAYb,eAAe,CAAC;AAACY,MAAAA,GAAD;AAAMI,MAAAA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAD,CAA3B;AACAZ,IAAAA,QAAQ,CAAC,KAAKY,IAAN,EAAY,IAAZ,CAAR;AACD;;AAEDM,EAAAA,QAAQ,GAAS;AACf,QAAI,KAAKN,IAAT,EAAe;AACbX,MAAAA,WAAW,CAAC,KAAKW,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDO,EAAAA,QAAQ,CAACZ,KAAD,EAAkC;AAExCa,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKd,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACbV,MAAAA,WAAW,CAAC,KAAKU,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDU,EAAAA,MAAM,GAAG;AACPnB,IAAAA,SAAS,CAAC,KAAKS,IAAN,EAAa,KAAKD,GAAlB,EAAuB,IAAvB,CAAT;AACD;;AAnDoF","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport {log} from '@deck.gl/core';\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 | WebGL2RenderingContext): void {\n if (gl instanceof WebGLRenderingContext) {\n log.warn('Use useWebGL2:true in mapboxgl.Map()')();\n return;\n }\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"}
|
package/dist.min.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
else if (typeof define === 'function' && define.amd) define([], factory);
|
|
5
5
|
else if (typeof exports === 'object') exports['deck'] = factory();
|
|
6
6
|
else root['deck'] = factory();})(globalThis, function () {
|
|
7
|
-
"use strict";var __exports__=(()=>{var
|
|
8
|
-
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,l=!1,i;return{s:function(){r=r.call(t)},n:function(){var s=r.next();return c=s.done,s},e:function(s){l=!0,i=s},f:function(){try{!c&&r.return!=null&&r.return()}finally{if(l)throw i}}}}function
|
|
7
|
+
"use strict";var __exports__=(()=>{var bt=Object.create;var N=Object.defineProperty;var xt=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var Pt=Object.getPrototypeOf,Ot=Object.prototype.hasOwnProperty;var Et=(t,n)=>()=>(n||t((n={exports:{}}).exports,n),n.exports),Lt=(t,n)=>{for(var r in n)N(t,r,{get:n[r],enumerable:!0})},R=(t,n,r,e)=>{if(n&&typeof n=="object"||typeof n=="function")for(let o of wt(n))!Ot.call(t,o)&&o!==r&&N(t,o,{get:()=>n[o],enumerable:!(e=xt(n,o))||e.enumerable});return t},m=(t,n,r)=>(R(t,n,"default"),r&&R(r,n,"default")),T=(t,n,r)=>(r=t!=null?bt(Pt(t)):{},R(n||!t||!t.__esModule?N(r,"default",{value:t,enumerable:!0}):r,t)),Tt=t=>R(N({},"__esModule",{value:!0}),t);var b=Et((ie,st)=>{st.exports=globalThis.deck});var z={};Lt(z,{MapboxLayer:()=>U,MapboxOverlay:()=>yt});var d={},at=T(b());m(d,T(b()));if(!at.Layer)throw new Error("@deck.gl/core is not found");m(z,d);var g=T(b());function Z(t,n){if(!t)throw new Error(n||"@math.gl/web-mercator: assertion failed.")}var x=Math.PI,kt=x/4,Y=x/180,de=180/x,G=512,Ft=4003e4;function j(t){let[n,r]=t;Z(Number.isFinite(n)),Z(Number.isFinite(r)&&r>=-90&&r<=90,"invalid latitude");let e=n*Y,o=r*Y,c=G*(e+x)/(2*x),l=G*(x+Math.log(Math.tan(kt+o*.5)))/(2*x);return[c,l]}function q(t){let n=Math.cos(t*Y);return G/Ft/n}var ye=Math.PI/180;function ut(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,e)}return r}function w(t){for(var n=1;n<arguments.length;n++){var r=arguments[n]!=null?arguments[n]:{};n%2?ut(Object(r),!0).forEach(function(e){Yt(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ut(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function Yt(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}var H=512,Gt=Math.PI/180;function V(t){var n=t.map,r=t.gl,e=t.deck;if(n.__deck)return n.__deck;var o=e?.props._customRender,c=e?.props.onLoad,l=K(w(w({},e?.props),{},{_customRender:function(){n.triggerRepaint(),o?.("")}})),i;return(!e||e.props.gl===r)&&(Object.assign(l,{gl:r,width:null,height:null,touchAction:"unset",viewState:D(n)}),e!=null&&e.isInitialized?ft(e,n):l.onLoad=function(){c?.(),ft(i,n)}),e?(i=e,e.setProps(l),e.userData.isExternal=!0):(i=new g.Deck(l),n.on("remove",function(){$(n)})),i.userData.mapboxLayers=new Set,n.__deck=i,n.on("render",function(){i.isInitialized&&Ht(i,n)}),i}function ft(t,n){var r=function e(){t.isInitialized?$t(t,n):n.off("move",e)};n.on("move",r)}function $(t){var n;(n=t.__deck)===null||n===void 0||n.finalize(),t.__deck=null}function K(t){var n=w(w({},t),{},{parameters:w({depthMask:!0,depthTest:!0,blend:!0,blendFunc:[770,771,1,771],polygonOffsetFill:!0,depthFunc:515,blendEquation:32774},t.parameters),views:t.views||[new g.MapView({id:"mapbox"})]});return n}function dt(t,n){t.userData.mapboxLayers.add(n),J(t)}function ht(t,n){t.userData.mapboxLayers.delete(n),J(t)}function pt(t,n){J(t)}function vt(t,n,r){var e=t.userData,o=e.currentViewport,c=!1;o||(o=mt(t,n,!0),t.userData.currentViewport=o,c=!0),t.isInitialized&&t._drawLayers("mapbox-repaint",{viewports:[o],layerFilter:function(i){var a=i.layer;return r.id===a.id||a.props.operation.includes("terrain")},clearStack:c,clearCanvas:!1})}function D(t){var n,r=t.getCenter(),e=r.lng,o=r.lat,c={longitude:(e+540)%360-180,latitude:o,zoom:t.getZoom(),bearing:t.getBearing(),pitch:t.getPitch(),padding:t.getPadding(),repeat:t.getRenderWorldCopies()};return(n=t.getTerrain)!==null&&n!==void 0&&n.call(t)&&qt(t,c),c}function qt(t,n){if(t.getFreeCameraOptions){var r=t.getFreeCameraOptions(),e=r.position;if(!e||e.z===void 0)return;var o=t.transform.height,c=n.longitude,l=n.latitude,i=n.pitch,a=e.x*H,s=(1-e.y)*H,u=e.z*H,f=j([c,l]),h=a-f[0],_=s-f[1],A=Math.sqrt(h*h+_*_),p=i*Gt,O=1.5*o,M=p<.001?O*Math.cos(p)/u:O*Math.sin(p)/A;n.zoom=Math.log2(M);var y=O*Math.cos(p)/M,E=u-y;n.position=[0,0,E/q(l)]}else typeof t.transform.elevation=="number"&&(n.position=[0,0,t.transform.elevation])}function mt(t,n){var r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0;return new g.WebMercatorViewport(w(w({id:"mapbox",x:0,y:0,width:t.width,height:t.height},D(n)),{},{nearZMultiplier:r?.02:.1,nearZ:n.transform._nearZ/n.transform.height,farZ:n.transform._farZ/n.transform.height}))}function Ht(t,n){var r=t.userData,e=r.mapboxLayers,o=r.isExternal;if(o){var c=Array.from(e,function(f){return f.id}),l=(0,g._flatten)(t.props.layers,Boolean),i=l.some(function(f){return f&&!c.includes(f.id)}),a=t.getViewports(),s=a.findIndex(function(f){return f.id==="mapbox"}),u=a.length>1||s<0;(i||u)&&(s>=0&&(a=a.slice(),a[s]=mt(t,n,!1)),t._drawLayers("mapbox-repaint",{viewports:a,layerFilter:function(h){return(!t.props.layerFilter||t.props.layerFilter(h))&&(h.viewport.id!=="mapbox"||!c.includes(h.layer.id))},clearCanvas:!1}))}t.userData.currentViewport=null}function $t(t,n){t.setProps({viewState:D(n)}),t.needsRedraw({clearRedrawFlags:!0})}function J(t){if(!t.userData.isExternal){var n=[];t.userData.mapboxLayers.forEach(function(r){var e=r.props.type,o=new e(r.props);n.push(o)}),t.setProps({layers:n})}}var gt=T(b());function Kt(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var U=function(){function t(r){if(Kt(this,t),this.id=void 0,this.type=void 0,this.renderingMode=void 0,this.map=void 0,this.deck=void 0,this.props=void 0,!r.id)throw new Error("Layer must have an unique id");this.id=r.id,this.type="custom",this.renderingMode=r.renderingMode||"3d",this.map=null,this.deck=null,this.props=r}var n=t.prototype;return n.onAdd=function(e,o){if(o instanceof WebGLRenderingContext){gt.log.warn("Use useWebGL2:true in mapboxgl.Map()")();return}this.map=e,this.deck=V({map:e,gl:o,deck:this.props.deck}),dt(this.deck,this)},n.onRemove=function(){this.deck&&ht(this.deck,this)},n.setProps=function(e){Object.assign(this.props,e,{id:this.id}),this.deck&&pt(this.deck,this)},n.render=function(){vt(this.deck,this.map,this)},t}();var P=T(b());var tt=T(b());function X(t,n){var r=typeof Symbol<"u"&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=Jt(t))||n&&t&&typeof t.length=="number"){r&&(t=r);var e=0,o=function(){};return{s:o,n:function(){return e>=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(s){throw s},f:o}}throw new TypeError(`Invalid attempt to iterate non-iterable instance.
|
|
8
|
+
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var c=!0,l=!1,i;return{s:function(){r=r.call(t)},n:function(){var s=r.next();return c=s.done,s},e:function(s){l=!0,i=s},f:function(){try{!c&&r.return!=null&&r.return()}finally{if(l)throw i}}}}function Jt(t,n){if(t){if(typeof t=="string")return _t(t,n);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return _t(t,n)}}function _t(t,n){(n==null||n>t.length)&&(n=t.length);for(var r=0,e=new Array(n);r<n;r++)e[r]=t[r];return e}var Q="__UNDEFINED__";function C(t,n,r,e){if(!(!t||!n||!t.style||!t.style._loaded)){var o=(0,tt._flatten)(e,Boolean);if(r!==e){var c=(0,tt._flatten)(r,Boolean),l=new Set(c.map(function(v){return v.id})),i=X(o),a;try{for(i.s();!(a=i.n()).done;){var s=a.value;l.delete(s.id)}}catch(v){i.e(v)}finally{i.f()}var u=X(l),f;try{for(u.s();!(f=u.n()).done;){var h=f.value;t.getLayer(h)&&t.removeLayer(h)}}catch(v){u.e(v)}finally{u.f()}}var _=X(o),A;try{for(_.s();!(A=_.n()).done;){var p=A.value,O=t.getLayer(p.id);O?O.implementation.setProps(p.props):t.addLayer(new U({id:p.id,deck:n}),p.props.beforeId)}}catch(v){_.e(v)}finally{_.f()}var M=t.style._order,y={},E=X(o),et;try{for(E.s();!(et=E.n()).done;){var nt=et.value,L=nt.props.beforeId;(!L||!M.includes(L))&&(L=Q),y[L]=y[L]||[],y[L].push(nt.id)}}catch(v){E.e(v)}finally{E.f()}for(var k in y)for(var rt=y[k],I=k===Q?M.length:M.indexOf(k),ot=k===Q?void 0:k,W=rt.length-1;W>=0;W--){var B=rt[W],it=M.indexOf(B);it!==I-1&&(t.moveLayer(B,ot),it>I&&I++),I--,ot=B}}}var Qt=["interleaved"];function te(t,n){if(t==null)return{};var r=ee(t,n),e,o;if(Object.getOwnPropertySymbols){var c=Object.getOwnPropertySymbols(t);for(o=0;o<c.length;o++)e=c[o],!(n.indexOf(e)>=0)&&Object.prototype.propertyIsEnumerable.call(t,e)&&(r[e]=t[e])}return r}function ee(t,n){if(t==null)return{};var r={},e=Object.keys(t),o,c;for(c=0;c<e.length;c++)o=e[c],!(n.indexOf(o)>=0)&&(r[o]=t[o]);return r}function Mt(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter(function(o){return Object.getOwnPropertyDescriptor(t,o).enumerable})),r.push.apply(r,e)}return r}function S(t){for(var n=1;n<arguments.length;n++){var r=arguments[n]!=null?arguments[n]:{};n%2?Mt(Object(r),!0).forEach(function(e){ne(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Mt(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function ne(t,n,r){return n in t?Object.defineProperty(t,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[n]=r,t}function re(t,n){if(!(t instanceof n))throw new TypeError("Cannot call a class as a function")}var yt=function(){function t(r){var e=this;re(this,t),this._props=void 0,this._deck=void 0,this._map=void 0,this._container=void 0,this._interleaved=void 0,this._lastMouseDownPoint=void 0,this._handleStyleChange=function(){C(e._map,e._deck,e._props.layers,e._props.layers)},this._updateContainerSize=function(){if(e._map&&e._container){var i=e._map.getContainer(),a=i.clientWidth,s=i.clientHeight;Object.assign(e._container.style,{width:"".concat(a,"px"),height:"".concat(s,"px")})}},this._updateViewState=function(){var i=e._deck;i&&(i.setProps({viewState:D(e._map)}),i.isInitialized&&i.redraw())},this._handleMouseEvent=function(i){var a=e._deck;if(!(!a||!a.isInitialized)){var s={type:i.type,offsetCenter:i.point,srcEvent:i},u=e._lastMouseDownPoint;switch(!i.point&&u&&(s.deltaX=i.originalEvent.clientX-u.clientX,s.deltaY=i.originalEvent.clientY-u.clientY,s.offsetCenter={x:u.x+s.deltaX,y:u.y+s.deltaY}),s.type){case"mousedown":a._onPointerDown(s),e._lastMouseDownPoint=S(S({},i.point),{},{clientX:i.originalEvent.clientX,clientY:i.originalEvent.clientY});break;case"dragstart":s.type="panstart",a._onEvent(s);break;case"drag":s.type="panmove",a._onEvent(s);break;case"dragend":s.type="panend",a._onEvent(s);break;case"click":s.tapCount=1,a._onEvent(s);break;case"dblclick":s.type="click",s.tapCount=2,a._onEvent(s);break;case"mousemove":s.type="pointermove",a._onPointerMove(s);break;case"mouseout":s.type="pointerleave",a._onPointerMove(s);break;default:return}}};var o=r.interleaved,c=o===void 0?!1:o,l=te(r,Qt);this._interleaved=c,this._props=l}var n=t.prototype;return n.setProps=function(e){this._interleaved&&e.layers&&C(this._map,this._deck,this._props.layers,e.layers),Object.assign(this._props,e),this._deck&&this._deck.setProps(this._interleaved?K(this._props):this._props)},n.onAdd=function(e){return this._map=e,this._interleaved?this._onAddInterleaved(e):this._onAddOverlaid(e)},n._onAddOverlaid=function(e){var o=document.createElement("div");return Object.assign(o.style,{position:"absolute",left:0,top:0,pointerEvents:"none"}),this._container=o,this._deck=new P.Deck(S(S({},this._props),{},{parent:o,viewState:D(e)})),e.on("resize",this._updateContainerSize),e.on("render",this._updateViewState),e.on("mousedown",this._handleMouseEvent),e.on("dragstart",this._handleMouseEvent),e.on("drag",this._handleMouseEvent),e.on("dragend",this._handleMouseEvent),e.on("mousemove",this._handleMouseEvent),e.on("mouseout",this._handleMouseEvent),e.on("click",this._handleMouseEvent),e.on("dblclick",this._handleMouseEvent),this._updateContainerSize(),o},n._onAddInterleaved=function(e){return this._deck=V({map:e,gl:e.painter.context.gl,deck:new P.Deck(S(S({},this._props),{},{gl:e.painter.context.gl}))}),e.on("styledata",this._handleStyleChange),C(e,this._deck,[],this._props.layers),document.createElement("div")},n.onRemove=function(){var e=this._map;e&&(this._interleaved?this._onRemoveInterleaved(e):this._onRemoveOverlaid(e)),this._deck=void 0,this._map=void 0,this._container=void 0},n._onRemoveOverlaid=function(e){var o;e.off("resize",this._updateContainerSize),e.off("render",this._updateViewState),e.off("mousedown",this._handleMouseEvent),e.off("dragstart",this._handleMouseEvent),e.off("drag",this._handleMouseEvent),e.off("dragend",this._handleMouseEvent),e.off("mousemove",this._handleMouseEvent),e.off("mouseout",this._handleMouseEvent),e.off("click",this._handleMouseEvent),e.off("dblclick",this._handleMouseEvent),(o=this._deck)===null||o===void 0||o.finalize()},n._onRemoveInterleaved=function(e){e.off("styledata",this._handleStyleChange),C(e,this._deck,this._props.layers,[]),$(e)},n.getDefaultPosition=function(){return"top-left"},n.pickObject=function(e){return(0,P.assert)(this._deck),this._deck.pickObject(e)},n.pickMultipleObjects=function(e){return(0,P.assert)(this._deck),this._deck.pickMultipleObjects(e)},n.pickObjects=function(e){return(0,P.assert)(this._deck),this._deck.pickObjects(e)},n.finalize=function(){this._map&&this._map.removeControl(this)},n.getCanvas=function(){return this._map?this._interleaved?this._map.getCanvas():this._deck.getCanvas():null},t}();return Tt(z);})();
|
|
9
9
|
return __exports__;
|
|
10
10
|
});
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@deck.gl/mapbox",
|
|
3
3
|
"description": "Use deck.gl layers as custom mapbox-gl-js layers",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "9.0.0-
|
|
5
|
+
"version": "9.0.0-beta.2",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
8
8
|
},
|
|
@@ -31,11 +31,11 @@
|
|
|
31
31
|
"prepublishOnly": "npm run build-bundle && npm run build-bundle -- --env=dev"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@luma.gl/core": "9.0.0-
|
|
34
|
+
"@luma.gl/core": "9.0.0-beta.1",
|
|
35
35
|
"@math.gl/web-mercator": "^4.0.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@deck.gl/core": "^9.0.0-alpha"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "ed132efaf84a75ea71c89dd8555b6ffc1fe839d5"
|
|
41
41
|
}
|
package/src/deck-utils.ts
CHANGED
package/src/mapbox-layer.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';
|
|
2
2
|
import type {Map, CustomLayerInterface} from 'mapbox-gl';
|
|
3
|
+
import {log} from '@deck.gl/core';
|
|
3
4
|
import type {Deck, Layer} from '@deck.gl/core';
|
|
4
5
|
|
|
5
6
|
export type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {
|
|
@@ -32,7 +33,11 @@ export default class MapboxLayer<LayerT extends Layer> implements CustomLayerInt
|
|
|
32
33
|
|
|
33
34
|
/* Mapbox custom layer methods */
|
|
34
35
|
|
|
35
|
-
onAdd(map: Map, gl: WebGLRenderingContext): void {
|
|
36
|
+
onAdd(map: Map, gl: WebGLRenderingContext | WebGL2RenderingContext): void {
|
|
37
|
+
if (gl instanceof WebGLRenderingContext) {
|
|
38
|
+
log.warn('Use useWebGL2:true in mapboxgl.Map()')();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
36
41
|
this.map = map;
|
|
37
42
|
this.deck = getDeckInstance({map, gl, deck: this.props.deck});
|
|
38
43
|
addLayer(this.deck, this);
|
package/typed/deck-utils.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAiBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"deck-utils.d.ts","sourceRoot":"","sources":["../src/deck-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAoD,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAC,SAAS,EAAE,YAAY,EAAQ,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,WAAW,CAAC;AAiBnC,wBAAgB,eAAe,CAAC,EAC9B,GAAG,EACH,EAAE,EACF,IAAI,EACL,EAAE;IACD,GAAG,EAAE,GAAG,GAAG;QAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAAC,CAAC;IAClC,EAAE,EAAE,sBAAsB,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,GAAG,IAAI,CAiEP;AAeD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CAAC,QAGnE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,aAkBvD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGlE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAGrE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAErE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,CAsB7E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,GAAG;IACrD,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CA6BA"}
|
package/typed/mapbox-layer.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export default class MapboxLayer<LayerT extends Layer> implements CustomLayerInt
|
|
|
13
13
|
deck: Deck | null;
|
|
14
14
|
props: MapboxLayerProps<LayerT>;
|
|
15
15
|
constructor(props: MapboxLayerProps<LayerT>);
|
|
16
|
-
onAdd(map: Map, gl: WebGLRenderingContext): void;
|
|
16
|
+
onAdd(map: Map, gl: WebGLRenderingContext | WebGL2RenderingContext): void;
|
|
17
17
|
onRemove(): void;
|
|
18
18
|
setProps(props: MapboxLayerProps<LayerT>): void;
|
|
19
19
|
render(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapbox-layer.d.ts","sourceRoot":"","sources":["../src/mapbox-layer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"mapbox-layer.d.ts","sourceRoot":"","sources":["../src/mapbox-layer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,GAAG,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAC;AAEzD,OAAO,KAAK,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,gBAAgB,CAAC,MAAM,SAAS,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,WAAW,CAAC,MAAM,SAAS,KAAK,CAAE,YAAW,oBAAoB;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC;IAChB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAGpB,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;IAe3C,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,qBAAqB,GAAG,sBAAsB,GAAG,IAAI;IAUzE,QAAQ,IAAI,IAAI;IAMhB,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC;IASxC,MAAM;CAGP"}
|