From fb48042b629dfe924ea23c74869a5cd33896f504 Mon Sep 17 00:00:00 2001 From: evlist Date: Sat, 15 Oct 2022 20:47:31 +0200 Subject: [PATCH] The initial zoom level should be the one for the medium layer. --- .../components/map/TiledLayersConductor.tsx | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/svgmap/src/components/map/TiledLayersConductor.tsx b/svgmap/src/components/map/TiledLayersConductor.tsx index 51d88f8..c7548c6 100644 --- a/svgmap/src/components/map/TiledLayersConductor.tsx +++ b/svgmap/src/components/map/TiledLayersConductor.tsx @@ -20,9 +20,6 @@ interface TiledLayerConductorProperties { const TiledLayerConductor: react.FC = ( props: TiledLayerConductorProperties ) => { - const nbTiles = - Math.ceil((Math.max(props.width, props.height) * 2) / 256) + 2; - const numberOfZoomLevels = props.numberOfZoomLevels === undefined ? 1 @@ -31,25 +28,34 @@ const TiledLayerConductor: react.FC = ( : props.numberOfZoomLevels; const layers = []; + + const safetyZoomLevels = Math.floor(numberOfZoomLevels / 2); + + const nbTiles = + Math.ceil( + (Math.max(props.width, props.height) * 2 ** safetyZoomLevels) / 256 + ) + 2; + const activeZoomLevel = Math.min( - Math.max(Math.round(Math.log2(props.zoom)), 0), + Math.max(Math.round(Math.log2(props.zoom)) + safetyZoomLevels, 0), numberOfZoomLevels - 1 ); const getTiledLayer = (zoomLevel: number, isActive: boolean) => { + const zoom = 2 ** (zoomLevel - safetyZoomLevels); return ( );