高德地图和JavaScript调用navigator.geolocation 方法获取所在位置的经纬度,发现都在杭州(本人在宁波)。
贴上代码
navigator.geolocation.getCurrentPosition(
function (pos) { // 如果成果则执行该回调函数
alert(
' 经度:' + pos.coords.latitude +
' 纬度:' + pos.coords.longitude +
' 高度:' + pos.coords.altitude +
' 精确度(经纬):' + pos.coords.accuracy +
' 精确度(高度):' + pos.coords.altitudeAccuracy +
' 速度:' + pos.coords.speed
);
}, function (err) { // 如果失败则执行该回调函数
alert(err.message);
}, { // 附带参数
enableHighAccuracy: false, // 提高精度(耗费资源)
timeout: 3000, // 超过timeout则调用失败的回调函数
maximumAge: 1000 // 获取到的地理信息的有效期,超过有效期则重新获取一次位置信息
}
);
获取到的经纬度30.267443,120.152792
以上情况是用谷歌浏览器手机模拟出现的,如果不用手机模拟,高德地图获取到的位置是正确的。
请看 html5 关于 Geolocation API 规范的描述:
来源
这已经指明了这个API返回位置的源信息来自于GPS、IP、RFID、WiFi、蓝牙MAC地址、GSM/CDMA,甚至户输入。并不保证得到结果是设置所在的实际位置。因此,如果源信息设备能提供GPS信号则返回的结果就准确,如果测试模拟的设备根本获取不到GPS信息,那么只能通过其他允许的信号源了,就这里而言很可能是IP地址。精度当然差很多