HarmonyOS获取装备地理位置实战_harmony获取定位

张裕  论坛元老 | 2024-6-26 11:03:50 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1394|帖子 1394|积分 4182

集乐成能模块

▍****向用户动态申请授权的基础功能模块
获取装备地理位置信息的前提是用户同意提供相干敏感权限,这意味着我们必要向用户动态申请相干所需权限。而此次关于向用户动态申请授权的模块,笔者将把它们集成在Service目次下的两个TS文件里,分别是Applicant.ts与Detector.ts。
完成Demo的UI计划后,可以打开预览器查看界面效果

集乐成能模块

▍****向用户动态申请授权的基础功能模块
获取装备地理位置信息的前提是用户同意提供相干敏感权限,这意味着我们必要向用户动态申请相干所需权限。而此次关于向用户动态申请授权的模块,笔者将把它们集成在Service目次下的两个TS文件里,分别是Applicant.ts与Detector.ts。

之后,我们在Index.ets中对其进行调用
  1. //导入common
  2. import common from '@ohos.app.ability.common'
  3. //导入向用户发起权限申请的模块
  4. import Request_Permission_From_Users from 'ets/Service/Applicant'
  5. @Entry
  6. @Component
  7. struct Index {
  8. ......
  9.   
  10.   //获取上下文对象, 储存在成员变量context中
  11.   private context = getContext(this) as common.UIAbilityContext
  12.   //编写异步方法,调用之前已写好的模块文件Applicant
  13.   async apply(){
  14.     let res = await Request_Permission_From_Users(this.context)
  15.     this.ifAccessible = res
  16.     if(res){
  17.       this.dialogController_Accessible.open()
  18.     }else{
  19.       this.dialogController_Inaccessible.open()
  20.     }
  21.   }
  22.   build() {
  23.     Column({space:10}) {
  24.      ......
  25.         Column(){
  26.           Button('获取相关权限')
  27.             .width('90%')
  28.             .fontSize(18)
  29.             .backgroundColor(Color.Pink)
  30.             //调用异步方法apply
  31.             .onClick(()=>{
  32.               this.apply()
  33.             })
  34.          ......
  35.         }
  36.         .height('100%')
  37.         .layoutWeight(4)
  38.         .backgroundColor(Color.White)
  39.       }
  40.       .height('11%')
  41.       .width('92%')
  42. ......
  43.   }
  44. }
复制代码
获取装备地理信息的功能模块
此功能模块的目的是输出装备所在地的经度,纬度,海拔高度和都会名,以及装备的速率(应该是瞬时的)。这必要先获取装备所在的地理位置坐标,再将地理位置坐标转化为具体的地理描述(即国家,都会等)。
在Service目次下新建一个TypeScript文件(右键Service目次,选择新建,再选择TypeScript),将其定名为Geo

在编辑器中打开目次Geo.ts,参加以下代码以集成获取装备地理信息的功能,各代码块的具体功能已写注解
  1. //导入位置服务模块
  2. import geoLocationManager from '@ohos.geoLocationManager';
  3. //导入自定义的权限检查模块
  4. import Check_Access from 'ets/Service/Detector'
  5. //定义结点的标签
  6. const TAG_NODE0 = '------[Geo-Node0] '
  7. const TAG_NODE1 = '------[Geo-Node1] '
  8. const TAG_NODE2 = '------[Geo-Node2] '
  9. /*
  10. *结点函数1:获取用户设备当前所处位置的经度和纬度数据
  11. */
  12. async function Node1_Get_Geographical_Position(){
  13.   //预定义返回值
  14.   let output = {
  15.     'position_x':null,
  16.     'position_y':null,
  17.     'position_z':null,
  18.     'cityName':' 未知',
  19.     'speed':null,
  20.     //结点函数的执行状态,默认为失败
  21.     'isFinished':false,
  22.     'error':'无'
  23.   }
  24.   //检查定位功能是否可用
  25.   if(!geoLocationManager.isLocationEnabled()){
  26.     console.inf
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表