У меня есть форма, которая запрашивает список мест (не много, обычно только 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.
}
Рисовать линию достаточно просто, я делал это раньше, когда пользователи указывали географические координаты широты и долготы. Моя проблема в том, что, поскольку координаты добавляются только в обратном вызове, как я узнаю, когда это будет сделано? Я не могу просто выбросить это в функцию и вставить обратный вызов, потому что мне нужно подождать, пока все координаты не будут обработаны.
Я также читал о ком-то, у кого были проблемы с результатами, не возвращающимися в порядок, но я не понял предоставленный ответ. Если у кого-то есть ответ, который может помочь мне с моей конкретной проблемой и обеспечить возвращение результатов в порядок, я был бы очень признателен.
NB. Я бомбил этот код вручную, поэтому возможны опечатки Мой реальный код до сих пор «работает», я просто не знаю, от кого перейти, что я должен делать, когда все адреса обработаны. Кроме того, это в настоящее время разрабатывается как внутреннее приложение для тестирования. Как только тестирование будет завершено, оно будет полностью соответствовать Условиям использования Google. Это означает, что у меня нет страницы, на которую я могу сослаться. Все приложение также содержит более 2000 строк кода и на данный момент содержит некоторую частную информацию о компании, которая, в конечном итоге, будет постепенно исключена, поэтому вставка всего объекта или его рассылка невозможны. Я надеюсь, что это не слишком большая проблема.