Google Maps API v3 - геолокация на основе IP
Кто-нибудь смог получить геолокацию на основе IP-адреса человека, используя Google Maps API v3 JavaScript?
Мне кажется, что даже предоставленный Google пример не работает.
http://gmaps-samples-v3.googlecode.com/svn/trunk/commonloader/clientlocation.html
Вопрос
-
Этот пример работает для кого-то?
-
Как получить геолокацию на основе IP-адреса человека, используя Google Maps API v3?
Ответы
Ответ 1
Q1: Он работает отсюда и, вероятно, из многих других мест. Однако обратите внимание, что геолокация с IP-адресов не является очень надежной наукой. Вы получите местоположение своего интернет-провайдера, который может быть довольно далеко, и, кроме того, базы данных IP-to-location не всегда соответствуют последним изменениям, поэтому у вас могут не быть данных для определенного IP-адреса адрес - это, вероятно, то, что происходит в вашем случае.
MaxMind, которая предлагает популярную базу данных IP-to-location, опубликовала некоторые статистические данные о своей базе данных:
Q2: Единственный способ получить геолокацию с IP-адреса через API Google Maps v3 - используя тот же метод, который используется в пример, который вы предоставили. Однако, если вы обнаружите, что любая другая база данных геолокации, такая как MaxMind GeoLite City, более точна для вашей страны, вы можете захотеть сделать геолокацию от IP-адрес самостоятельно, вместо делегирования его на Карты Google.
Ответ 2
Веб-API Google Maps, похоже, не предлагает службу геолокации IP-адресов (предоставленный пример предлагает использовать стандарт W3C Geolocation, который обычно требует действия от пользователя).
Однако! Google API геолокации Google, обычно используемый на мобильных клиентах, может использоваться из Интернета и возвращает широту и долготу на основе запрашивающего IP-адреса клиента адрес.
Вот пример быстрого jQuery, который демонстрирует его использование:
$.ajax({
url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY',
data: JSON.stringify({ "considerIp": "true" }),
type: 'POST',
contentType: 'application/json',
success: function(data) {
if(data.location) {
alert(data.location.lat + ', ' + data.location.lng);
} else {
alert('not found');
}
}
});
Здесь эквивалент curl
:
curl -H "Content-Type: application/json" -X POST -d '{"considerIp": true}' https://www.googleapis.com/geolocation/v1/geolocate?key=YOUR-API-KEY
Не забудьте поменять реальный ключ API в приведенных выше примерах и на включить API геолокации для вашего проекта API Google.