Проблема с геокодом react-yandex-maps
Моя функция, которая по определенным координатам,выдает название адреса,но при каждом клике срабатывает reverse, и поэтому после второго клика по маркеру, он меняет местами данные в геокоде и выдаёт некорректный адрес, как сохранить только первое нажатие на маркер и больше не вызывать данную функцию ?
{state.map((coordinates, idx) =>
<Placemark
onClick = {()=> {
store.writePoint(coordinates);
console.log(coordinates);
}}
key={idx}
geometry={coordinates}
options={{
iconLayout: 'default#image',
iconImageSize: [18, 18],
iconImageHref: pointImg,
}}
/>)
}
async writePoint(coordinates){
const result = []
const res = await fetch(`https://geocode-maps.yandex.ru/1.x/?apikey=${YMAPS_KEY}&format=json&geocode=${coordinates.reverse()}`)
const data = await res.json();
console.log(data)
result.push(data.response.GeoObjectCollection.featureMember[0].GeoObject.name)
console.log(result)
this.data.destination = result
}
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Некорректно составил функцию, нужно было добавить условие с методом every() и в итоге все получилось)
async writePoint(coordinates){
const result = []
const res = await fetch(`https://geocode-maps.yandex.ru/1.x/?apikey=${YMAPS_KEY}&format=json&geocode=${coordinates.reverse()}`)
const data = await res.json();
if (this.data.destination.length !== 0 && this.data.destination.every(() => data.response.GeoObjectCollection.featureMember[0].GeoObject.name))
return
result.push(data.response.GeoObjectCollection.featureMember[0].GeoObject.name)
this.data.destination = result
}