diff --git a/src/map-renderer.ts b/src/map-renderer.ts index 9a2dcc1..f6302d2 100644 --- a/src/map-renderer.ts +++ b/src/map-renderer.ts @@ -382,18 +382,28 @@ export async function createMapRenderer(config: MapRendererOptions): Promise 0) { + const bounds = calculateBounds(points, containerEl); + initialViewState = { + ...bounds, pitch: 0, bearing: 0, }; } else { - const bounds = calculateBounds(points, containerEl); initialViewState = { - ...bounds, + longitude: 0, + latitude: 0, + zoom: 2, pitch: 0, bearing: 0, }; @@ -402,6 +412,7 @@ export async function createMapRenderer(config: MapRendererOptions): Promise { const thisUpdateId = ++tooltipUpdateId; @@ -496,10 +507,11 @@ export async function createMapRenderer(config: MapRendererOptions): Promise { - if (options.onTilesLoaded) { + if (options.onTilesLoaded && !tilesLoadedCalled) { + tilesLoadedCalled = true; setTimeout(() => { options.onTilesLoaded?.(); - }, 100); + }, 200); } }, getCursor: () => currentCursor, diff --git a/src/views/map-bases-view.ts b/src/views/map-bases-view.ts index 95b0e9d..343113f 100644 --- a/src/views/map-bases-view.ts +++ b/src/views/map-bases-view.ts @@ -211,6 +211,21 @@ export class MapBasesView extends BasesView { }, 300); }; + const hasConfiguredCenter = this.center[0] !== 0 || this.center[1] !== 0; + let centerToUse: [number, number]; + let zoomToUse: number; + + if (hasConfiguredCenter) { + centerToUse = this.center; + zoomToUse = this.defaultZoom; + } else if (this.savedViewState) { + centerToUse = [this.savedViewState.latitude, this.savedViewState.longitude]; + zoomToUse = this.savedViewState.zoom; + } else { + centerToUse = this.center; + zoomToUse = this.defaultZoom; + } + this.deck = await createMapRenderer({ containerEl: this.mapEl, points, @@ -218,8 +233,8 @@ export class MapBasesView extends BasesView { settings: settings, tagSettings: tagSettings, options: { - center: this.savedViewState ? [this.savedViewState.latitude, this.savedViewState.longitude] : this.center, - zoom: this.savedViewState ? this.savedViewState.zoom : this.defaultZoom, + center: centerToUse, + zoom: zoomToUse, height: height, markerType: this.markerType, tileLayer: this.tileLayer, @@ -256,7 +271,6 @@ export class MapBasesView extends BasesView { const points = this.extractPointsFromData(); - // If center coordinates are configured, use them instead of auto-centering const hasConfiguredCenter = this.center[0] !== 0 || this.center[1] !== 0; updateMapPoints(this.deck, points, {