【HarmonyOS 5】Map Kit 地图服务之应用内地图加载
#HarmonyOS SDK应用服务,#Map Kit,#应用内地图
目录
前期准备
AGC 平台创建项目并创建APP ID
生成调试证书
生成应用证书 p12 与签名文件 csr
获取 cer 数字证书文件
获取 p7b 证书文件
配置项目签名
配置签名证书指纹
项目开发
配置Client ID
开通地图服务
地图展示
导入 Map Kit 相关模块
初始化地图
创建图钉(示例)
其他
获取设备 UDID
在移动端应用开发过程中,应用内地图使用也较为频繁。无论是出行导航、生活服务,还是社交娱乐类应用,精准且高效的地图加载都能为用户提供更加直观、便捷的服务。本文将重点介绍鸿蒙应用内地图加载的配置与开发要点, 更多地图相关接口操作还需查看官方接口文档:文档中心。
使用 Map Kit 地图服务时前期准备工作较为耗时,当项目完成配置后,加载 MapComponent(地图组件)并配合相关接口的使用即可完成应用内地图的展示。本期完整demo也已提交至Gitee:应用内地图加载: 鸿蒙5.0,应用内地图加载示例。

前期准备
当应用需要使用 Map Kit 时需要预先添加公钥指纹,则需手动生成签名支撑项目的运行与调试,若你已经了解签名申请相关的内容可直接查看“项目开发”章节。
AGC 平台创建项目并创建APP ID
1. 在 AGC(AppGallery Connect) 平台创建项目
2. 创建项目后到此页返回即可。
3. 项目创建完成后选择所属项目。
4. 填入应用名称,应用包名,选择分类,需要注意的是:此处包名需与应用中包名一致。
5. 选择所属项目(上一步所创建的项目)
6. 确认后即可完成APP ID的创建
生成调试证书
在应用使用 Map Kit 时需要给应用进行手动签名,使用自动签名无法正常加载地图。
生成应用证书 p12 与签名文件 csr
1. 打开 IDE 开发工具,点击上方 Build/Generate Key and CSR,供第四步生成 Profile 文件使用。
2. 新建证书文件,选择证书导出文件地址,设置证书名称
3. 确认证书密码,请记住该密码
4. 设置证书别名,请记住该别名,点击下一步
5. 选择签名导出目录,设置签名文件名称
6. 点击完成,签名文件生成成功
获取 cer 数字证书文件
1. 前往 AGC 平台上传第三步在 IDE 中生成的 csr 文件进行提交,换取 cer 数字证书
2. 下载保存,此处将获得 cer 证书文件
获取 p7b 证书文件
1. 选择创建的应用,填写Profile名称,选择Profile类型,选择设备(此处我生成的为发布证书),勾选受限权限。
直达链接:AppGallery Connect
2. 勾选受限权限
3. 若选择的是调试证书,请在此处添加设备
需要注意的是:发布与调试的区别为调试证书需要选择设备ID,使用该 Profile 打包的应用在开发阶段只可安装在指定的手机,如何获取设备 UDID 可查看文章结尾。
直达链接:AppGallery Connect
4. 下载生成的 Profile 文件(p7b)
配置项目签名
1. 经过前几步的操作,已经拿到了 .p12、.csr、.cer、.p7b 四个文件,点击 DevEco 鸿蒙开发工具右上角 Project Structure 按钮,即可进入到签名配置页面。
2. 按描述选择对应格式文件,输入第三步中设置的证书密码与证书别名,点击 OK 即可完成受限权限的配置,后续使用第六步勾选的受限权限将不会再进行编译报错限制。
配置签名证书指纹
在“项目设置 > 常规”页面的“应用”区域,点击“SHA256证书/公钥指纹”后的“添加公钥指纹(HarmonyOS API 9及以上)”。 在“选择SHA256公钥指纹”窗口,选择应用/元服务使用的证书对应的指纹,点击“确认”。
项目开发
配置Client ID
1.登录AppGallery Connect平台,在“我的项目”中选择目标应用,获取“项目设置 > 常规 > 应用”的Client ID。
注意:需要获取应用的Client ID,而不是项目的Client ID。
2.在工程中entry模块的module.json5文件中,新增metadata,配置name为client_id,value为上一步获取的Client ID的值,如下所示:
"module": {"name": "xxxx","type": "entry","description": "xxxx","mainElement": "xxxx","deviceTypes": ['phone','tablet'],"pages": "xxxx","abilities": [],"metadata": [{"name": "client_id","value": "xxxxxx" // 配置为获取的Client ID}]
}
开通地图服务
1.登录AppGallery Connect网站,选择项目。
2.进入项目管理页,选择API管理,找到地图服务开关,打开开关。
地图展示
本篇文章只介绍如何配置并展示地图,更多操作还需详细查看官方接口文档:文档中心
导入 Map Kit 相关模块
import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';
初始化地图
1.初始化地图参数 mapOption ,设置地图中心点坐标及层级。
2.绑定 callback 回调方法,获取 MapComponentController 对象,用来操作地图。
3.调用 MapComponent 组件,传入 mapOption 和 callback 参数,初始化地图。
import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';@Entry
@Component
struct Index {@State message: string = 'Hello World';private mapOption?: mapCommon.MapOptions;private callback?: AsyncCallback<map.MapComponentController>;private mapController?: map.MapComponentController;aboutToAppear(): void {this.mapInit()}mapInit() {this.mapOption = {position: {target: {latitude: 39.9,longitude: 116.4,},zoom: 13},// 展示定位按钮,如果要展示,则需要申请定位权限// myLocationControlsEnabled: true};// 地图初始化的回调this.callback = async (err, mapController) => {if (!err) {// 获取地图的控制器类,用来操作地图this.mapController = mapController;this.mapController.on("mapLoad", () => {console.info("MapKit Test", `on-mapLoad`);});}}}build() {Column({ space: 15 }) {Text("应用内地图加载示例")Text("地点:天安门广场")MapComponent({mapOptions: this.mapOption, mapCallback: this.callback}).width("100%").height(300)}.alignItems(HorizontalAlign.Start).padding({ top: 10, left: 15, right: 15 }).height('100%').width('100%')}
}
使用效果如下:
创建图钉(示例)
应用内嵌入的地图为华为的花瓣地图,与其他地图开发一致,具备图形绘制相关能力,此处演示绘制图钉,示例代码如下,详细可查看官方文档字段解释:文档中心。
获取到地图控制器 mapController 后,可调用对应方法添加图上内容。
/*** 新建图钉*/createMaker() {let markerOptions: mapCommon.MarkerOptions = {position: {latitude: 39.9,longitude: 116.4},rotation: 0,visible: true,zIndex: 0,alpha: 1,// anchorU: 0.5,// anchorV: 1,clickable: true,draggable: true,flat: false,icon: 'test.png',altitude: 100,}this.mapController?.addMarker(markerOptions)}
使用效果如下:
其他
获取设备 UDID
1. 连接升级了鸿蒙5.0系统的手机并开启开发者模式,打开USB调试
2. 打开 DevEco 鸿蒙开发工具安装目录,找到 toolchains 目录
3. 打开 CMD 命令窗口,输入命令,即可获取当前设备 UDID
hdc shell bm get --udid
相关文章:

【HarmonyOS 5】Map Kit 地图服务之应用内地图加载
#HarmonyOS SDK应用服务,#Map Kit,#应用内地图 目录 前期准备 AGC 平台创建项目并创建APP ID 生成调试证书 生成应用证书 p12 与签名文件 csr 获取 cer 数字证书文件 获取 p7b 证书文件 配置项目签名 配置签名证书指纹 项目开发 配置Client I…...

ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e)
ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e) in ‘/Users/*****/MposApp/MposApp/Modules/Common/Mpos/NewLand/MESDK.framework/MESDK’ clang: error: linker command failed with exit code 1 (use -v to see invocation) 报错 解决方…...
sentinel核心原理-高频问题
核心原理 限流实现机制 滑动窗口算法:将时间切分为子窗口动态统计QPS,避免固定窗口的边界问题。责任链模式:通过NodeSelectorSlot、FlowSlot等Slot链式处理限流逻辑。 熔断降级策略 慢调用比例:当慢请求比例…...

通过vue-pdf和print-js实现PDF和图片在线预览
npm install vue-pdf npm install print-js <template><div><!-- PDF 预览模态框 --><a-modal:visible"showDialog":footer"null"cancel"handleCancel":width"800":maskClosable"true":keyboard"…...
RxJS 核心操作符详细用法示例
1. Observable 详细用法 Observable 是 RxJS 的核心概念,代表一个可观察的数据流。 创建和订阅 Observable import { Observable } from "rxjs";// 1. 创建Observable const myObservable new Observable(subscriber > {// 发出三个值subscriber.n…...

视频监控管理平台EasyCVR结合AI分析技术构建高空抛物智能监控系统,筑牢社区安全防护网
高空抛物严重威胁居民生命安全与公共秩序,传统监管手段存在追责难、威慑弱等问题。本方案基于EasyCVR视频监控与AI视频分析技术(智能分析网关),构建高空抛物智能监控系统,实现24小时实时监测、智能识别与精准预警&…...

2.2.1 05年T1复习
引言 从现在进去考研英语基础阶段的进阶,主要任务还是05-09年阅读真题的解题,在本阶段需要注意正确率。阅读最后目标:32-34分,也就是每年真题最多错四个。 做题步骤: 1. 预习:读题干并找关键词 做题&#…...

Python-11(集合)
与字典类似,集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的,并且也是无序的。 创建集合 使用花括号 set {"python","Java"} print(type(set)) 使用集合推导式 set {s for s in "python"} print(set…...
钉钉开发之AI消息和卡片交互开发文档收集
AI消息和卡片交互开发文档 智能交互接口能力介绍 AI助理发消息(主动直接发送模式 AI 助理发消息 - 主动发送模式 AI 助理发消息 - 回复消息模式 AI 助理发消息 - Webhook 回复消息模式 Stream 模式响应卡片回传请求事件 upload-media-files AI 助理发消息&a…...
JMeter 教程:正则表达式提取器提取 JSON 字段数据
目录 JMeter 教程:正则表达式提取器提取 JSON 字段数据【简单实用】 ✅ 目的说明 📄 示例场景 🛠️ 操作步骤 第一步:发送 HTTP 请求 第二步:添加正则表达式提取器 第三步:使用提取变量 ✅ 正则表达…...

Opixs: Fluxim推出的全新显示仿真模拟软件
Opixs 是 Fluxim 最新研发的显示仿真模拟软件,旨在应对当今显示技术日益复杂的挑战。通过 Opixs,研究人员和工程师可以在制造前,设计并验证 新的像素架构,从而找出更功节能、色彩表现更优的布局方案。 Opixs 适用于学术研究和工业…...
[数据集]无人机视角检测分割数据集合集
数据集名称无人机海洋或河道水上监测检测数据集VOCYOLO格式2903张6类别无人机热红外视角人车检测数据集VOCYOLO格式2866张5类别无人机拍摄红外图像光伏板缺陷检测数据集VOCYOLO格式2723张9类别无人机视角搜索和救援失踪被困人员检测数据集VOCYOLO格式1976张6类别无人机视角垃圾…...

佰力博与您探讨PVDF薄膜极化特性及其影响因素
PVDF(聚偏氟乙烯)薄膜的极化是其压电性能形成的关键步骤,通过极化处理可以显著提高其压电系数和储能能力。极化过程涉及多种方法和条件,以下从不同角度详细说明PVDF薄膜的极化特性及其影响因素。 1、极化方法 热极化:…...
C++ std::find() 函数全解析
std::find()是C标准库中用于线性查找的基础算法,属于<algorithm>头文件,可应用于任何支持迭代器的容器。 一、函数原型与参数 template< class InputIt, class T > InputIt find( InputIt first, InputIt last, const T& value );…...

自动获取ip地址安全吗?如何自动获取ip地址
在数字化网络环境中,IP地址的获取方式直接影响设备连接的便捷性与安全性。自动获取IP地址(通过DHCP协议)虽简化了配置流程,但其安全性常引发用户疑虑。那么,自动获取IP地址安全吗?如何自动获取IP地址&#…...

STM32:深度解析RS-485总线与SP3485芯片
32个设备 知识点1【RS-485的简介】 RS-485是一种物理层差分总线标准,在串口的基础上演变而来; 两者虽然不在同一层次上直接对等,但在实际系统中,往往使用RS-485驱动差分总线,将USART转换为适合长距离、多点通信的物…...

亚马逊搜索代理: 终极指南
文章目录 前言一、为什么需要代理来搜索亚马逊二、如何选择正确的代理三、搜索亚马逊的最佳代理类型四、为亚马逊搜索设置代理五、常见挑战及克服方法六、亚马逊搜索的替代方法总结 前言 在没有代理的情况下搜索亚马逊会导致 IP 禁止、验证码和速度限制,从而使数据…...
QGraphicsView界面的坑(fitInView()函数没反应)
QGraphicsView本身是特别灵活的一种ui,能够自由响应各种动态操作。不过它最大的问题就是在加载好图像以后,将图像自适应贴合到界面大小的时候(fitInView()函数)没有反应。 这是因为fitInView函数在执行的时候,需要计算…...
【Python正则表达式终极指南】从零到工程级实战
目录 🌟 前言🏗️ 技术背景与价值🩹 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🧠 一、技术原理剖析📊 核心概念图解💡 核心作用讲解🔧 关键技术模块说明⚖️ 技术选…...
leetcode 算法每日一题 #1
#1 ! 题目 3355. 零数组变换 I 中等 相关标签 相关企业 提示 给定一个长度为 n 的整数数组 nums 和一个二维数组 queries,其中 queries[i] [li, ri]。对于每个查询 queries[i]:在 nums 的下标范围 [li, ri] 内选择一个下标 子集。 将选中的…...
用matlab提取abaqus odb文件中的节点信息
在MATLAB中提取Abaqus ODB文件中的节点信息,可以通过以下几种方法实现: 方法1:使用MATLAB的ABAQUS Interface工具箱 https://wenku.csdn.net/answer/77axwtqnys 可以参考这个 MATLAB的ABAQUS Interface工具箱提供了直接读取ODB文件的功能。…...
Spring Bean 注册到容器的方式
Spring Bean 注册到容器的方式主要包括以下几种: 基于 XML 的配置 使用 XML 文件配置 Bean,并定义 Bean 的依赖关系。 基于 Component 注解及其衍生注解 使用注解如 Component、Service、Controller、Repository 等进行配置。 基于 Configuration 和…...
1537. 【中山市第十一届信息学邀请赛决赛】未命名 (noname)
题目描述 这是一个独一无二的世界,所以有 N 张写有互不相同的自然数的卡片,第 i 张卡片写着 Ai ,现在你得到了一个未命名的空白卡片,想在上面写上一个自然数 x 满足以下条件: 1.x 不等于任意一张卡片上的数字。 2.x 可…...
数据库三范式详解与应用建议
数据库三范式(Normalization)是关系型数据库设计的核心原则,旨在减少数据冗余、提高数据一致性,并避免插入、更新和删除异常。以下是三范式的详细说明: 第一范式(1NF) 核心要求:确保…...
信息学奥赛一本通 1539:简单题 | 洛谷 P5057 [CQOI2006] 简单题
【题目链接】 ybt 1539:简单题 洛谷 P5057 [CQOI2006] 简单题 【题目考点】 1. 树状数组 知识点讲解见:洛谷 P3374 【模板】树状数组 【解题思路】 解法1:树状数组 该有01构成数组初值都为0。 某位置的元素被修改奇数次后值为1&#x…...

C++笔记-封装红黑树实现set和map
1.源码及框架分析 上面就是在stl库中set和map的部分源代码。 通过上图对框架的分析,我们可以看到源码中rb_tree⽤了⼀个巧妙的泛型思想实现,rb_tree是实 现key的搜索场景,还是key/value的搜索场景不是直接写死的,⽽是由第⼆个模板…...
deepseek模拟美团高级java开发工程师面试题
美团高级Java开发工程师面试题及参考答案 一、Java基础部分 1. HashMap实现原理 题目: 请详细描述JDK8中HashMap的实现原理为什么JDK8要将链表转为红黑树?阈值为什么是8?HashMap在多线程环境下会出现什么问题?如何解决&#x…...

留给王小川的时间不多了
王小川,这位头顶“天才少年”光环的清华学霸、搜狗输入法创始人、中国互联网初代技术偶像,正迎来人生中最难啃的硬骨头。 他在2023年创立的百川智能,被称为“大模型六小虎”之一。今年4月,王小川在全员信中罕见地反思过去两年工作…...
回溯算法:解锁多种问题的解决之门
经典回溯算法 回溯算法是一种基于深度优先搜索的算法,通过探索所有可能的候选解来找出所有可能的解。当候选解不满足条件时,会回溯到上一步,尝试其他的候选解。下面将介绍回溯算法在组合问题、切割问题、排列问题、子集问题、棋盘问题和图的…...

国产频谱仪性能如何?矢量信号分析仪到底怎么样?
矢量信号分析仪是一种高性能的电子测量设备,具备频谱分析、矢量信号分析、实时频谱分析、脉冲信号分析、噪声系数测量、相位噪声测量等多种功能。它能够对各类复杂信号进行精确的频谱特性分析、调制质量评估、信号完整性检测以及干扰源定位等操作。广泛应用于通信、…...