Все, что я хочу, это простой пример кода, который показывает мне, как получить элемент latlng из введенного почтового индекса ИЛИ города/состояния.
Получить LatLng из почтового индекса - API Карт Google
Ответ 1
Не могли бы вы просто вызвать следующую замену {zipcode} почтовым индексом или городом и состоянием http://maps.googleapis.com/maps/api/geocode/json?address= {zipcode}
Вот ссылка с How To Geocode с использованием JavaScript: Geocode walk-thru. Если вам нужны конкретные номера lat/lng, вызовите geometry.location.lat() или geometry.location.lng() (API для google.maps.LatLng class)
ПРИМЕР, чтобы получить 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);
Ответ 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
Ответ 3
Вот функция, которую я использую для своей работы
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];
}
Ответ 4
Вот самый надежный способ получить лат/лонг из почтового индекса (т.е. почтовый индекс):
https://maps.googleapis.com/maps/api/geocode/json?key=YOUR_API_KEY&components=postal_code:97403
Ответ 5
Это просто улучшение предыдущих ответов, потому что он не работал для меня с некоторыми почтовыми индексами, даже когда в 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];
}