当前位置: 首页 > news >正文

鸿蒙 Location Kit:设备定位与位置服务(一)

一、Location Kit 服务1.1 定位技术位置子系统使用多种定位技术提供服务定位技术说明精度GNSS定位基于GPS、GLONASS、北斗、Galileo等导航卫星高基站定位根据设备当前驻网基站和相邻基站位置估算较低WLAN/蓝牙定位根据周围WLAN、蓝牙设备位置估算依赖设备分布密度注意定位过程具体使用哪些定位系统取决于用户设备的硬件能力。1.2 坐标系统系统以1984年世界大地坐标系统WGS-84为参考使用经度、纬度数据描述地球上的一个位置。说明本模块能力仅支持WGS-84坐标系。如需转换成其他坐标系请参考坐标转换工具。1.3 扩展功能功能说明地理围栏虚拟地理边界当设备进入/离开特定区域时接收通知正地理编码根据地址获取地点的经纬度逆地理编码获取经纬度对应的地点信息二、限制2.1 基本要求要求说明位置开关用户必须主动开启位置开关否则系统不提供定位服务权限申请应用必须向用户申请位置访问权限敏感数据主动请求应用需主动发起请求并在业务结束时主动结束2.2 设备能力设备类型定位能力有定位芯片GNSS定位能力无定位芯片但有WLAN/蜂窝网络WLAN定位、基站定位能力2.3 支持的设备设备类型支持Phone✅Tablet✅PC/2in1✅Wearable✅2.4 支持的国家/地区设备类型支持地区Wearable特定国家和地区见附录其他设备仅中国境内不含港澳台三、核心接口接口功能描述on(locationChange)开启位置变化订阅并发起定位请求off(locationChange)关闭位置变化订阅并删除对应的定位请求getCurrentLocation()获取当前位置callback/PromisegetLastLocation()获取最近一次定位结果isLocationEnabled()判断位置服务是否已经开启四、开发步骤4.1 导入模块import { geoLocationManager } from kit.LocationKit; import { BusinessError } from kit.BasicServicesKit;4.2 判断位置开关状态try { let locationEnabled geoLocationManager.isLocationEnabled(); console.info(位置开关状态: locationEnabled); } catch (err) { console.error(errCode: err.code , message: err.message); }提示如果位置开关未开启可以调用requestGlobalSwitch拉起全局开关设置弹框引导用户打开位置开关。4.3 获取设备位置信息方式一获取系统缓存的最新位置推荐优先使用该接口获取位置可以减少系统功耗。try { let location geoLocationManager.getLastLocation(); console.info(缓存位置: JSON.stringify(location)); } catch (err) { console.error(errCode: JSON.stringify(err)); }注意如果系统当前没有缓存位置会返回错误码。如果对位置的新鲜度比较敏感可以先获取缓存位置将位置中的时间戳与当前时间对比若不满足预期再使用方式二获取位置。方式二单次获取当前位置SingleLocationRequest定位策略选择策略适用场景说明PRIORITY_ACCURACY对精度要求较高将一段时间内精度较好的结果返回PRIORITY_LOCATING_SPEED对定位速度要求较高将最先拿到的定位结果返回注意两种定位策略均会同时使用GNSS定位和网络定位技术室内和户外场景均可获取位置结果但对硬件资源消耗较大功耗也较大。超时时间建议建议设置为10秒设备环境、状态、系统功耗管控策略等会影响定位返回时延。let request: geoLocationManager.SingleLocationRequest { locatingPriority: geoLocationManager.LocatingPriority.PRIORITY_LOCATING_SPEED, locatingTimeoutMs: 10000 // 10秒 } try { geoLocationManager.getCurrentLocation(request).then((result) { console.info(当前位置: JSON.stringify(result)); }).catch((error: BusinessError) { console.error(getCurrentLocation error: JSON.stringify(error)); }); } catch (err) { console.error(errCode: JSON.stringify(err)); }4.4 持续定位ContinuousLocationRequest多用于导航、运动轨迹、出行等场景。参数参数说明interval上报位置信息的时间间隔单位秒默认1秒locationScenario应用使用场景如NAVIGATION场景参数UserActivityScenario场景说明NAVIGATION导航场景可持续在室内和室外获取位置let request: geoLocationManager.ContinuousLocationRequest { interval: 1, locationScenario: geoLocationManager.UserActivityScenario.NAVIGATION } let locationCallback (location: geoLocationManager.Location): void { console.info(位置更新: JSON.stringify(location)); }; try { geoLocationManager.on(locationChange, request, locationCallback); } catch (err) { console.error(errCode: JSON.stringify(err)); }4.5 结束定位说你如果不主动结束定位可能导致设备功耗高、耗电快。建议在不需要获取定位信息时及时结束定位。// 需要与on接口传入的回调函数保持一致 geoLocationManager.off(locationChange, locationCallback);五、定位策略对比策略适用场景精度速度功耗PRIORITY_ACCURACY签到打卡、服务推荐高慢高PRIORITY_LOCATING_SPEED快速定位需求中快高
http://www.gsyq.cn/news/1375390.html

相关文章:

  • GNN+CatBoost:图神经网络特征提取在材料性能预测中的实践
  • 低代码平台和AI低代码平台
  • 核方法检验条件均值函数:非参数统计与机器学习实践
  • Docker从安装到代码打包到部署云服务器全过程保姆级教程
  • 机器学习赋能冷等离子体种子处理:Extra Trees模型精准预测发芽率提升
  • 2025-2026年尚百年电话查询:定制全铝家居前需核实资质与合同条款 - 品牌推荐
  • 工业相机和镜头参数和选型
  • Liunx常用命令
  • RHEL9.2保姆级安装教程:从VMware虚拟机创建到系统配置的完整避坑指南
  • Linux系统篇,开发工具(六):文件的编译配置、调试的理解、cgdb和gdb的操作使用
  • 基于对比学习的机器遗忘框架CoUn:原理、实现与调优指南
  • 基于Intel Xe GPU与SYCL的AI模型完整性验证框架设计与实现
  • ML系统可持续性工程实践:从能耗优化到全生命周期管理
  • 告别Alt+F4秒退!在UE4/UE5中实现窗口事件监听的三种方法全评测
  • MyBatis 与 MySQL 执行流程
  • 从spring到spring boot——JAVA项目开发
  • UE4项目实战:用两个Widget组件搞定3DUI穿模问题(附蓝图与材质设置)
  • 2026年4月惠州知名的设备运输服务商推荐,精密设备搬迁/工厂设备搬运/设备安装搬迁/平台吊装,设备运输一站式服务哪家好 - 品牌推荐师
  • Armv9 SME指令集:FMLS与FMLSL浮点运算优化
  • 跨VM RowHammer攻击防御技术与DRAM安全研究
  • LLM推理解耦技术:提升大型语言模型推理效率的关键方法
  • BFloat16与SME2指令集在AI加速中的应用
  • 亚秒级计时电流法在室温离子液体中的突破应用
  • Mysql:事务管理(上)
  • 基于机器学习的癫痫发作检测与预测:从EEG信号处理到LSTM时序建模
  • 告别瞎猜!用DBSCAN和K-means搞定毫米波雷达点云聚类,附完整Matlab代码与数据集
  • 基于退火序贯蒙特卡洛的符号回归:从高维物理数据中自动发现多项式约束
  • 纯前端到底要不要学 Java
  • Unity新手避坑指南:从预制体变体到导航网格,这些基础概念别再搞混了
  • CentOS 7最小化安装后,复制粘贴和网络配置的保姆级教程(附图形界面切换)