0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙NXET实战:高德地图定位SDK【获取Key+获取定位数据】(二)

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-22 18:03 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如何申请key

1、创建新应用

进入[控制台],创建一个新应用。如果您之前已经创建过应用,可直接跳过这个步骤。

2、添加新Key

在创建的应用上点击"添加新Key"按钮,在弹出的对话框中,依次:输入应用名名称,选择绑定的服务为“HarmonyOS平台”,输入AppID,如下图所示:

注意

1个KEY只能用于一个应用(多渠道安装包属于多个应用),1个Key在多个应用上使用会出现服务调用失败。

在阅读完高德地图API服务条款后,勾选此选项,点击“提交”,完成 Key 的申请,此时您可以在所创建的应用下面看到刚申请的 Key 了。

如何获取AppID

请在当前应用的Ablitiy中使用如下代码获取

let flag = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
let bundleInfo = bundleManager.getBundleInfoForSelfSync(flag)
let appId = bundleInfo.signatureInfo.appId;

注意事项

  1. 获取AppID之前需要先配置应用的签名信息。
  2. 目前通过DevEco Studio连接云真机获取到的appId不全,只获取到了"包名_", 使用云真机调试高德地图SDK时会导致鉴权不通过,正确的appId形式为:"包名_签名信息", 例如:com.amap.demo_BGtGgVB3ASqU7ar1nHkwX4s0nIexDbEwqNrVoatUDs17GrClWC7V2/zhoYh6tFQHAd5DASWVTEAgvZfzrEGljjs=

QQ浏览器截图20240320162546.png

获取定位数据

使用定位SDK之前,需要在 config.json 文件中进行相关权限设置,确保定位功能可以正常使用。

第一步,配置module.json5

首先,声明权限

...
 "requestPermissions": [
      {
        "name": "ohos.permission.APPROXIMATELY_LOCATION",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.LOCATION",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.LOCATION_IN_BACKGROUND",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.INTERNET",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      },
      {
        "name": "ohos.permission.KEEP_BACKGROUND_RUNNING",
        "usedScene": {
          "abilities": [
            "Harmony_location_demoAbility"
          ],
          "when": "always"
        }
      }
    ]
...

第二步,向工程中添加定位开发包

从ohpm仓库获取定位包,依次添加依赖。

"dependencies": {
    "@amap/amap_lbs_common": "1.0.0",
    "@amap/amap_lbs_location": "1.0.0"
}

第三步,初始化定位

首先,设置Key

[获取Key]

AMapLocationManagerImpl.setApiKey("您的key");

初始化隐私政策

AMapLocationManagerImpl.updatePrivacyShow(AMapPrivacyShowStatus.DidShow, AMapPrivacyInfoStatus.DidContain, getContext(this))
    AMapLocationManagerImpl.updatePrivacyAgree(AMapPrivacyAgreeStatus.DidAgree, getContext(this))

创建AMapLocationManagerImpl

locationManger?: AMapLocationManagerImpl;
this.locationManger = new AMapLocationManagerImpl(this.context);

动态申请相关权限

reqPermissionsFromUser(permissions: Array< Permissions >): void {
    let context: Context = getContext(this) as common.UIAbilityContext;
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();
    // requestPermissionsFromUser会判断权限的授权状态来决定是否唤起弹窗
    atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) = > {
      let grantStatus: Array< number > = data.authResults;
      let length: number = grantStatus.length;
      for (let i = 0; i < length; i++) {
        if (grantStatus[i] === 0) {
          // 用户授权,可以继续访问目标操作
        } else {
          // 用户拒绝授权,提示用户必须授权才能访问当前页面的功能,并引导用户到系统设置中打开相应的权限
          return;
        }
      }
      // 授权成功
    }).catch((err: BusinessError) = > {
      console.error(`Failed to request permissions from user. Code is ${err.code}, message is ${err.message}`);
    })
  }

最后,开始请求相关定位信息

如:连续定位

let listener: IAMapLocationListener = {
                onLocationChanged: (location) = > {
                // todo something
                }, onLocationError: (error) = > {
                // todo something
                }
              };

let options: AMapLocationOption = {
  priority: geoLocationManager.LocationRequestPriority.FIRST_FIX,
  scenario: geoLocationManager.LocationRequestScenario.UNSET,
  timeInterval: 2,
  distanceInterval: 0,
  maxAccuracy: 0,
  allowsBackgroundLocationUpdates: true,
  locatingWithReGeocode: false,
  reGeocodeLanguage: AMapLocationReGeocodeLanguage.Chinese,
  isOffset: true
}

this.locationManger?.setLocationListener(AMapLocationType.Updating,listener)
this.locationManger?.setLocationOption(AMapLocationType.Updating,options)
this.locationManger?.startUpdatingLocation()
//  停止定位
//  this.locationManger?.stopUpdatingLocation()

如需在后台定位,则要在应用切入后台前调用开启后台定位任务

this.locationManger?.startContinuousTask()

回到前台可以停止后台任务

this.locationManger?.stopContinuousTask()

至此就可以看到定位相关信息。也可依据参考手册实现单次定位、最后位置等操作。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 定位
    +关注

    关注

    5

    文章

    1554

    浏览量

    36516
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1093

    浏览量

    51182
  • 定位数据
    +关注

    关注

    0

    文章

    3

    浏览量

    1071
  • 鸿蒙
    +关注

    关注

    60

    文章

    2857

    浏览量

    45346
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    鸿蒙千帆起】地图携手HarmonyOS NEXT,开启智能出行新篇章

    活动。会上,地图鸿蒙化负责人宋浩波发表了题为\"地图
    发表于 02-02 11:09

    鸿蒙地图功能开发【3. 代码开发】##地图开发##

    以后再去更新这个配置参数。 第,一定要注意经纬度坐标的坐标系。从大家的惯性认知中,既然我是通过原生鸿蒙的Location Kit获取的经纬度坐标,那么当然适用于原生鸿蒙的Map Ki
    发表于 06-29 22:59

    《仿盒马》app开发技术分享-- 定位获取(25)

    的就是先获取用户当前的定位获取定位后我们拿到经纬度和其他信息,然后在对应的地图上展示。 功能分析 要想实现
    发表于 06-30 16:00

    DIY --GPS +VB版谷歌地图定位个人定位黑匣子

    。将自己电脑的网络IP写入单片机,通过GPRS模块 上网,将定位数据发到电脑上在地图上显示出来。这是GPS模块提供的测试软件,直接接上串口就可以测试模块的定位性能及数据。后面是我的硬件
    发表于 06-21 11:57

    【合宙Air551G双频定位开发板试用体验】 获取定位数据

    带有NEMA解析功能,所以这样直接可以解析出定位数据。我们是专业做定位产品的厂家,所以直接连接到产品上,直接看效果会比较直接的对模块做出评估。给产品上电后,成功的获取到了数据,通过对
    发表于 03-25 12:55

    鸿蒙应用开发的JS UI框架如何实现地图的访问?

    鸿蒙应用,现在分为Java UI框架和Ark UI框架,其中JS UI开发者框架Ark UI框架,现在地图鸿蒙应用开发如何Java U
    发表于 04-28 11:44

    地图要圆梦自动驾驶?

    “作为地图及导航界NO.1和差分定位服务领域的NO.1,地图和千寻位置的这次携手,将打造出全领域、全场景、深融合的最强
    发表于 08-24 13:50 1752次阅读

    大彩串口屏4G应用-HTTP定位获取天气

    大彩串口屏4G应用-HTTP定位获取天气:本例程中,通过获取天气、定位来介绍4G的HTTP GET的应用。
    的头像 发表于 07-22 16:40 3093次阅读
    大彩串口屏4G应用-HTTP<b class='flag-5'>定位</b>和<b class='flag-5'>获取</b>天气

    鸿蒙开发实例【使用地图鸿蒙SDK】(一)

    使用地图鸿蒙SDK的快速入门指南。
    的头像 发表于 03-22 16:59 1988次阅读
    <b class='flag-5'>鸿蒙</b>开发实例【使用<b class='flag-5'>高</b><b class='flag-5'>德</b><b class='flag-5'>地图</b><b class='flag-5'>鸿蒙</b><b class='flag-5'>SDK</b>】(一)

    openai api key获取的三种方案(有一种可以白嫖到 api key

    OpenAI API Key 全攻略:官方获取、费用详解与“白嫖”实战 引言: 想要体验 OpenAI 强大的 GPT 模型,却苦于没有 API Key?别担心,本文将为你提供一份详尽
    的头像 发表于 02-24 22:16 1.4w次阅读
    openai api <b class='flag-5'>key</b><b class='flag-5'>获取</b>的三种方案(有一种可以白嫖到 api <b class='flag-5'>key</b>)

    如何获取 OpenAI API Key?API 获取与代码调用示例 (详解教程)

    ,催生了从智能聊天到复杂数据分析等前所未有的应用场景。OpenAI API Key 是开启这些能力的关键,它既是身份凭证,也是资源管理和安全保障的核心。然而,安全、高效地获取、管理和使用 API
    的头像 发表于 05-04 11:42 1.2w次阅读
    如何<b class='flag-5'>获取</b> OpenAI API <b class='flag-5'>Key</b>?API <b class='flag-5'>获取</b>与代码调用示例 (详解教程)

    HarmonyOS实战地图自定义定位图标展示

    的问题,建议点赞收藏! 实现效果 需求分析 首先需要实现一个自定义的图标替代系统默认的箭头。 获取定位权限与位置信息。 获取定位结果并展示当前位置。 技术实现 在
    的头像 发表于 06-09 14:59 495次阅读
    HarmonyOS<b class='flag-5'>实战</b>:<b class='flag-5'>高</b><b class='flag-5'>德</b><b class='flag-5'>地图</b>自定义<b class='flag-5'>定位</b>图标展示

    HarmonyOS实战地图定位功能完整流程详解

    前言 地图定位功能相信很多人都用过,在鸿蒙的应用程序开发中,使用地图
    的头像 发表于 06-09 15:23 870次阅读

    谷歌地图GPS定位

    的导航体验。 GPS(全球定位系统)技术起始于军事应用,现已广泛用于民用领域。谷歌地图通过整合这一技术,让用户能够随时随地获取精确的位置信息。以下是谷歌地图GPS
    的头像 发表于 05-29 16:54 910次阅读

    LuatOS AGPS 辅助定位开发实战教程

    数据解析、定位模块调优等实战环节,附带完整代码与调试技巧,助开发者快速上手。   一、AGPS 概述   AGPS(Assisted GPS,辅助全球卫星定位系统)通过移动网络预先
    的头像 发表于 10-31 17:34 1003次阅读
    LuatOS AGPS 辅助<b class='flag-5'>定位</b>开发<b class='flag-5'>实战</b>教程