From 2b1ed5c09e08662bc2501d119d431a732cb732a9 Mon Sep 17 00:00:00 2001 From: Alexis Date: Mon, 6 Apr 2026 22:26:51 +0200 Subject: [PATCH 1/3] Added geoloc button to filters --- src/components/BikeFilters.vue | 57 +++++++++++++++++++++++++++++++--- src/stores/map.ts | 9 +++++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/src/components/BikeFilters.vue b/src/components/BikeFilters.vue index 6c97629..1710d3a 100644 --- a/src/components/BikeFilters.vue +++ b/src/components/BikeFilters.vue @@ -1,21 +1,68 @@ diff --git a/src/stores/map.ts b/src/stores/map.ts index 082836b..4a6fde7 100644 --- a/src/stores/map.ts +++ b/src/stores/map.ts @@ -6,6 +6,7 @@ export const SPOTS_MIN = 1 export const SPOTS_MAX = 99 export const useMap = defineStore('map', () => { + // Map config and options const zoom = ref(10) const minZoom = 8 const center = ref([48.11180645878813, -1.6637869497745246]) @@ -18,9 +19,14 @@ export const useMap = defineStore('map', () => { zoomControl: false, } + // Cluster layers options const maxClusterRadius = 40 const disableClusteringAtZoom = 17 + // Geolocation + const userCoords = ref | null>(null) + + // Active filters const filterUncovered = ref(true) const filterCovered = ref(true) const filterKorrigo = ref(true) @@ -36,9 +42,10 @@ export const useMap = defineStore('map', () => { center, maxBounds, maxBoundsViscosity, + extraOptions, maxClusterRadius, disableClusteringAtZoom, - extraOptions, + userCoords, filterUncovered, filterCovered, filterKorrigo, From a6a5fe892d6aa6d22c6a2355566e293171f2fcd0 Mon Sep 17 00:00:00 2001 From: Alexis Date: Fri, 10 Apr 2026 21:06:18 +0200 Subject: [PATCH 2/3] Added geoloc marker to map --- src/components/BikeFilters.vue | 1 + src/components/BikeMap.vue | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/BikeFilters.vue b/src/components/BikeFilters.vue index 1710d3a..4c6cbcf 100644 --- a/src/components/BikeFilters.vue +++ b/src/components/BikeFilters.vue @@ -15,6 +15,7 @@ defineProps<{ nbKorrigo?: number }>() +// Geolocation features const { coords, error, resume, pause, locatedAt } = useGeolocation({ immediate: false }) const geolocationPermission = usePermission('geolocation') diff --git a/src/components/BikeMap.vue b/src/components/BikeMap.vue index 9e3758e..06d768b 100644 --- a/src/components/BikeMap.vue +++ b/src/components/BikeMap.vue @@ -10,12 +10,12 @@ import type { ApiResponse } from '@/types/Api' import type { BikeParking } from '@/types/Bikes' import { API_BASE_URL, API_LIMIT, MAP_TILELAYER_URL, SpotAccess, SpotType } from '@/utils/const' import { useQuery } from '@pinia/colada' -import { LControlZoom, LMap, LTileLayer } from '@vue-leaflet/vue-leaflet' +import { LControlZoom, LIcon, LMap, LMarker, LTileLayer } from '@vue-leaflet/vue-leaflet' import BikeFilters from './BikeFilters.vue' import { computed, ref } from 'vue' import { storeToRefs } from 'pinia' import BikeClusterLayer from './BikeClusterLayer.vue' -import { PhCircleNotch } from '@phosphor-icons/vue' +import { PhCircleNotch, PhMapPin } from '@phosphor-icons/vue' const fetchedPages = ref(0) const totalPages = ref(1) @@ -78,6 +78,9 @@ const premiumParkingsSpots = computed(() => const { zoom, minZoom, center, maxBounds, maxBoundsViscosity, maxClusterRadius, disableClusteringAtZoom, extraOptions } = useMap() const { filterUncovered, filterCovered, filterKorrigo } = storeToRefs(useMap()) + +// Geolocation +const { userCoords } = storeToRefs(useMap())