Appearance
Position
说明
Position 是一个定位插件,用于实现室内定位功能。支持 Beacon 定位、PDR 定位、GPS 定位等多种定位方式,并可以结合多种传感器数据提高定位精度。
构造函数
typescript
new Position(bmap: BMap, options?: Partial<PositionOptions>);
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
bmap | BMap | 地图实例 | - |
options | Partial<PositionOptions> | 定位配置项 | - |
PositionOptions 配置项
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
place_id | string | number | 场所ID | - |
access_token | string | 访问令牌 | - |
env | string | 环境配置,可选值:'test'、'prod' | 'prod' |
type | number | 定位类型,1:正寻,-1:反寻 | -1 |
wss_position_url | string | 定位 WebSocket 服务地址 | - |
wss_sensor_url | string | 传感器 WebSocket 服务地址 | - |
get_gps_floor_url | string | GPS楼层获取服务地址 | - |
use_sensor | boolean | 是否链接定位服务 | false |
ext_position_params | Record<string, any> | 定位扩展参数 | {} |
ext_sensor_params | Record<string, any> | 传感器扩展参数 | {} |
use_gps | boolean | 是否使用GPS | true |
use_pdr | boolean | 是否使用PDR | true |
upload_position | boolean | 是否上传定位数据 | true |
use_default_permission | boolean | 是否使用默认权限 | true |
示例
typescript
import { BMap, Position } from 'bmap';
const bmap = new BMap(document.getElementById('map'));
const position = new Position(bmap, {
place_id: 'xxx',
})
方法
setSensor
typescript
setSensor(sensor: Sensor): void;
设置传感器实例,position会创建一个默认的sensor实例,在需要更多的传感器时候,设置新的sensor实例。
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
sensor | Sensor | 传感器实例 | - |
返回值
无
requestDeviceOrientationPermission
typescript
requestDeviceOrientationPermission(): Promise<{deviceOrientation: boolean} | null>;
请求设备方向传感器权限,在使用pdr定位的时候,苹果手机会需要用户手动授权,在用户点击按钮的方法里,需要调用这个方法,让sensor可以获取到方向角数据。
应该关注 check-sensor
事件,当返回 deviceOrientation: false
时,需要用户授权。
参数
无
返回值
返回一个 Promise,解析为传感器权限状态对象或 null
pausePdr
typescript
pausePdr(): void;
暂停PDR定位
参数
无
返回值
无
continuePdr
typescript
continuePdr(): void;
继续PDR定位
参数
无
返回值
无
setPathAngle
typescript
setPathAngle(angle: number): void;
设置路径角度
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
angle | number | 角度值 | - |
返回值
无
getForwardAngle
typescript
getForwardAngle(): number | null;
获取前进方向角度
参数
无
返回值
返回角度值或 null
resetPdr
typescript
resetPdr(): void;
重置PDR定位
参数
无
返回值
无
setPath
typescript
setPath(path: PathData2): void;
设置导航路径
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
path | PathData2 | 路径数据 | - |
返回值
无
sendBeacon
typescript
sendBeacon(beaconInfo: BeaconInfo[]): void;
发送Beacon信息,在App中使用,需要通过sendBeacon方法发送beacon信息到服务端进行定位,需要设置options.use_sensor = true
。
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
beaconInfo | BeaconInfo[] | Beacon信息数组 | - |
返回值
无
dispose
typescript
dispose(): void;
销毁定位插件实例
bmap销毁的时候,会自动调用dispose方法,不需要手动调用。
如果在bmap销毁之前,需要释放内存,可以调用dispose方法。
参数
无
返回值
无
事件
position
typescript
(event: "position", args: { floor: string; x: number; y: number; time: number; speed?: number }): void;
定位结果事件
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
floor | string | 楼层 | - |
x | number | X坐标 | - |
y | number | Y坐标 | - |
time | number | 时间戳 | - |
speed | number | 速度(可选) | - |
check-sensor
typescript
(event: "check-sensor", args: { deviceOrientation: boolean }): void;
传感器检查事件
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
deviceOrientation | boolean | 是否可以使用方向角数据 | - |
ws-position
typescript
(event: "ws-position", args: { floor: string; x: number; y: number; time: string }): void;
WebSocket定位结果事件,没有经过pdr平滑的定位数据。
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
floor | string | 楼层 | - |
x | number | X坐标 | - |
y | number | Y坐标 | - |
time | string | 时间 | - |
floor
typescript
(event: "floor", args: { floor: string; time: string }): void;
楼层变化事件
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
floor | string | 楼层 | - |
time | string | 时间 | - |
compass
typescript
(event: "compass", args: { value: number }): void;
罗盘角度事件
参数
参数 | 类型 | 说明 | 默认值 |
---|---|---|---|
value | number | 角度值 | - |