Получение LatLng из почтового индекса — Google Maps API

#javascript #google-maps-api-3

#javascript #google-maps-api-3

Вопрос:

Все, что мне нужно, это какой-нибудь простой пример кода, который показывает мне, как получить элемент latlng из введенного почтового индекса или города / штата.

Комментарии:

1. Существует ли конкретный язык, на котором вы хотите использовать свой пример?

Ответ №1:

Не могли бы вы просто вызвать следующее, заменив {почтовый индекс} на почтовый индекс или город и штат http://maps.googleapis.com/maps/api/geocode/json?address ={почтовый индекс}

Геокодирование Google

Вот ссылка с инструкцией по геокодированию с помощью JavaScript: Пошаговое руководство по геокодированию. Если вам нужны конкретные номера широты / lng, вызовите geometry.location.lat() или geometry.location.lng() (API для google.maps.Класс LatLng)

ПРИМЕР получения широты / 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);
  

Комментарии:

1. Это не так, но иногда некоторые места не отображаются, даже когда это делает сайт Google maps, способ, который сработал для меня, таков: вместо этого { ‘address’: zipcode} Я заменил следующим образом { ‘address’: ‘zipcode’ почтовый индекс }, я просто добавил строку ‘zipcode’ перед почтовым индексом, и это работает лучше.

Ответ №2:

Просто подсказка: почтовые индексы не являются уникальными во всем мире, поэтому в запросе стоит указать ISO-код страны (https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).

например, поиск координат польского (iso-кода PL ) почтового индекса 01-210 :

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

как получить код страны пользователя?

если вы хотите получить информацию о стране вашего пользователя на основе IP-адреса, для этого есть сервисы, например, вы можете выполнить запрос GET по адресу:http://ip-api.com/json

Комментарии:

1. спасибо за подсказку, простое использование address= 01210 не дало правильного результата. с добавлением «, PL» это работает отлично!

Ответ №3:

Вот самый надежный способ получить широту / длину из почтового индекса (т. е. почтового индекса):

 https://maps.googleapis.com/maps/api/geocode/json?key=YOUR_API_KEYamp;components=postal_code:97403
  

Комментарии:

1. Ключи API с ограничениями referer нельзя использовать с этим API.

Ответ №4:

Это просто улучшение по сравнению с предыдущими ответами, потому что у меня это не сработало с некоторыми почтовыми кодами, даже когда в https://www.google.com/maps это так, я исправил, просто добавив слово «почтовый индекс» перед тем, как поместить почтовый индекс, вот так:

 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];
}  

Комментарии:

1. Это было большим подспорьем для чисел типа 12345, которые по умолчанию выдают результаты с адресом улицы. Спасибо. В сочетании с суффиксом кода страны (,US) это еще лучше позволяет предположить, что предоставляется адрес, а не название компании. Хороший материал, пока вы ищете только одну страну.

2. не работает, в ответ будет отображаться undefined

Ответ №5:

Работая над своим проектом стажировки, я нашел веб-сайт для этого https://thezipcodes.com Создайте бесплатную учетную запись и получите ключ API в разделе «Учетная запись».

 https://thezipcodes.com/api/v1/search?zipCode={zipCode}amp;countryCode={2digitCountryCode}amp;apiKey={apiKey}
  

Большую часть данных я нашел здесь.

Ответ №6:

Вот функция, которую я использую для своей работы

 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];
}
  

Ответ №7:

 <script src="https://maps.googleapis.com/maps/api/js?key=API_KEY"></script>
<script>
    var latitude = '';
    var longitude = '';

    var geocoder = new google.maps.Geocoder();
    geocoder.geocode(
    { 
       componentRestrictions: { 
           country: 'IN', 
           postalCode: '744102'
       } 
    }, function (results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            latitude = results[0].geometry.location.lat();
            longitude = results[0].geometry.location.lng();
            console.log(latitude   ", "   longitude);
        } else {
            alert("Request failed.")
        }
    });
</script>
  

https://developers.google.com/maps/documentation/javascript/geocoding#ComponentFiltering