Получение местоположения пользователя с помощью google.loader.ClientLocation для меня, но не для других - PullRequest
8 голосов
/ 13 января 2010

Я пытаюсь использовать google.loader.ClientLocation вместе с API-интерфейсом карт, чтобы получить местоположение посетителя и центрировать карту на нем. Следующее работает нормально для меня (в Safari, Firefox и Chrome), но друг, которого я получил для тестирования (в Safari и Firefox), просто видит белую коробку с логотипом Google.

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

  <script type="text/javascript">
   google.load("maps", "2");
  </script>

  <script type="text/javascript"> 

      function initialize() {
        if (GBrowserIsCompatible()) {
          var map = new GMap2(document.getElementById("local_map"));
    map.setMapType(G_PHYSICAL_MAP);
    map.setCenter(new GLatLng(google.loader.ClientLocation.latitude, google.loader.ClientLocation.longitude), 15);
          // map.setCenter(new GLatLng(54.5975, -5.920278), 15);
          map.setUIToDefault();

        } 

      </script>

Есть идеи, что может пойти не так? Сайт находится по адресу http://www.chris -armstrong.com / ticktalk (карта находится внизу)

1 Ответ

14 голосов
/ 15 января 2010

Google ClientLocation использует геолокацию IP-адресов. Существует несколько провайдеров геолокации IP-адресов (соответствующие вопросы на боковой панели справа дадут вам несколько из них), и они дают разные результаты для разных пользователей. Google ClientLocation не сможет найти всех и не всегда даст ответы, которые являются такими же точными или точными, как некоторые конкуренты.

На моей тестовой странице , например, я использую Google ClientLocation и IPInfoDB , и Google ClientLocation не находит меня дома сейчас, в то время как IPInfoDB считает, что я в Саннивейле вместо Беркли. Вы можете обнаружить, что один поставщик лучше других (особенно если вы платите за его базу данных), но я подозреваю, что наиболее надежный метод, если он вам действительно нужен, - это использовать несколько и надеяться, что по крайней мере один из них даст результат , Вы должны знать заранее, что IP-геолокация не всегда будет работать для всех пользователей (например, те, кто находится за анонимным прокси, никогда не будут расположены таким образом).

Также , если вы хотите более точное местоположение, вы можете использовать Javascript API, чтобы запросить у браузера точное местоположение пользователя. В поддерживаемых браузерах пользователь получит небольшое всплывающее окно с запросом их разрешения, и, если он будет предоставлен, браузер будет использовать GPS (Mobile Safari на iPhone, например) или триангуляцию WiFi (Firefox 3.5+) для определения широты и долготы. , Вы можете увидеть, как это работает на моей тестовой странице , и сравнить ее с геолокацией IP. Не все браузеры поддерживают W3C Geolocation API , но растет число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...