У меня есть форма, которая запрашивает список мест (не много, обычно только 3 или 4, но это число является динамическим). Когда форма отправляется, мне приходится анализировать данные, использовать геокодирование Google для получения местоположений, а затем нарисовать линию, соединяющую точки в порядке. У меня работает синтаксический анализ, но я зациклился на части геокодирования, в основном из-за асинхронного характера. Предположим, что мои адресные строки хранятся в адресах массива, это как далеко я получил:
function someFunction(addresses) {
var coords = [];
for(var i = 0; i < addresses.length; i++) {
currAddress = addresses[i];
var geocoder = new google.maps.Geocoder();
if (geocoder) {
geocoder.geocode({'address':currAddress}, function (results, status)
if (status == google.maps.GeocoderStatus.OK) {
coords.push(results[0].geometry.location);
}
else {
throw('No results found: ' + status);
}
});
}
}
// Initially I tried to work with the data here, but it wasn't all present yet.
}
Рисование линии достаточно просто, я сделал это раньше, когда пользователи предоставили географические координаты lat/lng. Моя проблема в том, что координаты добавляются только в обратном вызове, откуда я знаю, когда это делается? Я не могу просто сбросить это в функцию и включить обратный вызов, потому что мне нужно подождать, пока все координаты не будут обработаны.
Я также читал о ком-то, у кого были проблемы с результатами, которые не вернулись в порядок, но я не понял предоставленного ответа. Если у кого-то есть ответ, который может помочь мне с моей конкретной проблемой и гарантировать, что результаты вернутся в порядок, я бы очень признателен.
NB: Я вручную бомбил этот код, поэтому могут быть опечатки. Мой фактический код до сих пор "работает", я просто не знаю, кто должен перейти от того, что мне нужно делать, когда все адреса обрабатываются. Кроме того, в настоящее время он разрабатывается как внутреннее приложение для тестирования. По завершении тестирования он будет полностью соответствовать Google TOS. Это означает, что у меня нет страницы, на которую я могу ссылаться. Вся заявка также содержит более 2000 строк кода и содержит в свое время некоторую проприетарную информацию о компании, которая в конечном итоге будет постепенно отменена, поэтому вставка всего объекта или отправка его невозможна. Надеюсь, это не представляет слишком большой проблемы.