【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. AppGallery Connect 选择创建的应用,填写Profile名称,选择Profile类型,选择设备(此处我生成的为发布证书),勾选受限权限。

2. 若选择的是调试证书,请在此处添加设备

需要注意的是:发布与调试的区别为调试证书需要选择设备ID,使用该 Profile 打包的应用在开发阶段只可安装在指定的手机,如何获取设备 UDID 可查看文章结尾。

3. 下载生成的 Profile 文件(p7b)

配置项目签名

1. 经过前几步的操作,已经拿到了 .p12.csr.cer.p7b 四个文件,点击 DevEco 鸿蒙开发工具右上角 Project Structure 按钮,即可进入到签名配置页面。

2. 按描述选择对应格式文件,输入第三步中设置的证书密码与证书别名,点击 OK 即可完成受限权限的配置,后续使用第六步勾选的受限权限将不会再进行编译报错限制。

项目开发 

配置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管理,找到地图服务开关,打开开关。

配置签名证书指纹 

 在“项目设置 > 常规”页面的“应用”区域,点击“SHA256证书/公钥指纹”后的“添加公钥指纹(HarmonyOS API 9及以上)”。 在“选择SHA256公钥指纹”窗口,选择应用/元服务使用的证书对应的指纹,点击“确认”。

 

地图展示

本篇文章只介绍如何配置并展示地图,更多操作还需详细查看官方接口文档:文档中心

导入 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(1-6-1)Java 集合

目录 0.知识概述&#xff1a; 1.集合 1.1 集合继承关系类图 1.2 集合遍历的三种方式 1.3 集合排序 1.3.1 Collections实现 1.3.2 自定义排序类 2 List 集合概述 2.1 ArrayList &#xff08;1&#xff09;特点 &#xff08;2&#xff09;常用方法 2.2 LinkedList 3…

Vue.extend

Vue.extend 是 Vue 2 中的一个重要 API&#xff0c;用于基于一个组件配置对象创建一个“可复用的组件构造函数”。它是 Vue 内部构建组件的底层机制之一&#xff0c;适用于某些高级用法&#xff0c;比如手动挂载组件、弹窗动态渲染等。 ⚠️ 在 Vue 3 中已被移除&#xff0c;V…

【MySQL系列】SQL 分组统计与排序

博客目录 引言一、基础语法解析二、GROUP BY 的底层原理三、ORDER BY 的排序机制四、NULL 值的处理策略五、性能优化建议六、高级变体查询 引言 在现代数据分析和数据库管理中&#xff0c;分组统计是最基础也是最核心的操作之一。无论是业务报表生成、用户行为分析还是系统性能…

spring中的InstantiationAwareBeanPostProcessor接口详解

一、接口定位与核心功能 InstantiationAwareBeanPostProcessor是Spring框架中扩展Bean生命周期的关键接口&#xff0c;继承自BeanPostProcessor。它专注于Bean的实例化阶段&#xff08;对象创建和属性注入&#xff09;的干预&#xff0c;而非父接口的初始化阶段&#xff08;如…

uniapp使用sse连接后端,接收后端推过来的消息(app不支持!!)

小白终成大白 文章目录 小白终成大白前言一、什么是SSE呢&#xff1f;和websocket的异同点有什么&#xff1f;相同点不同点 二、直接上实现代码总结 前言 一般的请求就是前端发 后端回复 你一下我一下 如果需要有什么实时性的 后端可以主动告诉前端的技术 我首先会想到 webso…

QML学习06Button

QMLx学习06Button 1、Button1.1 状态改变&#xff08;checkable&#xff09;1.2 排斥性&#xff08;autoExclusive&#xff09;1.3 重复触发&#xff08;autoRepeat&#xff09;、第一次触发延时时间&#xff08;autoRepeatDelay&#xff09;、相互之间触发的时间间隔&#xff…

什么是前端工程化?它有什么意义

前端工程化是指通过工具、流程和规范,将前端开发从手工化、碎片化的模式转变为系统化、自动化和标准化的生产过程。其核心目标是 提升开发效率、保障代码质量、增强项目可维护性,并适应现代复杂 Web 应用的需求。 一、前端工程化的核心内容 1. 模块化开发 代码模块化:使用 …

校园二手交易系统

该交易平台分为两部分&#xff0c;前台和后台。用户在前台进行商品选购以及交易&#xff1b;管理员登录后台可以对商品进行维护&#xff0c;主要功能包含&#xff1a; 后台系统的主要功能模块如下&#xff1a; 登录功能、注册功能、后台首页 系统设置&#xff1a; 菜单管理、…

06-Web后端基础(java操作数据库)

1. 前言 在前面我们学习MySQL数据库时&#xff0c;都是利用图形化客户端工具(如&#xff1a;idea、datagrip)&#xff0c;来操作数据库的。 我们做为后端程序开发人员&#xff0c;通常会使用Java程序来完成对数据库的操作。Java程序操作数据库的技术呢&#xff0c;有很多啊&a…

uni-app学习笔记十三-vue3中slot插槽的使用

在页面开发中&#xff0c;通常一个页面分为头部&#xff0c;尾部&#xff0c;和中心内容区。其中头部&#xff0c;尾部一般比较固定&#xff0c;而中心区域往往是多样的&#xff0c;需要自定义开发。此时&#xff0c;我们可以引入slot(插槽)来实现这一目标。<slot> 作为一…

Agent模型微调

这篇文章讲解&#xff1a; 把 Agent 和 Fine-Tuning 的知识串起来&#xff0c;在更高的技术视角看大模型应用&#xff1b;加深对 Agent 工作原理的理解&#xff1b;加深对 Fine-Tuning 训练数据处理的理解。 1. 认识大模型 Agent 1.1 大模型 Agent 的应用场景 揭秘Agent核心…

【最新版】Arduino IDE的安装入门Demo

1、背景说明 1、本教程编写日期为2025-5-24 2、Arduino IDE的版本为&#xff1a;Arduino IDE 2.3.6 3、使用的Arduino为Arduino Uno 1、ArduinoIDE的安装 1、下载。网址如下&#xff1a;官网 2、然后一路安装即可。 期间会默认安装相关驱动&#xff0c;默认安装即可。 3、安…

Python应用运算符初解

大家好!运算符是编程中不可或缺的工具&#xff0c;它们能帮助我们执行各种计算和操作。无论是数学运算&#xff0c;还是变量赋值&#xff0c;运算符都在背后默默发挥作用。对于编程初学者来说&#xff0c;理解并掌握常见运算符的用法是迈向编程世界的重要一步。 算术运算符: 加…

小米2025年校招笔试真题手撕(二)

一、题目 给一个长度为n的序列和一个整数x&#xff0c;每次操作可以选择序列中的一个元素&#xff0c;将其从序列中删去&#xff0c;或者将其值加一。 问至少操作多少次&#xff0c;可以使操作后的序列&#xff08;可以为空&#xff09;中数字之和是x的倍数。 输入描述&#…

CNN卷积神经网络到底卷了啥?

参考视频&#xff1a;卷积神经网络&#xff08;CNN&#xff09;到底卷了啥&#xff1f;8分钟带你快速了解&#xff01; 我们知道&#xff1a; 图片是由像素点构成&#xff0c;即最终的成像效果是由背后像素的颜色数值所决定 在Excel中&#xff1a;有这样一个由数值0和1组成的66…

教师技术知识对人工智能赋能下教学效果的影响:以教学创新为中介的实证研究

教师技术知识对人工智能赋能下教学效果的影响&#xff1a;以教学创新为中介的实证研究 摘要 随着教育信息化的快速发展&#xff0c;人工智能技术在教育领域的应用日益广泛&#xff0c;为教育教学带来了深刻变革。然而&#xff0c;当前关于教师技术知识如何影响人工智能赋能下的…

Linux驱动学习笔记(九)

设备模型 1.kobject的全称为kernel object&#xff0c;即内核对象&#xff0c;每一个kobject都会对应到系统/sys/下的一个目录&#xff0c;这些目录的子目录也是一个kobject&#xff0c;以此类推&#xff0c;这些kobject构成树状关系&#xff0c;如下图&#xff1a; kobject定…

25年上半年五月之软考之设计模式

目录 一、单例模式 二、工厂模式 三、 抽象工厂模式 四、适配器模式 五、策略模式 六、装饰器模式 ​编辑 考点&#xff1a;会挖空super(coffeOpertion); 七、代理模式 为什么必须要使用代理对象&#xff1f; 和装饰器模式的区别 八、备忘录模式 一、单例模式 这个…

Python打卡第36天

浙大疏锦行 作业&#xff1a; 对之前的信贷项目&#xff0c;利用神经网络训练下&#xff0c;尝试用到目前的知识点让代码更加规范和美观。 import torch import torch.nn as nn import torch.optim as optim from sklearn.model_selection import train_test_split from sklear…

全面理解类和对象(下)

文章目录 再谈构造函数初始化列表 static概念&#xff1a; 友元友元函数友元类 内部类再次理解类和对象 再谈构造函数 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; };上述代码有了…