From 2e49a545c829cbbd07e8e0f4e19efdd1494a8fe8 Mon Sep 17 00:00:00 2001 From: Xiaoji Chen Date: Thu, 21 Apr 2022 11:58:22 -0700 Subject: [PATCH] More robust add/remove condition checks (#1840) --- examples/terrain/src/app.tsx | 1 + src/components/layer.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/terrain/src/app.tsx b/examples/terrain/src/app.tsx index ce1eeb05..e1cb360c 100644 --- a/examples/terrain/src/app.tsx +++ b/examples/terrain/src/app.tsx @@ -29,6 +29,7 @@ export default function App() { bearing: 80, pitch: 80 }} + maxPitch={85} mapStyle="mapbox://styles/mapbox/satellite-v9" mapboxAccessToken={TOKEN} terrain={{source: 'mapbox-dem', exaggeration: 1.5}} diff --git a/src/components/layer.ts b/src/components/layer.ts index 58c0666e..5c17c224 100644 --- a/src/components/layer.ts +++ b/src/components/layer.ts @@ -61,7 +61,7 @@ function updateLayer(map: MapboxMap, id: string, props: LayerProps, prevProps: L function createLayer(map: MapboxMap, id: string, props: LayerProps) { // @ts-ignore - if (map.style && map.style._loaded && map.getSource(props.source)) { + if (map.style && map.style._loaded && (!('source' in props) || map.getSource(props.source))) { const options: LayerProps = {...props, id}; delete options.beforeId; @@ -90,7 +90,7 @@ function Layer(props: LayerProps) { return () => { map.off('styledata', forceUpdate); // @ts-ignore - if (map.style && map.style._loaded) { + if (map.style && map.style._loaded && map.getLayer(id)) { map.removeLayer(id); } };