diff --git a/components/PvzMap.vue b/components/PvzMap.vue index 2fd3aa1..b80d5a0 100644 --- a/components/PvzMap.vue +++ b/components/PvzMap.vue @@ -21,6 +21,7 @@ const token = '13f4c06b-cb7e-4eeb-81f1-af52f12587b2' const mapContainer = ref(null) const { coords } = useGeolocation() const coordsReady = ref(false) +const mapInstance = ref(null) const initMap = async (lat: number, lon: number) => { if (!window.ymaps) { @@ -38,6 +39,7 @@ const initMap = async (lat: number, lon: number) => { zoom: 10, controls: ['zoomControl'], }) + mapInstance.value = map props.pickupPoints.forEach((point) => { const placemark = new window.ymaps.Placemark( @@ -53,6 +55,15 @@ const initMap = async (lat: number, lon: number) => { }) } +const centerMap = (lat: number, lon: number) => { + if (!mapInstance.value) + return + + mapInstance.value.setCenter([lat, lon], 18) +} + +defineExpose({ centerMap }) + watch( () => coords.value, async (val) => { diff --git a/pages/order/delivery.vue b/pages/order/delivery.vue index bc13001..6e94a27 100644 --- a/pages/order/delivery.vue +++ b/pages/order/delivery.vue @@ -1,6 +1,19 @@ @@ -8,9 +21,46 @@ import { ref } from 'vue' import PvzMap from '~/components/PvzMap.vue' -const pickupPoints = ref([]) - const { data } = useFetch('/api/yandex') -pickupPoints.value = data.value?.points -console.log(pickupPoints?.value) + +const mapRef = ref | null>(null) + +const onPickupClick = (point: any) => { + const lat = point?.position?.latitude + const lon = point?.position?.longitude + if (typeof lat === 'number' && typeof lon === 'number') { + mapRef.value?.centerMap(lat, lon) + } +} + +