- html5原生定位api
navigator.geolocation.getCurrentPosition,推荐写法如下:
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
}
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
}
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, error, options);
} else {
alert('您的浏览器不支持地图定位')
}
- 微信环境下可以使用微信提供的sdk
wx.getLocation - 第三方定位服务比如百度地图,腾讯地图或者高德地图。具体参考相应地图文档
如果需要网页获取经纬度:
优先考虑app提供的定位sdk。这里强调一个比较坑的地方,如果app本身没有申请定位权限,那么webview即使支持navigator.geolocation.getCurrentPosition,也获取不到经纬度。
其次考虑html5原生的定位api,用法如上
第三方定位服务例如高德定位其实就是使用的html5原生定位获取的经纬度,如果不行他们会根据ip来获取位置信息,当然ip的话是容易造假的,可信度没有经纬度高
最后讲一下其实原生js是获取不到ip的,三方定位服务之所以能获取到ip是因为它们从你发送到它们服务的请求里获取到的ip包的源ip
网友评论