【HarmonyOS 5】Map Kit 地图服务之应用内地图加载

news2025/5/24 12:56:35

#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

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

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

相关文章

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) 报错 解决方…

通过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"…

视频监控管理平台EasyCVR结合AI分析技术构建高空抛物智能监控系统,筑牢社区安全防护网

高空抛物严重威胁居民生命安全与公共秩序&#xff0c;传统监管手段存在追责难、威慑弱等问题。本方案基于EasyCVR视频监控与AI视频分析技术&#xff08;智能分析网关&#xff09;&#xff0c;构建高空抛物智能监控系统&#xff0c;实现24小时实时监测、智能识别与精准预警&…

2.2.1 05年T1复习

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

Python-11(集合)

与字典类似&#xff0c;集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的&#xff0c;并且也是无序的。 创建集合 使用花括号 set {"python","Java"} print(type(set)) 使用集合推导式 set {s for s in "python"} print(set…

Opixs: Fluxim推出的全新显示仿真模拟软件

Opixs 是 Fluxim 最新研发的显示仿真模拟软件&#xff0c;旨在应对当今显示技术日益复杂的挑战。通过 Opixs&#xff0c;研究人员和工程师可以在制造前&#xff0c;设计并验证 新的像素架构&#xff0c;从而找出更功节能、色彩表现更优的布局方案。 Opixs 适用于学术研究和工业…

佰力博与您探讨PVDF薄膜极化特性及其影响因素

PVDF&#xff08;聚偏氟乙烯&#xff09;薄膜的极化是其压电性能形成的关键步骤&#xff0c;通过极化处理可以显著提高其压电系数和储能能力。极化过程涉及多种方法和条件&#xff0c;以下从不同角度详细说明PVDF薄膜的极化特性及其影响因素。 1、极化方法 热极化&#xff1a;…

自动获取ip地址安全吗?如何自动获取ip地址

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

STM32:深度解析RS-485总线与SP3485芯片

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

亚马逊搜索代理: 终极指南

文章目录 前言一、为什么需要代理来搜索亚马逊二、如何选择正确的代理三、搜索亚马逊的最佳代理类型四、为亚马逊搜索设置代理五、常见挑战及克服方法六、亚马逊搜索的替代方法总结 前言 在没有代理的情况下搜索亚马逊会导致 IP 禁止、验证码和速度限制&#xff0c;从而使数据…

C++笔记-封装红黑树实现set和map

1.源码及框架分析 上面就是在stl库中set和map的部分源代码。 通过上图对框架的分析&#xff0c;我们可以看到源码中rb_tree⽤了⼀个巧妙的泛型思想实现&#xff0c;rb_tree是实 现key的搜索场景&#xff0c;还是key/value的搜索场景不是直接写死的&#xff0c;⽽是由第⼆个模板…

留给王小川的时间不多了

王小川&#xff0c;这位头顶“天才少年”光环的清华学霸、搜狗输入法创始人、中国互联网初代技术偶像&#xff0c;正迎来人生中最难啃的硬骨头。 他在2023年创立的百川智能&#xff0c;被称为“大模型六小虎”之一。今年4月&#xff0c;王小川在全员信中罕见地反思过去两年工作…

国产频谱仪性能如何?矢量信号分析仪到底怎么样?

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

熔断器(Hystrix,Resilience4j)

熔断器 核心原理​ 熔断器通过监控服务调用失败率&#xff0c;在达到阈值时自动切断请求&#xff0c;进入熔断状态&#xff08;类似电路保险丝&#xff09;。其核心流程为&#xff1a; 关闭状态&#xff08;Closed&#xff09;​​&#xff1a;正常处理请求&#xff0c;统计失…

C++23 容器从其他兼容范围的可构造性与可赋值性 (P1206R7)

文章目录 背景与动机提案内容与实现细节提案 P1206R7实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 总结 C23标准引入了对容器构造和赋值的新特性&#xff0c;这些特性使得容器能够更灵活地从其他兼容范围初始化&#xff0c;并支持从范围赋值。这些改进由提案…

多通道振弦式数据采集仪MCU安装指南

设备介绍 数据采集仪 MCU集传统数据采集器与5G/4G,LoRa/RS485两种通信功能与一体的智能数据采集仪。该产品提供振弦、RS-485等的物理接口&#xff0c;能自动采集并存储多种自然资源、建筑、桥梁、城市管廊、大坝、隧道、水利、气象传感器的实时数据&#xff0c;利用现场采集的数…

SOC-ESP32S3部分:9-GPIO输入按键状态读取

飞书文档https://x509p6c8to.feishu.cn/wiki/L6IGwHKV6ikQ08kqwAwcAvhznBc 前面我们学习了GPIO的输出&#xff0c;GPIO输入部分其实也是一样的&#xff0c;这里我们使用按键作为GPIO输入例程讲解&#xff0c;分三步走。 查看板卡原理图&#xff0c;确定使用的是哪个GPIO查看G…

Ubuntu20.04的安装(VMware)

1.Ubuntu20.04.iso文件下载 下载网址&#xff1a;ubuntu-releases-20.04安装包下载_开源镜像站-阿里云 2.创建虚拟环境 2.1打开VMware与创建新虚拟机 点击创建新虚拟机 如果没下好可以点击稍后安装操作系统 选择linux版本选择Ubuntu 64位然后点击下一步。 注意这里需要选择一…

【论文阅读】LLaVA-OneVision: Easy Visual Task Transfer

LLaVA-OneVision: Easy Visual Task Transfer 原文摘要 研究背景与目标 开发动机&#xff1a; 基于LLaVA-NeXT博客系列对数据、模型和视觉表征的探索&#xff0c;团队整合经验开发了开源大型多模态模型 LLaVA-OneVision。 核心目标&#xff1a; 突破现有开源LMM的局限&#xf…

Spring Boot 项目多数据源配置【dynamic datasource】

前言&#xff1a; 随着互联网的发展&#xff0c;数据库的读写分离、数据迁移、多系统数据访问等多数据源的需求越来越多&#xff0c;我们在日常项目开发中&#xff0c;也不可避免的为了解决这个问题&#xff0c;本篇来分享一下在 Spring Boot 项目中使用多数据源访问不通的数据…