HarmonyOS MapKit 保姆级示例——1、显示地图

​前言

HarmonyOS的地图是一个非常重要的功能,其具体的API名称为MapKit,其具体连接为:HarmonyOS MapKit 具体API地址 我这里也是通过这个API进行学习的,但是API中有很多省略的地方,我们需要进行具体的实操,只有操作过一次才能真正的了解其整个过程,把过程中的各种坑都能填的上,否则在真正的开发过程中肯定会出现各种异常的,我这里就是为大家提前踩了坑的,希望本文能有一定的价值,为大家节约更多的时间。

前置配置

DevEco Studio真机调试完整方法演示——保姆级(HUAWEI nova 14演示机)-优快云博客

完整操作流程

​1、配置签名

需要点击菜单上面的【Build】选择【Generate Key and CSR】。

image-20250626161936834

完成后点击红色选框包裹的New按钮字样。

image-20250626162113863

按照提示选择存储名称与位置,并输入对应的pwd两次。

image-20250626162044132

输入一下Alias名称,然后点击【Next】。

image-20250626161515648

继续选择CSR文件存储位置。

image-20250626161810188

点击Finish后可以看到的效果。

image-20250626161907908

去对应的文件夹确认创建成功:

image-20250626162314510

2、申请数字证书

地址:https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/harmonyOSDevPlatform/9249519184596237889

image-20250626185711916

新增证书操作

image-20250626185833533

下载证书

image-20250626185931010

下载到本地

image-20250626190018264

3、APPID

这里就是你的项目对应的ID所以创建一个就会有,这里要开通地图功能。

image-20250626190746985

匹配包名

image-20250626190913399

image-20250626190943374

·可以看到两个包名是相互匹配的。

注:需要打开地图服务功能

image-20250626191045719

4、创建Profile文件

位置:

image-20250626191355646

添加设备

相对路径:DevEco Studio\sdk\default\openharmony\toolchains

使用cmd打开这个目录并运行:hdc shell bm get --udid

image-20250626191947563

添加到设备

image-20250626192120952

添加成功

image-20250626192203125

添加信息

image-20250626191606315

下载Profile

image-20250626192328793

对应下载的文件:

image-20250626192413335

5、整体联动配置

打开项目的结构

image-20250626192524009

添加签名

image-20250626192632382

逐一输入信息

image-20250626192811757

获取指纹信息

image-20250626192859317

复制下来。

82:CE:CE:76:59:BB:CC:8B:44:E2:55:7E:6E:B0:F6:F9:7D:E2:FE:4E:8D:CF:24:57:F3:6D:14:5F:35:12:43:93

image-20250626192949116

添加指纹

image-20250626193136278

6、记录Client ID

这里复制保存一下。

image-20250626193256410

添加到配置中

image-20250626193623845

7、添加index.ets代码

代码块

import { MapComponent, mapCommon, map } from '@kit.MapKit';
import { AsyncCallback } from '@kit.BasicServicesKit';


@Entry
@Component
struct HuaweiMapDemo {
  private TAG = "HuaweiMapDemo";
  private mapOptions?: mapCommon.MapOptions;
  private callback?: AsyncCallback<map.MapComponentController>;
  private mapController?: map.MapComponentController;
  private mapEventManager?: map.MapEventManager;


  aboutToAppear(): void {
    // 地图初始化参数,设置地图中心点坐标及层级
    this.mapOptions = {
      position: {
        target: {
          latitude: 39.9,
          longitude: 116.4
        },
        zoom: 10
      }
    };


    // 地图初始化的回调
    this.callback = async (err, mapController) => {
      if (!err) {
        // 获取地图的控制器类,用来操作地图
        this.mapController = mapController;
        // 返回地图组件的监听事件管理接口
        this.mapEventManager = this.mapController.getEventManager();
        let callback = () => {
          console.info(this.TAG, `on-mapLoad`);
        }
        this.mapEventManager.on("mapLoad", callback);


        // 执行自定义的方法
        this.customizedMethod();
      }
    };
  }


  // 自定义的方法
  private customizedMethod() {
    // ...
  }


  build() {
    Stack() {
      // 调用MapComponent组件初始化地图
      MapComponent({ mapOptions: this.mapOptions, mapCallback: this.callback })
        .width('100%')
        .height('100%')
    }.height('100%')
  }
}

运行到真机效果:

image-20250626194043159

效果:

03bb4f793781de6175c2b044801bf3a

总结

操作一定要细致,我第一没有成功,就是签名没搞明白,后来又搞了2次最终把这个流程呈现给大家,希望能给大家创造一定的价值,地图还是非常有用的东西,未来的很长时间我都会跟地图来打交道,这个过程我也会持续的输出我的完全通过测试的博客文章,持续的来创造更多的价值。

地图配置流程示例

以下为完整的地图配置流程概览,采用Markdown表格形式呈现:

步骤操作内容关键配置项备注
1申请API密钥开发者平台注册、获取Key需实名认证
2引入地图库引入地图库指定版本号
3创建容器设置width/height样式需固定尺寸
4初始化实例center, zoom, projection坐标系类型
5添加控件Zoom, Scale, Toolbar按需加载
6设置图层TileLayer, VectorLayerWMTS/WMS配置
7交互事件click, moveend监听回调函数绑定

坐标系转换公式(WGS84转Web墨卡托):

x=lon∗20037508.34/180 x = lon * 20037508.34 / 180 x=lon20037508.34/180
y=log⁡(tan⁡((90+lat)∗π/360))∗20037508.34/π y = \log(\tan((90 + lat) * \pi / 360)) * 20037508.34 / \pi y=log(tan((90+lat)π/360))20037508.34/π

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红目香薰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值