diff --git a/src/components/BikeFilters.vue b/src/components/BikeFilters.vue index 6c97629..d2e0b65 100644 --- a/src/components/BikeFilters.vue +++ b/src/components/BikeFilters.vue @@ -1,21 +1,72 @@ diff --git a/src/components/BikeMap.vue b/src/components/BikeMap.vue index 9e3758e..a4dfdee 100644 --- a/src/components/BikeMap.vue +++ b/src/components/BikeMap.vue @@ -2,7 +2,7 @@ import 'leaflet/dist/leaflet.css' import 'vue-leaflet-markercluster/dist/style.css' -import L from 'leaflet' +import L, { Map } from 'leaflet' globalThis.L = L import { useMap } from '@/stores/map' @@ -10,13 +10,17 @@ 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 { computed, ref, useTemplateRef } from 'vue' import { storeToRefs } from 'pinia' import BikeClusterLayer from './BikeClusterLayer.vue' -import { PhCircleNotch } from '@phosphor-icons/vue' +import { PhCircleNotch, PhMapPin } from '@phosphor-icons/vue' +// Map setup +const mapRef = useTemplateRef<{ leafletObject: Map }>('map') + +// Data fetching const fetchedPages = ref(0) const totalPages = ref(1) const progress = computed(() => Math.round((fetchedPages.value / totalPages.value) * 100)) @@ -78,13 +82,22 @@ const premiumParkingsSpots = computed(() => const { zoom, minZoom, center, maxBounds, maxBoundsViscosity, maxClusterRadius, disableClusteringAtZoom, extraOptions } = useMap() const { filterUncovered, filterCovered, filterKorrigo } = storeToRefs(useMap()) + +// Geolocation +const { userCoords } = storeToRefs(useMap()) + +function handleClickGeoloc() { + if (userCoords.value) { + mapRef.value?.leafletObject.flyTo([userCoords.value.latitude, userCoords.value.longitude], 12) + } +}