45 votes

Obtenir la ville à partir des résultats du géocodeur ?

Avoir des problèmes pour obtenir le contenu des différents tableaux à partir des résultats du géocodeur.

item.formatted_address fonctionne mais pas item.address_components.locality?

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

        response($.map(results, function(item) {

        alert(item.formatted_address+" "+item.address_components.locality)
    }            
}); 

// le tableau renvoyé est;

 "results" : [
      {
         "address_components" : [
            {
               "long_name" : "London",
               "short_name" : "London",
               "types" : [ "locality", "political" ]
            } ],
          "formatted_address" : "Westminster, London, UK" // reste du tableau...

toute aide est appréciée!

Dc

4voto

Eddy Vinck Points 372

Cela a fonctionné pour moi :

const localityObject = body.results[0].address_components.filter((obj) => {
  return obj.types.includes('locality');
})[0];
const city = localityObject.long_name;

ou en une seule fois :

const city = body.results[0].address_components.filter((obj) => {
  return obj.types.includes('locality');
)[0].long_name;

Je fais cela dans Node, donc c'est bon. Si vous avez besoin de prendre en charge IE, vous devez utiliser un polyfill pour Array.prototype.includes ou trouver une autre façon de le faire.

3voto

Andy Braham Points 958

Je pense que c'est vraiment pénible que Google ne fournisse pas un certain type de fonctionnalité pour obtenir ces informations. Quoi qu'il en soit, je pense que la meilleure façon de trouver le bon objet est :

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

   response($.map(results, function(item){

      var city = $.grep(item.address_components, function(x){
         return $.inArray('locality', x.types) != -1;
      })[0].short_name;

      alert(city);
   }            
});

1voto

Mike Points 11
// Utiliser Google Geocoder pour obtenir Lat/Lon pour l'adresse
function codeAddress() {
    // La fonction géocode l'adresse1 dans le panneau de modification et remplit lat et lon
    address = document.getElementById("tbAddress").value;
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            loc[0] = results[0].geometry.location.lat();
            loc[1] = results[0].geometry.location.lng();
            document.getElementById("tbLat").value = loc[0];
            document.getElementById("tbLon").value = loc[1];
            var arrAddress = results[0].address_components;
            for (ac = 0; ac < arrAddress.length; ac++) {
                if (arrAddress[ac].types[0] == "street_number") { document.getElementById("tbUnit").value = arrAddress[ac].long_name }
                if (arrAddress[ac].types[0] == "route") { document.getElementById("tbStreet").value = arrAddress[ac].short_name }
                if (arrAddress[ac].types[0] == "locality") { document.getElementById("tbCity").value = arrAddress[ac].long_name }
                if (arrAddress[ac].types[0] == "administrative_area_level_1") { document.getElementById("tbState").value = arrAddress[ac].short_name }
                if (arrAddress[ac].types[0] == "postal_code") { document.getElementById("tbZip").value = arrAddress[ac].long_name }
            }
            document.getElementById("tbAddress").value = results[0].formatted_address;
        }
        document.getElementById("pResult").innerHTML = 'Status de Geocodage:' + status;
    })
}

1voto

Retourne la localité si elle existe. Sinon, retourne administrative_area_1

city = results[0].address_components.filter(function(addr){
   return (addr.types[0]=='locality')?1:(addr.types[0]=='administrative_area_level_1')?1:0;
});

0voto

alpc Points 31
            //si (arrAddress[ac].types[0] == "street_number") { alert(arrAddress[ac].long_name) } // SOKAK NO
            //si (arrAddress[ac].types[0] == "route") { alert(arrAddress[ac].short_name); } // CADDE
            //si (arrAddress[ac].types[0] == "locality") { alert(arrAddress[ac].long_name) } // İL
            //si (arrAddress[ac].types[0] == "administrative_area_level_1") { alert(arrAddress[ac].short_name) } // İL
            //si (arrAddress[ac].types[0] == "postal_code") { alert(arrAddress[ac].long_name); } // POSTA KODU
            //si (arrAddress[ac].types[0] == "neighborhood") { alert(arrAddress[ac].long_name); } // Mahalle
            //si (arrAddress[ac].types[0] == "sublocality") { alert(arrAddress[ac].long_name); } // İlçe
            //si (arrAddress[ac].types[0] == "country") { alert(arrAddress[ac].long_name); } // Ülke

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X