Google geocoder.geocode, asignación de variables asíncrono

votos
0

Tengo el siguiente código geográfico asíncrono método de abajo, que funciona como se espera tomar en una dirección de un array de objetos personalizado que tengo, mi problema es el mapeo de los resultados de vuelta a [I] objeto que disparó ese método, ver los resultados sólo me dan la espalda una dirección con el formato que difiere de la que aparece en el formulario, Google añade algunos códigos de área, cambios en el ST a la calle, etc. así que cuando llegue a estos resultados de nuevo no tengo manera para que coincida con el nuevo Lat y Lng coordenadas he llegado a cada objeto debido a la naturaleza asíncrona de este método y los resultados no devuelven el fin, ¿Alguna idea de lo que podía hacer aquí?

Gracias.

Editar: mis pensamientos estarían creando una manera de conseguir los resultados en orden, esto cambie a síncrono, no es ideal que sé y no puedo encontrar ningún ejemplo.

función 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{

                }
            });  
         }  

    }  
}
Publicado el 06/03/2013 a las 12:27
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Lanzar un id en la mezcla. Así como la devolución de los datos, devuelve el ID, así y anudar la información que se hace y espolvoreado.

... editar

Ok, por lo que están haciendo las peticiones de una matriz de objetos. No tiene esa matriz claves de identificación? Si es así, a continuación, así como devolver lat y largo también devolver la ID.

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

O lo que sea teclas Identificación del que está utilizando.

Puede ser que sea mejor para devolver una matriz (o un objeto tal como)

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

Como siempre que se sepa los registros de los lazos con i entonces usted tiene su punto de comparación.

Debo admitir, debo estar perdiendo el asynchronoucity (palabra?) De su método actual.

Respondida el 06/03/2013 a las 12:38
fuente por usuario

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