8

我正在尝试使用 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(地图靠近底部)

4

1 回答 1

14

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

例如,在我的测试页面上,我使用 Google ClientLocation 和IPInfoDB,而 Google ClientLocation 现在找不到我在家,而 IPInfoDB 认为我在桑尼维尔而不是伯克利。您可能会发现一个提供者比其他提供者更好(特别是如果您为其数据库付费),但我怀疑如果您真的需要它,最强大的方法是使用多个并希望至少一个会产生结果. 您应该预先知道 IP 地理定位并不总是适用于所有用户(例如,匿名代理后面的用户永远不会以这种方式定位)。

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

于 2010-01-15T09:22:37.457 回答