55import { Deck , MapView , _GlobeView as GlobeView , _flatten as flatten } from '@deck.gl/core' ;
66import type { Viewport , MapViewState , Layer } from '@deck.gl/core' ;
77import type { Parameters } from '@luma.gl/core' ;
8- import type MapboxLayer from './mapbox-layer' ;
98import type MapboxLayerGroup from './mapbox-layer-group' ;
109import type { LayerOverlayProps , Map } from './types' ;
1110
@@ -15,8 +14,6 @@ const MAPBOX_VIEW_ID = 'mapbox';
1514
1615type UserData = {
1716 currentViewport ?: Viewport | null ;
18- mapboxLayers : Set < MapboxLayer < any > > ;
19- // mapboxVersion: {minor: number; major: number};
2017} ;
2118
2219// Mercator constants
@@ -72,7 +69,6 @@ export function getDeckInstance({
7269
7370 deck . setProps ( deckProps ) ;
7471
75- ( deck . userData as UserData ) . mapboxLayers = new Set ( ) ;
7672 map . __deck = deck ;
7773 map . on ( 'render' , ( ) => {
7874 if ( deck . isInitialized ) afterRender ( deck , map ) ;
@@ -120,14 +116,6 @@ export function getDefaultParameters(map: Map, interleaved: boolean): Parameters
120116 return result ;
121117}
122118
123- export function addLayer ( deck : Deck , layer : MapboxLayer < any > ) : void {
124- ( deck . userData as UserData ) . mapboxLayers . add ( layer ) ;
125- }
126-
127- export function removeLayer ( deck : Deck , layer : MapboxLayer < any > ) : void {
128- ( deck . userData as UserData ) . mapboxLayers . delete ( layer ) ;
129- }
130-
131119export function drawLayer (
132120 deck : Deck ,
133121 map : Map ,
@@ -344,12 +332,9 @@ function getViewport(deck: Deck, map: Map, renderParameters?: unknown): Viewport
344332}
345333
346334function afterRender ( deck : Deck , map : Map ) : void {
347- const { mapboxLayers} = deck . userData as UserData ;
348-
349- // Draw non-Mapbox layers
350- const mapboxLayerIds = Array . from ( mapboxLayers , layer => layer . id ) ;
335+ // Draw non-Mapbox layers (layers that don't have a corresponding MapboxLayer on the map)
351336 const deckLayers = flatten ( deck . props . layers , Boolean ) as Layer [ ] ;
352- const hasNonMapboxLayers = deckLayers . some ( layer => layer && ! mapboxLayerIds . includes ( layer . id ) ) ;
337+ const hasNonMapboxLayers = deckLayers . some ( layer => layer && ! map . getLayer ( layer . id ) ) ;
353338 let viewports = deck . getViewports ( ) ;
354339 const mapboxViewportIdx = viewports . findIndex ( vp => vp . id === MAPBOX_VIEW_ID ) ;
355340 const hasNonMapboxViews = viewports . length > 1 || mapboxViewportIdx < 0 ;
@@ -364,7 +349,7 @@ function afterRender(deck: Deck, map: Map): void {
364349 viewports,
365350 layerFilter : params =>
366351 ( ! deck . props . layerFilter || deck . props . layerFilter ( params ) ) &&
367- ( params . viewport . id !== MAPBOX_VIEW_ID || ! mapboxLayerIds . includes ( params . layer . id ) ) ,
352+ ( params . viewport . id !== MAPBOX_VIEW_ID || ! map . getLayer ( params . layer . id ) ) ,
368353 clearCanvas : false
369354 } ) ;
370355 }
0 commit comments