张裕 发表于 2024-6-26 11:03:50

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

集乐成能模块

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

▍****向用户动态申请授权的基础功能模块
获取装备地理位置信息的前提是用户同意提供相干敏感权限,这意味着我们必要向用户动态申请相干所需权限。而此次关于向用户动态申请授权的模块,笔者将把它们集成在Service目次下的两个TS文件里,分别是Applicant.ts与Detector.ts。
https://img-blog.csdnimg.cn/img_convert/bc3d8faad67be7d89dca73fac69f6dad.png
之后,我们在Index.ets中对其进行调用
//导入common
import common from '@ohos.app.ability.common'
//导入向用户发起权限申请的模块
import Request_Permission_From_Users from 'ets/Service/Applicant'

@Entry
@Component
struct Index {

......

//获取上下文对象, 储存在成员变量context中
private context = getContext(this) as common.UIAbilityContext

//编写异步方法,调用之前已写好的模块文件Applicant
async apply(){
    let res = await Request_Permission_From_Users(this.context)
    this.ifAccessible = res
    if(res){
      this.dialogController_Accessible.open()
    }else{
      this.dialogController_Inaccessible.open()
    }
}

build() {
    Column({space:10}) {

   ......

      Column(){
          Button('获取相关权限')
            .width('90%')
            .fontSize(18)
            .backgroundColor(Color.Pink)
            //调用异步方法apply
            .onClick(()=>{
            this.apply()
            })

         ......

      }
      .height('100%')
      .layoutWeight(4)
      .backgroundColor(Color.White)

      }
      .height('11%')
      .width('92%')

......

}

}

获取装备地理信息的功能模块
此功能模块的目的是输出装备所在地的经度,纬度,海拔高度和都会名,以及装备的速率(应该是瞬时的)。这必要先获取装备所在的地理位置坐标,再将地理位置坐标转化为具体的地理描述(即国家,都会等)。
在Service目次下新建一个TypeScript文件(右键Service目次,选择新建,再选择TypeScript),将其定名为Geo
https://img-blog.csdnimg.cn/img_convert/12398f681bc0399bb797742f592f6184.png
在编辑器中打开目次Geo.ts,参加以下代码以集成获取装备地理信息的功能,各代码块的具体功能已写注解
//导入位置服务模块
import geoLocationManager from '@ohos.geoLocationManager';

//导入自定义的权限检查模块
import Check_Access from 'ets/Service/Detector'

//定义结点的标签
const TAG_NODE0 = '------ '
const TAG_NODE1 = '------ '
const TAG_NODE2 = '------ '

/*
*结点函数1:获取用户设备当前所处位置的经度和纬度数据
*/
async function Node1_Get_Geographical_Position(){

//预定义返回值
let output = {
    'position_x':null,
    'position_y':null,
    'position_z':null,
    'cityName':' 未知',
    'speed':null,
    //结点函数的执行状态,默认为失败
    'isFinished':false,
    'error':'无'
}

//检查定位功能是否可用
if(!geoLocationManager.isLocationEnabled()){
    console.inf
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: HarmonyOS获取装备地理位置实战_harmony获取定位