Я не хочу, чтобы пользователь установил Google Gears, чтобы я мог показать ему его предполагаемое местоположение. Есть ли способ узнать местоположение без использования Google Gears?
Я нашел http://www.wipmania.com/de/blog/google-geolocation-api/, но он не предлагает примера.





Обычно это называется геолокацией по IP.
Пример - здесь.
Дело в том, что большинство сайтов (если вы планируете называть это веб-сервисом) будут взимать с вас плату. В противном случае создайте веб-сервис, который захватывает страницу геолокации, анализирует ее на предмет адреса и возвращает этот фрагмент информации.
В 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";
}
}
Одна вещь, на которую следует обратить внимание при работе с сервисом или библиотекой геолокации, - это то, что они никогда не будут точными на 100%. Мы используем один, IP2Location, и на самом деле он был постоянным источником жалоб в наш отдел обслуживания клиентов. Мы ищем способы изменить поведение сайта и взвешиваем факторы его полного удаления.
Проблема заключается в том, что бремя связывания IP-адреса с пользователем лежит на интернет-провайдере пользователя. У них есть большие блоки диапазонов IP-адресов, и они регистрируют, какие блоки принадлежат определенному месту. Проблема в том, что интернет-провайдеры часто не обновляют эту информацию, когда они сдвигают блоки или блок покрывает слишком большую площадь.
Например, я живу примерно в шестидесяти милях к северу от Манхэттена, но мой IP-адрес часто показывает, что я нахожусь в Чикаго с большинством инструментов поиска. У меня есть FIOS, и я разговаривал с парой других людей, которые подтвердили то же поведение.
Google предоставляет способ узнать местоположение пользователя через его Загрузчик AJAX API. Это будет работать даже без установленного Gears. Просто включите тег скрипта, указывающий на JsAPI:
<script type = "text/javascript"
src = "http://www.google.com/jsapi?key=ABCDEFG">
</script>
Когда приложение использует загрузчик AJAX API, загрузчик пытается определить местоположение клиента на основе его 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-адресом клиента.Для своего веб-сайта я проанализировал, что показатель успеха составляет 54%. Это не очень впечатляет :(
Если ваши пользователи используют мобильные устройства, Xitfy также является бесплатным вариантом. У них есть небольшой клиент, который после согласия пользователя может быть легко установлен на их телефон. Затем вы можете вызвать API на основе REST, чтобы получить их точные координаты широты и долготы, полученные от GPS / Wi-Fi или вышки сотовой связи.
Они поддерживают Android, Windows Mobile, BlackBerry и Symbian, которые охватывают почти все смартфоны.
Для этого можно использовать HTML5. Это довольно просто. Здесь является примером.
Вы можете геокодировать 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;
}
Для меня это всегда давало лучшие результаты: united-coders.com/christian-harms/free-ip-location-script