Google geocoder.geocode, mappatura variabile asincrona

voti
0

Ho il seguente geocodifica asincrono metodo soffietto, funziona come ci si aspetta di prendere in un indirizzo da un array oggetto personalizzato che ho, il mio problema è la mappatura del risultato ritorno all'oggetto [i] che ha attivato tale metodo, vedere i risultati solo restituirmi un indirizzo formattato che differisce da quella che ho inputed, Google aggiunge alcune prefissi, cambia St per strada, ecc così quando ottengo questi risultati indietro non ho modo che corrisponda alla nuova Lat e coordina Lng ho ottenuto ad ogni oggetto a causa della natura asincrona di questo metodo ed i risultati non restituiscono in ordine, Qualsiasi idea di quello che avrei potuto fare qui?

Grazie.

Edit: il mio pensiero sarebbe la creazione di un modo per ottenere i risultati in ordine, cambiare questo a sincrono, non è l'ideale lo so e non riesco a trovare alcun esempio.

Funzione 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{

                }
            });  
         }  

    }  
}
È pubblicato 06/03/2013 alle 12:27
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Gettare un id nel mix. Così come restituire i dati, restituire l'id come bene e tieing backup delle informazioni è fatto e spolverato.

... modificare

Ok, quindi si stanno facendo le richieste da una matrice di oggetti. Ha tale matrice hanno le chiavi id? Se è così, così come il ritorno lat e lungo anche restituire l'id.

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

O qualunque chiavi id che si sta utilizzando.

Potrebbe essere meglio per restituire una matrice (o un oggetto come ad esempio)

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

Finché si conoscono i record i legami con i allora hai il tuo punto di confronto.

Devo ammettere, Devo mancare l'asynchronoucity (parola?) Del metodo corrente.

Risposto il 06/03/2013 a 12:38
fonte dall'utente

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