Не могу найти решение, как правильно выбрать ближайший город к пользователю из определённого списка.
Например есть 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