单次定位用于一次性获取设备当前位置。调用 requestSingleLocation() 后,定位结果通过 LocationListener.onReceiveLocation 返回。
完成隐私同意、AK 配置和定位权限处理。
创建 BMapLocationClient,并先设置定位监听器。
按需设置坐标系、定位模式和地址解析参数。
调用 requestSingleLocation(),并根据 locStatusType 处理结果。
let locationClient: BMapLocationClient | null = nullasync function initLocation(): Promise<void> {BMapLocationClient.setAgreePrivacy(true)await BMapLocationClient.checkAuthKey('您的密钥')const permission: Permission = await checkPermission()if (!permission.IS_GRANT) {guideSettingPermission()return}locationClient = new BMapLocationClient()const listener: LocationListener = {onReceiveLocation: (location: Location) => {if (location.locStatusType != 1) {console.error('定位失败', location.locStatusTypeDescription)return}console.log('经纬度', location.longitude, location.latitude)if (location.hasAddr && location.addr != null) {console.log('地址', location.addr!.address)}}}locationClient!.setLocationListener(listener)locationClient!.setLocOption({coordType: 'bd09ll', isNeedAddress: true,locationMode: 0, singleLocatingTimeout: 3})}function requestSingleLocation(): void {locationClient?.requestSingleLocation()}
页面卸载时调用 locationClient?.destroy() 并将引用置为 null。即使只使用单次定位,也应释放客户端和监听器。
上一篇
下一篇