鸿蒙Arkts如何实现定位api,实现发现周边的服务,亲测有效,直接粘!

本文介绍了在OHOS平台上获取和管理定位权限的方法,包括在module.json5中配置请求权限,使用abilityAccessCtrl和geoLocationManager获取用户位置信息,以及处理权限请求的流程。
摘要由CSDN通过智能技术生成

定位实现周边信息的搜索

第一步在

module.json5内部配置

//注意是resources下面的module.json5文件哦
"requestPermissions": [
     //网络权限的配置如在线网址的图片
     {
        "name": "ohos.permission.INTERNET",
      },
     //获取定位的权限配置
      {
        "name": "ohos.permission.LOCATION"
      },
      //获取定位的权限配置
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION"
      },
     
    ],
第二步导入三个包
import geoLocationManager from '@ohos.geoLocationManager'; //获取用户位置信息
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import bundleManager from '@ohos.bundle.bundleManager';
第三步 定义一个方法获取权限
  async checkAccess(permission) {
    //创建权限管理对象
    let atManager = abilityAccessCtrl.createAtManager()
    //获取应用信息
    let bundleInfo = await bundleManager.getBundleInfoForSelf(0x00000001)
    //拿到应用程序标识
    let accessTokenId = bundleInfo.appInfo.accessTokenId
    //检测权限授予情况
    let grantStatus = await atManager.checkAccessToken(accessTokenId, permission)
    return grantStatus === 0 //0已授权 1未授权
  }
  
  async reqPermissionsFromUser(permissions) {
    //上下文对象
    let context = getContext(this)
    // 创建权限管理对象
    let atManager = abilityAccessCtrl.createAtManager();
    // requestPermissionsFromUser会自动判断权限的授权状态来决定是否唤起弹窗
    let {authResults} = await atManager.requestPermissionsFromUser(context, permissions)
    //authResults授权结果集合 0允许 1拒绝
    return authResults.map(v =>!v);
  }
​
你可以选择在(生命周期)初始化声明周期的时候直接调用
比如说这样
​
await 
let res = await this.reqPermissionsFromUser(['ohos.permission.APPROXIMATELY_LOCATION',"ohos.permission.LOCATION"])
调用一次(唤起弹窗) 你可以打印看看结果是什么
 
 
 
// 获取用户位置信息
geoLocationManager.getCurrentLocation({ 'priority': 0x203, 'scenario': 0x300, 'maxAccuracy': 0 }, (err, data) => {
      console.log("当前的经度" + data.longitude, "当前的纬度" + data.latitude)
      在这里面你可以进行你想要进行的操作
      直接去高德地图/百度地图发起请求
      第一步导入鸿蒙内置的
      //导入网路请求
      import http from '@ohos.net.http';
      //生成请求示例
      let net = http.createHttp()
      //发起网络请求
      
      //销毁请求对象
      net.destroy()
  }
​
​
​
  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值