Files
SIB/frontend/src/stores/map.ts

44 lines
976 B
TypeScript

/** Pinia store for map state */
import { defineStore } from 'pinia'
import { ref } from 'vue'
import type { BusStop } from '@/types'
export const useMapStore = defineStore('map', () => {
const markers = ref<BusStop[]>([])
const selectedStop = ref<BusStop | null>(null)
const center = ref({ lat: 8.4177, lng: -82.4270 }) // Panama coordinates (David/Boquete area)
const zoom = ref(12)
function setMarkers(stops: BusStop[]) {
markers.value = stops
}
function setSelectedStop(stop: BusStop | null) {
selectedStop.value = stop
}
function setCenter(lat: number, lng: number) {
center.value = { lat, lng }
}
function setZoom(level: number) {
zoom.value = level
}
return {
markers,
selectedStop,
center,
zoom,
setMarkers,
setSelectedStop,
setCenter,
setZoom,
}
}, {
persist: {
pick: ['center', 'zoom']
}
})