diff --git a/src/public/app/widgets/geo_map.ts b/src/public/app/widgets/geo_map.ts index 990b34b6c..e0dc14aed 100644 --- a/src/public/app/widgets/geo_map.ts +++ b/src/public/app/widgets/geo_map.ts @@ -39,7 +39,6 @@ export default class GeoMapWidget extends NoteContextAwareWidget { }); - map.setView([51.505, -0.09], 13); this.map = map; if (this.initCallback) { this.initCallback(); diff --git a/src/public/app/widgets/type_widgets/geo_map.ts b/src/public/app/widgets/type_widgets/geo_map.ts index f619b01c8..20bf81d6b 100644 --- a/src/public/app/widgets/type_widgets/geo_map.ts +++ b/src/public/app/widgets/type_widgets/geo_map.ts @@ -1,9 +1,16 @@ +import type { LatLng } from "leaflet"; import type FNote from "../../entities/fnote.js"; import GeoMapWidget from "../geo_map.js"; import TypeWidget from "./type_widget.js" const TPL = `
`; +interface MapData { + view?: { + center: LatLng | [ number, number ]; + } +} + export default class GeoMapTypeWidget extends TypeWidget { private geoMapWidget: GeoMapWidget; @@ -27,8 +34,23 @@ export default class GeoMapTypeWidget extends TypeWidget { super.doRender(); } - #onMapInitialized() { - this.geoMapWidget.map?.on("moveend", () => this.spacedUpdate.scheduleUpdate()); + async #onMapInitialized() { + const map = this.geoMapWidget.map; + if (!map) { + throw new Error("Unable to load map."); + } + + const blob = await this.note?.getBlob(); + + let parsedContent: MapData = {}; + if (blob) { + parsedContent = JSON.parse(blob.content); + } + console.log(parsedContent); + const center = parsedContent.view?.center ?? [51.505, -0.09]; + + map.setView(center, 13); + map.on("moveend", () => this.spacedUpdate.scheduleUpdate()); } getData(): any { @@ -37,7 +59,7 @@ export default class GeoMapTypeWidget extends TypeWidget { return; } - const data = { + const data: MapData = { view: { center: map.getBounds().getCenter() }