如何申请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;
注意事项
- 获取AppID之前需要先配置应用的签名信息。
- 目前通过DevEco Studio连接云真机获取到的appId不全,只获取到了"包名_", 使用云真机调试高德地图SDK时会导致鉴权不通过,正确的appId形式为:"包名_签名信息", 例如:com.amap.demo_BGtGgVB3ASqU7ar1nHkwX4s0nIexDbEwqNrVoatUDs17GrClWC7V2/zhoYh6tFQHAd5DASWVTEAgvZfzrEGljjs=
获取定位数据
使用定位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文章
1107浏览量
35086 -
SDK
+关注
关注
3文章
966浏览量
44696 -
定位数据
+关注
关注
0文章
3浏览量
994 -
鸿蒙
+关注
关注
55文章
1629浏览量
42119
发布评论请先 登录
相关推荐
DIY --GPS +VB版谷歌地图定位个人定位黑匣子
。将自己电脑的网络IP写入单片机,通过GPRS模块 上网,将定位数据发到电脑上在地图上显示出来。这是GPS模块提供的测试软件,直接接上串口就可以测试模块的定位性能及数据。后面是我的硬件
发表于 06-21 11:57
【求助】将GPS获取的经纬度发送到网上、然后再谷歌地图上显示具体的位置。
我想做个定位系统,就是GPS获取经纬度信息,然后发送到网上、最后PC端从网上下载数据,实时显示在谷歌地图上。实现物品防丢的功能。目前GPS获取
发表于 11-26 15:22
高德地图基于阿里云MaxCompute的最佳实践
(原ODPS)、流计算StreamCompute等服务,高德可以做出行线路选择、拥堵大数据、躲避拥堵、城市热点分布、景区推荐、商圈热度,主要是根据用户的定位数据,进行实时的
发表于 02-27 12:37
uwb室内定位系统
解算层获取位置、人脸对比结果和视频联动视频数据,以地图的形式实时显示标签的位置和标签的携带者,并可以选择显示视频联动的监控画面。 服务层 服务层包括定位引擎软件、系统管理软件、对内和对
发表于 11-16 16:33
LabVIEW定位到Word文档标题后面的位置,获取内容
请问,我该如何用LabVIEW定位word文档中标题的位置呢,我先要定位到位置后,获取每个标题后面,一定长度的文本内容。或者,谁知道,不定位的话,应该怎么去
发表于 04-08 11:37
#2020征文-手机#地图组件TinyMap来啦!鸿蒙上第一个开源地图组件
)优势:开源,方便大家学习研究超级轻量化,目前仅包含3个类,适合源码研究和学习。可高德地图和Google地图作为地理底图,并且可以选择卫星影像和矢量底图
发表于 12-21 14:51
UWB定位技术的特点与优势
带信号,对其它无线设备干扰小。UWB定位系统特点1. 安全性 定位系统无线发射功率很低,不会对现场其它设备产生任何干扰;定位数据采用加密方式传输。 2. 高可靠性 网络系统的稳定可靠是应用系统正常运行的关键
发表于 09-10 16:34
【合宙Air551G双频定位开发板试用体验】+巡检定位系统软件设计
://bbs.elecfans.com/jishu_2247836_1_1.html2、云平台解析,调用高德地图API,云端显示并标记当前位置;*3、电子围栏(后期扩展)二、平台搭建工
发表于 01-29 20:20
【合宙Air551G双频定位开发板试用体验】 获取定位数据
带有NEMA解析功能,所以这样直接可以解析出定位数据。我们是专业做定位产品的厂家,所以直接连接到产品上,直接看效果会比较直接的对模块做出评估。给产品上电后,成功的获取到了数据,通过对
发表于 03-25 12:55
鸿蒙应用开发的JS UI框架如何实现高德地图的访问?
鸿蒙应用,现在分为Java UI框架和Ark UI框架,其中JS UI开发者框架Ark UI框架,现在高德地图为鸿蒙应用开发如何Java U
发表于 04-28 11:44
使用Rock-X SDK进行人脸特征点定位快速开发的过程
和相关数据结构请参考:/RockX_SDK_V1.1.0_20191115/doc/rockx_api_doc/html/index.html初始化以上代码加载了Rock-X的人脸检测和人脸特征点定位
发表于 06-29 15:08
评论