Latitude e longitude podem encontrar o código postal?

estou a usar o Google geocoder para o lat e o lon e a minha pergunta é, há alguma maneira de descobrir o zipcode com latitude e longitude?

Author: AstroCB, 2011-07-20

5 answers

Acho que o que estás à procura é o address_components[] na matriz results. Talvez algo como este funcionaria, apenas digitando o abaixo para que pudesse ter erros nele, mas eu acho que você vai ter a idéia.

Http://code.google.com/apis/maps/documentation/geocoding/#Results

function (request, response) {
  geocoder.geocode({ 'address': request.term, 'latLng': centLatLng, 'region': 'US' }, function (results, status) {
    response($.map(results, function (item) {
      return {
       item.address_components.postal_code;//This is what you want to look at
      }
}
 7
Author: MisterIsaak, 2011-07-20 19:29:33
É bom notar que o Google Maps tem uma nova versão desde que esta solução foi apresentada.

Referência: https://developers.google.com/maps/documentation/geocoding/?csw=1#ReverseGeocoding

Aqui está um exemplo atualizado para o Google Maps v3. Ele faz uso dos componentes de endereço que JIssak menciona acima. Devo notar que não há recuo. Se não encontrar um código postal, não faz nada. Isto pode ou não ser importante para o seu script.
var latlng = new google.maps.LatLng(p.coords.latitude, p.coords.longitude);
geocoder = new google.maps.Geocoder();

    geocoder.geocode({'latLng': latlng}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0]) {
                for (j = 0; j < results[0].address_components.length; j++) {
                    if (results[0].address_components[j].types[0] == 'postal_code')
                        alert("Zip Code: " + results[0].address_components[j].short_name);
                }
            }
        } else {
            alert("Geocoder failed due to: " + status);
        }
    });
 7
Author: HBlackorby, 2013-07-29 20:00:50

[Solução Não funcional removida para a solução do google - ver a solução de @hblackorby.]

Aqui está uma versão que usa openstreetmap.org, muito mais simples que o API - coffeescript do google, em seguida javascript:
getZip = (cb) ->
  # try to populate zip from geolocation/google geocode api
  if document.location.protocol == 'http:' && navigator.geolocation?
    navigator.geolocation.getCurrentPosition (pos) ->
      coords = pos.coords
      url = "http://nominatim.openstreetmap.org/reverse?format=json&lat=#{ coords.latitude }&lon=#{ coords.longitude }&addressdetails=1"
      $.ajax({
        url: url,
        dataType: 'jsonp',
        jsonp: 'json_callback',
        cache: true,
      }).success (data) ->
        cb(data.address.postcode)
Aqui está o javascript compilado:
getZip = function(cb) {
  if (document.location.protocol === 'http:' && (navigator.geolocation != null)) {
    return navigator.geolocation.getCurrentPosition(function(pos) {
      var coords, url;
      coords = pos.coords;
      url = "http://nominatim.openstreetmap.org/reverse?format=json&lat=" + coords.latitude + "&lon=" + coords.longitude + "&addressdetails=1";
      return $.ajax({
        url: url,
        dataType: 'jsonp',
        jsonp: 'json_callback',
        cache: true
      }).success(function(data) {
        return cb(data.address.postcode);
      });
    });
  }
};

Usa-o assim:

getZip(function(zipcode){ console.log("zip code found:" + zipcode); });
 7
Author: Julian, 2018-09-17 16:21:31

A API do localizador do Yahoo fornece um bom wat para procurar os dados de localização por lat/GNL:

Http://developer.yahoo.com/geo/placefinder/

Aqui está um url de exemplo que eles usam:

Http://where.yahooapis.com/geocode?q=38.898717,+-77.035974&gflags=R

 2
Author: Tom Hazel, 2011-07-20 16:11:40
Parece que sim.

Fonte: Serviço de API do Google Maps

Geocodificação é o processo de conversão de endereços (como " 1600 Amphitheatre Parkway, Mountain View, CA") em Coordenadas geográficas (como a latitude 37.423021 e longitude-122.083739), que você pode usar para colocar marcadores ou posicionar o mapa. A API do Google Geocoding fornece uma maneira direta de acessar um geocoder através de um pedido HTTP. Além disso, o serviço permite-lhe executar o Operação de conversão (transformando coordenadas em endereços); este processo é conhecido como "reverse geocoding."

Você também deve verificar esta documentação que tem algum código de amostra: Geocodificação Reversa

 1
Author: Matt, 2011-07-20 16:13:01