Задать вопрос
pulman
@pulman

Можно ли в API Яндекс.Карты выбрать ближайший город к пользователю из списка?

Не могу найти решение, как правильно выбрать ближайший город к пользователю из определённого списка.
Например есть 3 города доставки товара: Москва, Ростов-на-Дону, Сочи, сам пользователю, допустим находится ближе к Ростову. Можно ли через API определить ближайший город из списка?
В данный момент использую банальное решение: запрашиваю позицию клиента и циклом запрашиваю расстояние до городов, записываю всё в массив и затем сортирую по возрастанию.
В целом метод работает, но к сожалению большая задержка при использовании цикла и сортировка, по какой-то причине, работает через раз, да и выводить приходится с задержкой иначе скрипт не успевает отработать.

let cities = {
    city1:{
    	name: "Санкт-Петербург",
    	feet: 0
    },
    city2:{
		name: "Москва",
    	feet: 0
    },
    city3:{
		name: "Ростов-На-Дону",
    	feet: 0
    },
    city4:{
		name: "Сочи",
    	feet: 0
    }
}

let dist = [];

ymaps.ready(function(){
	ymaps.geolocation.get({ autoReverseGeocode: true }).then(function (result) {
		
		let startPoint = result.geoObjects.get(0).properties.get('description').split(re).pop();

		$.each(cities,function(i,e){
			endPoint = e.name;
			ymaps.route([startPoint, endPoint]).then(function(route){
				distance = route.getHumanLength();
				dist[e.name] = parseInt(distance.replace(" км",""),10);
			});
		});
	});
});

console.log(dist);

Версия API - 2.1
  • Вопрос задан
  • 255 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
по х и y они же lat и lng - https://on55.ru/articles/2
Ответ написан
freeExec
@freeExec
Участник OpenStreetMap
Забейте координаты уже в коде и не используйте роутинг. Вам для такой грубой оценки хватит разности долготы и широты у координат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы