Google geocoder.geocode асинхронные переменного отображения

голоса
0

У меня есть следующий геокодирования асинхронного метод, приведенный ниже, она работает, как ожидается, принимая в адрес из массива пользовательских объектов у меня есть, моя проблема заключается в отображении результата обратно в объект [я], что выпустило этот метод, увидеть результаты дают мне только назад форматированный адрес, который отличается от я занесен, «Google добавляет некоторые коды зон, изменения St на улицу и т.д.» поэтому, когда я получаю эти результаты обратно у меня нет никакого способа, чтобы соответствовать новому Lat и ДЛНЫ координаты я получил к каждому объекту из-за асинхронную природу этого метода и результатов не возвращается в порядке, Любая идея, что я мог сделать здесь?

Благодарю.

Edit: мои мысли были бы создать способ получить результаты обратно в порядке, изменить это Синхронный, не идеал я знаю, и я не могу найти ни одного примера.

Функция iterateAndAddress (objArray) {

    for(var i=0; i< objArray.length; i++) {

        var address = objArray[i].BillingStreet +' '+objArray[i].BillingCity+' '+objArray[i].BillingCountry;
        var geocoder = new google.maps.Geocoder();
        console.log('Address = '+address);

        if(geocoder) {
            geocoder.geocode( { 'address': address}, function(results, status) { 

                if (status == google.maps.GeocoderStatus.OK) {

                    //console.log(results);
                    var lat = results[0].geometry.location.lat();
                    var lon = results[0].geometry.location.lng();  
                    console.log('Address : '+results[0].formatted_address);


                }else if(status == 'OVER_QUERY_LIMIT') {

                }
                else{

                }
            });  
         }  

    }  
}
Задан 06/03/2013 в 12:27
источник пользователем
На других языках...                            


1 ответов

голоса
0

Бросьте идентификатор в миксе. А также возвращают данные, возвращает идентификатор, а также и завязывание копирования информации делаются и запыленной.

... редактировать

Итак, вы делаете запросы из массива объектов. Есть ли что массив ключей ID? Если да, то как и возвращение широты и долго и возвращает идентификатор.

var id = objArray[i].id
var lat = results[0].geometry.location.lat();
var lon = results[0].geometry.location.lng();

Или что ключи идентификатора вы используете.

Это могло бы быть лучше, чтобы вернуть массив (или объект, такой как)

result[i].lat = results[0].geometry.location.lat();
result[i].lon = results[0].geometry.location.lng();

До тех пор, как вы знаете, Акты двутавровых связь с то у вас есть точка сравнения.

Я должен признать, что я должен быть отсутствую asynchronoucity (слово?) Ваш текущий метод.

Ответил 06/03/2013 в 12:38
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more