Google geocoder.geocode, mappage de variables asynchrones

voix
0

J'ai la méthode asynchrone géocodage suivante ci-dessous, il fonctionne comme prévu de prendre dans une adresse à partir d'un tableau d'objets personnalisés je, mon problème est la cartographie du résultat à l'objet [i] qui a tiré cette méthode, voir les résultats me donnent seulement de retour une adresse formatée qui diffère de celui que j'inputed, « Google ajoute des codes de la région, les changements à la rue St etc. » quand je reçois ces résultats en arrière, je n'ai aucun moyen de correspondre à la nouvelle Lat et Lng coordonnées j'ai obtenu à chaque objet en raison de la nature asynchrone de cette méthode et les résultats ne sont pas revenus dans l'ordre, Toute idée est ce que je pouvais faire ici?

Merci.

Edit: mes pensées créeraient un moyen d'obtenir les résultats dans l'ordre, changer cela synchrone, je sais pas idéal et je ne peux pas trouver des exemples.

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

                }
            });  
         }  

    }  
}
Créé 06/03/2013 à 12:27
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Jetez un identifiant dans le mélange. Ainsi que le retour des données, retourner l'identifiant ainsi et tieing l'informations se fait et dépoussiéré.

... modifier

Ok, vous faites donc les requêtes à partir d'un tableau d'objets. Est-ce que ce tableau ont des clés d'identité? Si oui, alors ainsi que le retour de latitude et à long retour aussi id.

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

Ou tout id clés que vous utilisez.

Il pourrait être préférable de retourner un tableau (ou un objet tel)

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

Tant que vous connaissez les dossiers les liens i avec vous avez votre point de comparaison.

Je dois admettre, je dois manquer le asynchronoucity (mot?) De votre méthode actuelle.

Créé 06/03/2013 à 12:38
source utilisateur

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