参考:
创建
内置创建
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() 方法 |
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 = ‘您的浏览器不支持内置获取地理位置‘
}
原文:https://www.cnblogs.com/ting-hui/p/14982043.html