From 86e3f101f6c662b90ad18e15568be3442672ccb8 Mon Sep 17 00:00:00 2001 From: Alexis Date: Wed, 24 Dec 2025 22:10:19 +0100 Subject: [PATCH] Added layer controls --- src/App.vue | 24 +++++--- src/assets/main.css | 20 ++++++ src/components/map/MapSidebar.vue | 74 +++++++++++++++++++++++ src/components/{ => map}/ReviewMarker.vue | 0 src/components/{ => map}/TokenMarker.vue | 0 src/stores/map.ts | 21 +++++++ 6 files changed, 130 insertions(+), 9 deletions(-) create mode 100644 src/components/map/MapSidebar.vue rename src/components/{ => map}/ReviewMarker.vue (100%) rename src/components/{ => map}/TokenMarker.vue (100%) create mode 100644 src/stores/map.ts 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 + } +})