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

Chr*_*ong 8 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>
Run Code Online (Sandbox Code Playgroud)

什么想法可能会出错?该网站位于http://www.chris-armstrong.com/ticktalk(地图靠近底部)

npd*_*oty 14

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

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

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