web-dev-qa-db-fra.com

Obtenir LatLng à partir du code postal - API Google Maps

Tout ce que je veux, c'est un exemple de code simple qui me montre comment obtenir un élément de verrouillage à partir d'un code postal saisi OR d'une ville/d'un état.

52
Scott

Ne pouvez-vous pas appeler le texte suivant en remplaçant le {code postal} par le code postal ou par ville et État http://maps.googleapis.com/maps/api/geocode/json?address= {code postal } 

Google Geocoding

Voici un lien avec un guide de géocodage utilisant JavaScript: Géocode à la volée . Si vous avez besoin des numéros lat/lng spécifiques, appelez geometry.location.lat () ou geometry.location.lng () ( API pour la classe google.maps.LatLng )

EXEMPLE pour obtenir lat/lng:

    var lat = '';
    var lng = '';
    var address = {zipcode} or {city and state};
    geocoder.geocode( { 'address': address}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
         lat = results[0].geometry.location.lat();
         lng = results[0].geometry.location.lng();
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
    alert('Latitude: ' + lat + ' Logitude: ' + lng);
79
Mark

Juste un conseil: Les codes postaux ne sont pas uniques au monde, il est donc utile de fournir le code ISO du pays dans la requête ( https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 ).

par exemple, recherchez les coordonnées du polonais (code iso PL) code postal 01-210:

https://maps.googleapis.com/maps/api/geocode/json?address=01210,PL

comment obtenir le code du pays de l'utilisateur?

si vous souhaitez obtenir des informations sur votre pays utilisateur en fonction de votre adresse IP, il existe des services, par exemple, vous pouvez faire une demande GET sur: http://ip-api.com/json

9
andilabs

Ceci est juste une amélioration par rapport aux réponses précédentes car cela ne fonctionnait pas pour moi avec certains codes postaux même lorsque https://www.google.com/maps oui, j'ai corrigé le simple fait d'ajouter le mot "zipcode" avant de mettre le code postal, comme ceci:

function getLatLngByZipcode(zipcode) 
{
    var geocoder = new google.maps.Geocoder();
    var address = zipcode;
    geocoder.geocode({ 'address': 'zipcode '+address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();
            alert("Latitude: " + latitude + "\nLongitude: " + longitude);
        } else {
            alert("Request failed.")
        }
    });
    return [latitude, longitude];
}
3

Voici la fonction que j'utilise pour mon travail

function getLatLngByZipcode(zipcode) 
{
    var geocoder = new google.maps.Geocoder();
    var address = zipcode;
    geocoder.geocode({ 'address': address }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            var latitude = results[0].geometry.location.lat();
            var longitude = results[0].geometry.location.lng();
            alert("Latitude: " + latitude + "\nLongitude: " + longitude);
        } else {
            alert("Request failed.")
        }
    });
    return [latitude, longitude];
}
0

Voici le moyen le plus fiable d’obtenir le lat/long à partir du code postal (code postal, c.-à-d.):

https://maps.googleapis.com/maps/api/geocode/json?key=YOUR_API_KEY&components=postal_code:97403
0
Rambutan