web定位功能

  • 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

你可能感兴趣的:(web定位功能)