Подскажите: у меня есть 8 точек на карте я хочу найти ближайшую точку от нажатия мыши. Вот код.
for (var i = 0; i < Markers.length; i++)
{
var request = {
origin: point1,
destination: Markers[i],
travelMode: 'DRIVING'
};
directionsService.route(request, function (result, status) {
if (status == 'OK') {
distance = parseInt(result.routes[0].legs[0].distance.value);
console.log('in' + distance);
if (distance < maxD) {
maxD = distance;
pointSave = Markers[i];
}
}
});
}
calcRoute(point1, pointSave);
в переменную Point1 автоматически добавляется координаты клика мыши. В Markers массив точек до которых надо построить маршрут. функция CalcRoute строит маршрут.
Ошибки:
1) Почему в блоке кода
` directionsService.route(request, function (result, status) {
if (status == 'OK') {
distance = parseInt(result.routes[0].legs[0].distance.value);
console.log('in' + distance);
if (distance < maxD) {
maxD = distance;
pointSave = Markers[i];
}
}
});`
Точка Marker[i] не видна? вообще не хочет сохранятся . И переменная i там почему-то всегда равна максимальному размеру массива.
2) Так же переменная distance является глобальной. Почему она не сохраняет свое значение после блока directionsService.route
Корень данных проблем кроется в асинхронности вызова замыкания, которое является параметром directionsService.route
.
Это замыкание будет вызвано после выхода из цикла. Соответственно i
будет иметь значение Markers.length
, а Markers[Markers.length]
не существует.
distance
хоть и является глобальной, но получает значения позже чем вызывается calcRoute()
, поэтому вы не видите нужного результата.
См. также ответы на вопросы:
Использование promise с циклом for
Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
То, что C# довольно универсальный язык и так понятноЭто веб, геймдев , мобильная разработка, десктоп приложения, само собой
ЗдравствуйтеНе могу найти информацию, как получить Master Secret из компонентов: Client Random, Server Random, PreMasterSecret
Никак не получается сделать рабочий кодЕсть у меня два экземпляра структуры, и нужно, чтобы исполнялся цикл do while до тех пор, пока counter не будет...
Загуглил самый простой клиент-сервер на сокетах C#Проверил работоспособность кода