谷歌地图API v3 - 最准确的'Set Current Location'方法



好吧,所以我正在为我的网站使用Google Maps API,并且正在使用'设置当前位置'功能。

它对某些用户工作正常,但是对其他用户来说,它默认为"错误"位置。

示例1 我有一个朋友在利物浦的学生会时测试该网站。当他允许当前位置时,它将他的位置设置为他在斯塔福德的家庭住所,这是Wayyy的。

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

我对IP地理位置不太了解,因此无法想到解决方案,也无法找到任何类似的堆叠问题。有没有办法以更准确的方式设置位置?也许我可以使用邮政编码设置位置?

任何帮助将不胜感激。

tristan

编辑:这是我在初始化函数内部设置位置的代码

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);
    }

问题是地理位置有点黑暗艺术。API使用多种技术来解决它的位置。

  • 最可靠的是机器具有GPS。这可以将您缩小到最接近的十米左右。
  • 接下来,手机可以通过报告该区域的细胞桅杆以及信号强度来完成一些工作。这可以用来将您的三角构造成一百米左右。
  • 另一种方法是查看IP地址。这些可以映射到地理位置,但往往非常不准确。仅当您的机器没有其他地理位置方法时,才会使用此技术。这可能解释了大学计算机的跨城效应。
  • 最终方法(我认为这是您的朋友正在播放的)正在查看该地区的WiFi网络。您还记得几年前Google遇到了麻烦,因为它将数据删除了人们的wifi吗?好吧,他们首先要查看WiFi的原因是要获得WiFi路由器地图。他们知道该国每个WiFi路由器的名称和位置(嗯,几乎所有)。浏览器提供了可以看到的信号列表,Google可以准确地处理您的位置。

如果您使用的是标准笔记本电脑,则唯一可以使用的方法是最终的方法。这很好,只要Google的数据库是最新的。

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

如果您的PC周围检测到的信号与Google认为位于您的位置的信号不匹配,请期待奇怪的结果。我的猜测是,您的朋友已经从他的家到他的学生挖了一个路由器?Google可能认识到路由器是斯塔福德(Stafford),并且不认识该地区的其他任何一个(因为自上次进行扫描以来所有学生都发生了变化),因此它猜测它一定是在斯塔福德(Stafford)。p>当它起作用时,这种技术是可怕的,但是当它不可能的情况下,结果可能是可笑的。没有在笔记本电脑中安装GPS信标,或说服附近的每个人都不更改路由器,您对此无能为力。

相关内容

  • 没有找到相关文章

最新更新