Geolocation
返回用户当前的位置,会首先调用浏览器自带的定位接口,如果失败或不支持则调用高精IP定位(需要开通权限,否则调用普通定位)接口,如果用户拒绝授权定位,则无法返回任何定位结果。
构造函数
| 构造函数 | 描述 |
|---|---|
Geolocation() | 创建Geolocation对象实例 |
PositionOptions
此类为getCurrentPosition的可选参数,不能实例化。
| 属性 | 类型 | 描述 |
|---|---|---|
| enableHighAccuracy | Boolean | 是否要求浏览器获取最佳效果,同浏览器定位接口参数。默认为false |
| timeout | Number | 超时事件,单位为毫秒。默认为10秒 |
| maximumAge | Number | 允许返回指定事件内的缓存结果,单位为毫秒。如果为0,则每次请求都获取最新的定位结果。默认为10分钟 |
| SDKLocation | Boolean | 是否开启SDK辅助定位 |
GeolocationResult
此类作为Geolocation的getCurrentPosition方法的回调函数参数,不可实例化。
| 属性 | 类型 | 描述 |
|---|---|---|
| point | Point | 定位坐标点 |
| accuracy | Number | 定位精度,单位为米 |
| address | AddressComponent | 根据定位坐标点解析出的地址信息,可能为空(3.0新增) |
方法
| 方法 | 返回值 | 描述 |
|---|---|---|
| getCurrentPosition(callback: Function, opts: PositionOptions) | none | 返回用户当前位置。定位完成时(包括成功、失败、超时等情况),回调参数为GeolocationResult对象,否则为null |
| getStatus() | StatusCode | 定位完成后的状态码。分为BMAP_STATUS_SUCCESS,BMAP_STATUS_UNKNOWN_LOCATION,BMAP_STATUS_PERMISSION_DENIED,BMAP_STATUS_TIMEOUT |
| enableSDKLocation() | none | 开启SDK辅助定位,仅当使用环境为移动web混合开发,且开启了定位sdk辅助定位功能后生效 |
| disableSDKLocation() | none | 关闭SDK辅助定位 |
示例
ts
// 创建定位实例
const geolocation = new BMapGL.Geolocation();
// 配置定位参数
const options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0,
SDKLocation: true
};
// 获取当前位置
geolocation.getCurrentPosition((result: BMapGL.GeolocationResult) => {
if (result) {
console.log('定位成功:', result.point);
console.log('定位精度:', result.accuracy);
if (result.address) {
console.log('地址信息:', result.address);
}
// 设置地图中心点
map.setCenter(result.point);
} else {
console.log('定位失败');
}
}, options);
// 获取定位状态
const status = geolocation.getStatus();
switch (status) {
case BMapGL.BMAP_STATUS_SUCCESS:
console.log('定位成功');
break;
case BMapGL.BMAP_STATUS_UNKNOWN_LOCATION:
console.log('未知位置');
break;
case BMapGL.BMAP_STATUS_PERMISSION_DENIED:
console.log('定位权限被拒绝');
break;
case BMapGL.BMAP_STATUS_TIMEOUT:
console.log('定位超时');
break;
}