В React-библиотеке react-yandex-maps существует несколько способов отслеживания изменения положения (координат) пина.
1. С помощью стейта компонента. Можно создать состояние в родительском компоненте, которое будет хранить текущие координаты пина:
import React, { useState } from 'react'; import { YMaps, Map, Placemark } from 'react-yandex-maps'; const App = () => { const [coordinates, setCoordinates] = useState([55.751574, 37.573856]); const handlePlacemarkDrag = (e) => { setCoordinates(e.get('target').geometry.getCoordinates()); } return ( <YMaps> <Map defaultState={{ center: coordinates, zoom: 13 }} style={{ width: '100%', height: '400px' }}> <Placemark geometry={coordinates} options={{ draggable: true }} onDragEnd={handlePlacemarkDrag} /> </Map> </YMaps> ); } export default App;
В данном примере мы использовали useState
для хранения текущих координат пина. В обработчике handlePlacemarkDrag
мы обновляем состояние coordinates
при перемещении пина. Это позволит нам отслеживать и использовать новые координаты пина.
2. С использованием колбэков. Библиотека react-yandex-maps позволяет указывать колбэки для различных событий пинов, включая перемещение. Вы можете передать колбэк, который будет вызван при изменении положения пина:
import React from 'react'; import { YMaps, Map, Placemark } from 'react-yandex-maps'; const App = () => { const handlePlacemarkDrag = (e) => { console.log('New coordinates:', e.originalEvent.target.geometry.getCoordinates()); } return ( <YMaps> <Map defaultState={{ center: [55.751574, 37.573856], zoom: 13 }} style={{ width: '100%', height: '400px' }}> <Placemark geometry={[55.751574, 37.573856]} options={{ draggable: true }} onDragEnd={handlePlacemarkDrag} /> </Map> </YMaps> ); } export default App;
В этом примере мы просто выводим новые координаты пина в консоль при каждом перемещении. Вы можете вызвать любую другую функцию или обновить состояние компонента, чтобы отреагировать на изменение положения пина.
Это два наиболее распространенных способа отслеживания изменения положения пина в react-yandex-maps. В зависимости от вашей конкретной задачи и структуры приложения, вы можете выбрать подходящий для вас метод.