Google geocoder.geocode, asynkron variabel mapping

stemmer
0

Jeg har følgende geokode asynkron metode brøl, det fungerer som forventet tatt i en tale fra en egendefinert objekt Array jeg har, mitt problem er kartlegging av resultatet tilbake til objekt [i] at sparken som metode, se resultatene bare gi meg tilbake en formatert adresse som er forskjellig fra den jeg sent inn, Google legger til noen retningsnumre, endrer St til street etc. så når jeg får disse resultatene tilbake jeg har ingen mulighet til å matche den nye Lat og Lng koordinerer jeg har fått på hvert objekt på grunn av den asynkrone natur av denne metoden, og resultatene ikke returnerer i orden, Noen ide hva jeg kan gjøre her?

Takk.

Edit: mine tanker ville være å skape en måte å få de resultatene tilbake i rekkefølge, endre dette til Synkron, ikke ideelt jeg vet, og jeg kan ikke finne noen eksempler.

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

                }
            });  
         }  

    }  
}
Publisert på 06/03/2013 klokken 11:27
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Kast en id inn i miksen. I tillegg til å returnere data, returnere id også, og tieing opp informasjonen er gjort og støvet.

... redigere

Ok, så du gjør forespørsler fra et objekt array. Betyr denne matrisen har id nøklene? Hvis ja, så samt retur lat og lang også returnere id.

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

Eller hva id taster du bruker.

Det kan være bedre å returnere en matrise (eller en gjenstand såsom)

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

Så lenge du vet postene I-bånd opp med så har du din sammenligning punkt.

Jeg må innrømme, jeg må være mangler asynchronoucity (ord?) Av din nåværende metode.

Svarte 06/03/2013 kl. 11:38
kilden bruker

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