navigator.geolocation
getCurrentPosition方法即可获取定位信息,但这个API在不同系统使用上有一些差异
- 在ios中需使用https域名方可获取
- 在安卓中无需SSl证书也可定位(weChat中需调用其JSAPI)
getCurrentPosition
该方法接收3个参数
-
success 成功得到位置信息时的回调函数 返回一个Position对象
-
error 可选 失败时的回调函数
-
options 可选配置项
success 返回的Position对象包含的coords对象就带有经纬度坐标
error返回的code属性可判别错误类型
- 1:用户拒绝
- 2:定位出错
- 3:定位超时
navigator.geolocation.getCurrentPosition(
({ coords }) => {
console.log(coords.latitude, coords.longitude)
},
err => {
switch (err.code) {
case 1:
console.log('用户拒绝页面发起的地理位置')
break
case 2:
console.log('无法获取当前位置')
break
case 3:
console.log('超时')
break
default:
console.log('未知错误')
break
}
},
注意
getCurrentPosition返回的坐标是WGS-84国际标准GPS坐标 而我们国内地图多数是GCJ-02及在此基础上加了坐标偏移的,而百度的BD-09更是进行了二次偏移加密, 所以在使用国内地图图层服务时需要把 getCurrentPosition WGS-84坐标转换为对应的地图坐标,不然会存在定位偏移
options
可选配置项
- enableHighAccuracy 是否启动高精模式(布尔值)
- maximumAge 设置定位缓存过期的时间(毫秒,0为禁用缓存)
- timeout 设置获取定位信息超时时间 (毫秒超时触发ErrorCallback)