2012-10-22 76 views
1

好的,所以我使用Google Maps API作为我的网站,并使用“设置当前位置”功能。Google Maps API v3 - “设置当前位置”的最准确方法

它对一些用户来说很好,但对于其他用户来说,这是默认的“错误”位置。

例1 我有一个朋友,以测试该网站,同时我们在利物浦学生宿舍。 当他允许当前位置时,它将他的位置设置为他在斯塔福德的家中,这很方便。

示例2 在大学计算机上,我测试了网站并允许使用当前位置功能。这次,它将位置设置到大学服务器所在的建筑物,而不是电脑的位置(位于利物浦的另一侧!)

我对IP地理定位知之甚少,所以可以没有想到一个解决方案,我也不能找到任何类似的stackoverflow问题。 有没有办法以更准确的方式设置位置?也许我可以使用邮编设置位置?

任何帮助,将不胜感激。

特里斯坦

编辑: 这是代码我有用于设置位置,初始化功能

if(navigator.geolocation) { 

     navigator.geolocation.getCurrentPosition(currentPositionCallback); 

     } else { 

     alert('The browser does not support geolocation'); 

     } 

    function currentPositionCallback(position) { 

     // Create a new latlng based on the latitude and longitude from the users position 
     var user_lat_long = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

     // Add a marker using the user_lat_long position 
     var userpos = new google.maps.Marker({ 
     position: user_lat_long, 
      icon: new google.maps.MarkerImage("img/icons/icon_home.png", new google.maps.Size(32, 34)), 
     map: map 
     }); 

     // Set the center of the map to the users position and zomm into a more detailed level 
     map.setCenter(user_lat_long); 
     map.setZoom(15); 

    } 
+0

你有没有通过Txugo尝试回答?: http://stackoverflow.com/questions/2851089/using-google-maps-api-how-can-we-set-the-current-location- as-the-default-set-lo – 2012-10-22 20:15:23

+0

是的,但那并没有解决问题。它仍然去'错误的地点 – tristanojbacon

回答

1

内部的问题是,地理位置是有点暗艺术。 API使用许多技术来确定它的位置。

  • 最可靠的是如果机器有GPS。这可以将你缩小到最近的十米左右。
  • 接下来,手机可以通过报告区域内的蜂窝天线桅杆和信号强度来做一些工作。这可以用来将你三角测量到一百米左右。
  • 另一种方法是查看IP地址。这些可以映射到一个地理位置,但它往往非常不准确。只有当您的机器没有其他地理定位方法时才会使用此技术。这可能会解释大学计算机的跨城效应。
  • 最后的方法(我认为是为你的朋友发挥作用)正在寻找该地区的WiFi网络。你还记得谷歌几年前因为诽谤人们WiFi的数据而陷入困境吗?那么他们首先看WiFi的原因是为了获得WiFi路由器的地图。他们知道国内每个WiFi路由器的名称和位置(几乎所有的都是这样)。浏览器提供它可以看到的信号列表,Google可以非常准确地确定您的位置。

如果您使用的是标准笔记本电脑,可能的唯一方法就是最后一个。如果Google的数据库是最新的,这很好。

不幸的是,它可能不准确。人们总是设置新路由器,升级,更改WiFi细节,移动房屋并带走路由器,甚至只是打开或关闭它们。

如果在PC周围检测到的信号与谷歌认为位于您所在位置的信号不匹配,则可能会得到奇怪的结果。我的猜测是,你的朋友从他家里带走了一个路由器,让他的学生挖掘出来?谷歌可能认识到路由器是来自斯塔福德,并且不承认该区域的其他人(因为所有学生自上次进行扫描后都发生了变化),所以它猜测它必须在斯塔福德。

当它工作时,这种技术是非常准确的,但是当它没有时,结果可能是不准确的。在您的笔记本电脑上安装GPS信标,或者说服您附近的所有人永远不要更换他们的路由器,对于其他方式,您无法做到这一点。

+0

其实,路由器是安装在房子里全新的。这所房子非常新,所有的家电等都是全新的。 使用你的想法,我猜他的笔记本电脑仍然设置在他的家......如何改变它? – tristanojbacon

+0

@tristanojbacon:可悲的是,这就是我的第一句话:API是一个黑盒子。它不会告诉你它使用了哪些方法,也没有机会告诉它使用哪些方法。这是一个“质疑,回答,没有第二次猜测”的案例。如果你喜欢,你可以尝试一下;看看它是否在不同的浏览器上为他报告相同的内容,但是你真正的问题是你网站的其他用户不会有这个选项。地理编码在移动设备上最好,因为GPS和细胞三角测量非常准确,但如果您没有这些,通常情况并不理想。 – Spudley

相关问题