Есть ли способ узнать местоположение пользователя без установки пользователем Google Gears?
-
10-07-2019 - |
Вопрос
Я не хочу, чтобы пользователь устанавливал Google Gears, чтобы я мог показать ему его предполагаемое местоположение.Есть ли способ узнать местоположение без использования Google Gears?
Я нашел http://www.wipmania.com/de/blog/google-geolocation-api/ но это не является примером.
Решение
Обычно это называется IP-геолокацией.
Пример здесь .
Дело в том, что большинство сайтов (если вы планируете называть это веб-службой) взимают с вас плату. В противном случае соберите веб-сервис, который захватывает страницу геолокации, анализирует ее по адресу и возвращает эту информацию.
В PHP это работает довольно хорошо:
<?php
if(isset( Обычно это называется IP-геолокацией.
Пример здесь .
Дело в том, что большинство сайтов (если вы планируете называть это веб-службой) взимают с вас плату. В противном случае соберите веб-сервис, который захватывает страницу геолокации, анализирует ее по адресу и возвращает эту информацию.
В PHP это работает довольно хорошо:
<*>GET["ip"])){
echo geolocate( Обычно это называется IP-геолокацией.
Пример здесь .
Дело в том, что большинство сайтов (если вы планируете называть это веб-службой) взимают с вас плату. В противном случае соберите веб-сервис, который захватывает страницу геолокации, анализирует ее по адресу и возвращает эту информацию.
В PHP это работает довольно хорошо:
<*>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";
}
}
Другие советы
Google предоставляет способ узнать местоположение пользователя с помощью Загрузчик AJAX API.Это будет работать даже без установленных шестеренок.Просто включите тег script, указывающий на JsAPI:
<script type="text/javascript"
src="http://www.google.com/jsapi?key=ABCDEFG">
</script>
Когда приложение использует загрузчик AJAX API, загрузчик пытается определить географическое местоположение клиента на основе его IP-адреса.Если этот процесс завершится успешно, местоположение клиента, ограниченное до уровня metro, станет доступным в свойстве 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 заполняется следующими свойствами детализации уровня metro:
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-адресом клиента
С гео-сервисом или библиотекой следует обратить внимание на то, что они никогда не будут на 100% точными. Мы используем один из них, IP2Location , и он фактически является постоянным источником жалоб в наш отдел обслуживания клиентов. Мы ищем способы изменить поведение сайта и учитываем факторы его полного удаления.
Проблема заключается в том, что бремя ассоциирования IP с пользователем лежит на интернет-провайдере пользователей. У них есть большие блоки диапазонов IP-адресов, и они регистрируют, какие блоки принадлежат определенному местоположению. Проблема заключается в том, что интернет-провайдеры часто не обновляют эту информацию, когда они перемещают блоки или блоки покрывают слишком большую площадь.
Например, я живу примерно в шестидесяти милях к северу от Манхэттена, но мой IP-адрес часто показывает, что я нахожусь в Чикаго с большинством средств поиска. У меня есть FIOS, и я разговаривал с парой других людей, которые подтвердили то же поведение.
Вы можете использовать HTML5 для этой цели. Это довольно просто. Здесь - пример.
Если ваши пользователи используют мобильные устройства, Xitfy также является бесплатным вариантом. У них есть небольшой клиент, который после того, как пользователь соглашается, может быть легко установлен на их телефон. Затем вы можете вызвать API, основанный на REST, чтобы получить их точный широту / долготу от gps / wifi или сотовой вышки.
Они поддерживают Android, Windows Mobile, BlackBerry и Symbian, которые охватывают практически все смартфоны.
Вы можете геокодировать 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;
}