From 9f2a6e5dd2cd575ced2d3980dba0c9cf59fc29c8 Mon Sep 17 00:00:00 2001 From: alsaze Date: Wed, 15 Oct 2025 17:01:37 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BA=D0=B0=D1=80=D1=82=D0=B0=20=D0=9F=D0=92?= =?UTF-8?q?=D0=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/PvzMap.vue | 11 +++++++ pages/order/delivery.vue | 62 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 67 insertions(+), 6 deletions(-) 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) + } +} + +