2008-11-24 2 views
7

Я не хочу, чтобы пользователь устанавливал Google Gears, чтобы я мог показать ему его угаданное местоположение. Есть ли способ получить место без использования Google Gears?Есть ли способ получить местоположение пользователя без установки Google Gears?

Я нашел http://www.wipmania.com/de/blog/google-geolocation-api/, но он не предлагает пример.

+0

Это всегда были самые лучшие результаты для меня: http://united-coders.com/christian-harms/free-ip-location-script – 2011-08-27 09:38:41

+0

Вы можете сделать вызов третьей стороне API, такой как мой, https://ipdata.co – Jonathan 2017-09-05 07:46:59

ответ

9

Обычно это называется IP Geolocation.

Примером является here.

Дело в том, что большинство сайтов (если вы планируете называть это как веб-сервис) будут взимать плату за него. В противном случае, бросьте веб-службу, которая захватывает страницу геолокации, анализирует ее по адресу и возвращает эту часть информации.

В PHP, это, кажется, работает очень хорошо:

<?php 
if(isset($_GET["ip"])){ 
    echo geolocate($_GET["ip"]); 
} 

function geolocate($ip){ 
    $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip"); 
    if(preg_match('/Location:(.*)/',$raw_html,$matches)){ 
    $location_raw = $matches[1]; 

    //Get rid of pesky HTML tags 
    $location = preg_replace("/<[^>]*>/","",$location_raw); 
    return $location; 
    }else{ 
    return "ERROR"; 
    } 
} 
5

Одна вещь, чтобы следить за с сервисом геолокации или библиотеки является то, что они никогда не будет 100% точным. Мы используем один, IP2Location, и на самом деле это был постоянный источник жалоб в наш отдел обслуживания клиентов. Мы рассматриваем способы изменения поведения сайта и взвешивания факторов его полного удаления.

Проблема заключается в том, что бремя связать IP с пользователем с пользователями ISP. Они имеют большие блоки диапазонов IP, и они регистрируют, какие блоки принадлежат определенному местоположению. Проблема в том, что интернет-провайдеры часто не обновляют эту информацию, когда они сдвигают блоки или блок перекрывает слишком большую область.

Например, я живу примерно в шестидесяти милях к северу от Манхэттена, но мой IP часто показывает, что я в Чикаго с большинством инструментов поиска. У меня есть FIOS, и мы поговорили с несколькими другими людьми, которые подтвердили такое же поведение.

10

Google предоставляет способ получить местоположение пользователя через его AJAX API loader. Это даже будет работать без установки Gears. Просто включите скрипт тег, указывающий на JSAPI:

<script type="text/javascript" 
    src="http://www.google.com/jsapi?key=ABCDEFG"> 
</script> 

Когда приложение использует API загрузчика AJAX, загрузчик пытается найти гео клиент, основанный на его IP-адрес. Если этот процесс завершается успешно, местоположение клиента, охваченное уровнем метро, ​​становится доступным в свойстве google.loader.ClientLocation. Если процесс не находит совпадение, это свойство имеет значение null.

if (google.loader.ClientLocation){ 
    var center = new google.maps.LatLng(
    google.loader.ClientLocation.latitude, 
    google.loader.ClientLocation.longitude 
); 
    map.setCenter(center); 
} 

При заполнении, google.loader.Объект ClientLocation заполняются следующими свойствами зернистостей метро уровня:

  • ClientLocation.latitude - обеспечивает низкое разрешение широту, связанную с IP-адресом клиента
  • ClientLocation.longitude - обеспечивает низкое разрешение долготу, связанную с IP-адресом клиента
  • ClientLocation.address.city - содержит название города, связанного с IP-адресом клиента
  • ClientLocation.address.country - содержит название страны, ассоциированной с IP-адресом клиента
  • ClientLocation.address.country_code - предоставляет имя коды страны ISO 3166-1, связанную с IP-адресом клиента
  • ClientLocation.address.region - поставляет конкретное название региона страны, связанное с IP-адресом клиента
1

Если пользователи на мобильном телефоне , Xitfy также является бесплатным вариантом. У них есть маленький клиент, который после того, как пользователь соглашается, может быть легко установлен на своем телефоне. Затем вы можете называть api на основе REST, чтобы получить их точный источник lat/lon из gps/wifi или сотовой башни.

Они поддерживают Android, Windows Mobile, BlackBerry и Symbian, который охватывает практически все смартфоны.

3

Вы можете использовать HTML5 для этой цели. Это довольно просто. Here - пример.

1

Вы можете геокодировать IP-адрес, используя этот простой код. Он отлично работает. Попробуйте это:

function functionname(Your IP Here) 
{ 

    $ip = $ClientIP; 

    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true"); 

    $json = json_decode($json,true); 

    return $json; 
} 
Смежные вопросы