开发者

Getting user location with google.loader.ClientLocation working for me but not others

Am trying to use google.loader.ClientLocation along with the maps api to get the location of the visitor and center a map on it. The following is working fine for me (on Safari, Firefox and Chrome), but a friend I got to test it (in Safari and Firefox) just sees a white box with the Google logo.

 <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>

Any ideas what could be going wrong? The site is at http://www.chris-armstron开发者_如何学Gog.com/ticktalk (the map is near the bottom)


Google ClientLocation uses IP address geolocation. There are several IP address geolocation providers out there (the related questions in the sidebar on the right will give you several of those) and they give different results to different users. Google ClientLocation won't be able to locate everyone and it won't always give answers that are as precise or as accurate as some competitors.

On my test page, for example, I use Google ClientLocation and IPInfoDB and Google ClientLocation doesn't find me at home right now, while IPInfoDB thinks I'm in Sunnyvale instead of Berkeley. You may find that one provider is better than the others (particularly if you pay for its database), but I suspect that the most robust method, if you really need it, is to use several and hope that at least one will have a result. You should know up front that IP geolocation will not always work for all users (those behind an anonymizing proxy, for example, will never be located this way).

Also, if you want a more precise location, you can use a Javascript API to ask the browser for the user's exact location. On supported browsers the user will receive a small pop-up asking for their permission and, if given, the browser will then use GPS (Mobile Safari on the iPhone, for example) or WiFi triangulation (Firefox 3.5+) to determine latitude and longitude. You can see how this works on my test page, and compare it with IP geolocation. Not all browsers support the W3C Geolocation API, but a growing number do.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜