wxbox/wxbox-web/src/lib/map/sync.svelte.ts

61 lines
1.8 KiB
TypeScript

import type { Map as LMap } from 'leaflet';
import type { View } from '$lib/map';
export function syncMaps(
view: View,
map1: LMap | null,
map2: LMap | null,
map3: LMap | null,
map4: LMap | null
) {
// resize the shown maps
if (view === 'one' && map1) {
map1.invalidateSize();
} else if (view === 'two') {
if (map1) map1.invalidateSize();
if (map2) map2.invalidateSize();
} else if (view === 'four') {
if (map1) map1.invalidateSize();
if (map2) map2.invalidateSize();
if (map3) map3.invalidateSize();
if (map4) map4.invalidateSize();
}
if (map1 && map2) {
map2.setView(map1.getCenter(), map1.getZoom());
// @ts-expect-error leaflet.sync does not provide typedefs
map1.sync(map2);
}
if (map1 && map3) {
map3.setView(map1.getCenter(), map1.getZoom());
// @ts-expect-error leaflet.sync does not provide typedefs
map1.sync(map3);
}
if (map1 && map4) {
map4.setView(map1.getCenter(), map1.getZoom());
// @ts-expect-error leaflet.sync does not provide typedefs
map1.sync(map4);
}
// @ts-expect-error leaflet.sync does not provide typedefs
if (map2 && map1) map2.sync(map1);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map2 && map3) map2.sync(map3);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map2 && map4) map2.sync(map4);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map3 && map1) map3.sync(map1);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map3 && map2) map3.sync(map2);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map3 && map4) map3.sync(map4);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map4 && map1) map4.sync(map1);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map4 && map2) map4.sync(map2);
// @ts-expect-error leaflet.sync does not provide typedefs
if (map4 && map3) map4.sync(map3);
}