参考:
应用场景
- 更新本地信息
- 显示用户周围的兴趣点
- 交互式车载导航系统 (GPS)
Geolocation 对象
创建
-
内置创建
var geolocation = navigater.geolocation
-
引用百度地图创建
引用:
<!--引入百度 API,"ak=" 后面一串码是密钥,最好自己申请--> <script type="text/javascript" src="https://api.map.baidu.com/api?v=2.0&ak=7a6QKaIilZftIMmKGAFLG7QT1GLfIncg"></script>
创建:
var geolocation = new BMap.Geolocation()
方法 | 描述 | |
---|---|---|
getCurrentPosition(successCallback[, errorCallback, options]) |
返回用户当前位置。 | |
watchPosition(successCallback[, errorCallback, options]) |
返回用户的当前位置,并继续返回用户移动时的更新位置 | |
clearWatch() |
停止 watchPosition() 方法 |
Geolocation 对象方法的回调函数
-
options
一个可选的
PositionOptions
对象。属性 类型 描述 enableHighAccuracy
boolean
是否使用其最高精度来表示结果。这会导致较慢的响应时间或者增加电量消耗 timeout
long
设置设备必须在多长时间(单位毫秒)内返回一个位置 maxmumAge
long
设置可以返回多长时间(即最长年龄,单位毫秒)内的可获取的缓存位置。设置为 0
, 说明设备不能使用一个缓存位置。 -
successCallback(position)
成功得到位置信息时的回调函数,使用
Position
对象作为唯一的参数。属性 描述 coords.latitude
十进制的纬度 coords.longitude
十进制的经度 coords.accuracy
位置精度 coords.altitude
海拔,海平面以上以米计 coords.altitudeAccuracy
位置的海拔精度 coords.heading
方向,以正北开始以度计 coords.speed
速度,以米/秒计 timestamp
响应的日期/时间 -
errorCallback(error)
获取位置信息失败时的回调函数,使用
PositionError
对象作为唯一的参数,这是一个可选项。属性 值 描述 PERMISSION_DENIED
1 用户拒绝使用地理位置 POSITION_UNAVAILABLE
2 无法获取当前位置 TIMEOUT
3 超时 UNKNOWN_ERROR
未知错误 code
错误码,对应值等于 上面四个静态属性对应的值 message
提示信息
示例
// 获取地理位置
if(navigater.geolocation){
// 获取Geolocation 对象
let geolocation = navigater.geolocation
// 获取当前地理位置
geolocation.getCurrentPosition(
// 获取用户地理位子成功回调
(position) => {
console.log(‘地理位置:‘, position)
console.log(‘地理位置 纬度:‘, position.latitude)
},
// 获取用户地理位子失败回调:可选
(error) => {
switch(error.code){
case error.PERMISSION_DENIED:
console.log("用户拒绝使用地理位置")
break;
case error.POSITION_UNAVAILABLE:
console.log("无法获取当前位置")
break;
case error.TIMEOUT:
console.log("操作超时")
break;
case error.UNKNOWN_ERROR:
console.log("未知错误")
break;
}
},
// 配置:可选
{
enableHighAccuracy: true, // 最高精度返回位置值
timeout: 1, // 1s 内返回一个位置
maxmumAge: 2000 // 2s 内可返回缓存的位置的值
}
)
}else{
var geolocation = new BMap.Geolocation()
geolocation.getCurrentPosition(function(e) {
if(this.getStatus() == BMAP_STATUS_SUCCESS){
// 百度 geolocation 的经纬度属性不同,此处是 point.lat 而不是 coords.latitude
console.log( ‘纬度:‘ + e.point.lat + ‘, 经度:‘ + e.point.lng)
} else {
console.log( ‘failed‘ + this.getStatus())
}
})
document.getElementById(‘location‘).innerText = ‘您的浏览器不支持内置获取地理位置‘
}