Есть ли способ узнать местоположение пользователя без установки пользователем Google Gears?

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

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

Для меня это всегда давало лучшие результаты: united-coders.com/christian-harms/free-ip-location-script

John Magnolia 27.08.2011 13:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
1
7 722
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Обычно это называется геолокацией по 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%. Это не очень впечатляет :(

Varun 19.01.2010 15:57

Если ваши пользователи используют мобильные устройства, 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;
}

Другие вопросы по теме