diff --git a/src/App.vue b/src/App.vue index a6c8d78..ef9327d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,25 +2,27 @@ import 'leaflet/dist/leaflet.css' import 'vue-leaflet-markercluster/dist/style.css' -import L, { type PointTuple } from 'leaflet' +import L from 'leaflet' globalThis.L = L import { LMap, LTileLayer, LControlZoom, LLayerGroup } from '@vue-leaflet/vue-leaflet' import { LMarkerClusterGroup } from 'vue-leaflet-markercluster' -import { ref } from 'vue' -import ReviewMarker from './components/ReviewMarker.vue' -import TokenMarker from './components/TokenMarker.vue' +import ReviewMarker from './components/map/ReviewMarker.vue' +import TokenMarker from './components/map/TokenMarker.vue' +import { storeToRefs } from 'pinia' import { useReviewStore } from './stores/reviews' import { useParisTokensStore } from './stores/parisTokens' +import { useMap } from './stores/map' +import MapSidebar from './components/map/MapSidebar.vue' -const zoom = ref(7) -const minZoom = 4 -const center = ref([47.809376, -0.637207]) +const { zoom, minZoom, center } = useMap() const { markers: reviews } = useReviewStore() const { markers: parisTokens } = useParisTokensStore() + +const { activeLayers } = storeToRefs(useMap()) diff --git a/src/components/ReviewMarker.vue b/src/components/map/ReviewMarker.vue similarity index 100% rename from src/components/ReviewMarker.vue rename to src/components/map/ReviewMarker.vue diff --git a/src/components/TokenMarker.vue b/src/components/map/TokenMarker.vue similarity index 100% rename from src/components/TokenMarker.vue rename to src/components/map/TokenMarker.vue diff --git a/src/stores/map.ts b/src/stores/map.ts new file mode 100644 index 0000000..1f20085 --- /dev/null +++ b/src/stores/map.ts @@ -0,0 +1,21 @@ +import type { PointTuple } from 'leaflet' +import { defineStore } from 'pinia' +import { ref } from 'vue' + +export const useMap = defineStore('map', () => { + const zoom = ref(7) + const minZoom = 4 + const center = ref([47.809376, -0.637207]) + + const activeLayers = ref({ + tokens: false, + food: true, + }) + + return { + zoom, + minZoom, + center, + activeLayers + } +})