通过google.loader.ClientLocation获取用户位置,但不适用于其他人

时间:2010-01-13 00:48:23

标签: api geolocation google.load

我尝试使用google.loader.ClientLocation和maps 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 个答案:

答案 0 :(得分:14)

Google ClientLocation使用IP地址地理位置。有几个IP地址地理定位提供商(右侧边栏中的相关问题将为您提供其中的几个),并且它们为不同的用户提供不同的结果。 Google ClientLocation无法找到所有人,也无法始终提供与某些竞争对手一样精确或准确的答案。

例如,在my test page,我使用Google ClientLocation和IPInfoDB,而Google ClientLocation现在找不到我在家,而IPInfoDB认为我在Sunnyvale而不是Berkeley。您可能会发现一个提供商比其他提供商更好(特别是如果您为其数据库付费),但我怀疑最强大的方法,如果您真的需要它,是使用几个并希望至少有一个会有结果。您应该事先知道IP地理位置并不总是适用于所有用户(例如,匿名代理后面的用户永远不会以这种方式定位)。

,如果您想要更精确的位置,可以使用Javascript API向浏览器询问用户的确切位置。在支持的浏览器上,用户将收到一个小弹出窗口,询问他们的许可,如果给出,浏览器将使用GPS(例如iPhone上的Mobile Safari)或WiFi三角测量(Firefox 3.5+)来确定纬度和经度。您可以在my test page上查看其工作原理,并将其与IP地理位置进行比较。并非所有浏览器都支持W3C Geolocation API,但越来越多的浏览器支持{。{3}}。