剩余95分钟读完

地图服务(HarmonyOS)

剩余95分钟读完

1. 介绍

简介

地图HarmonyOS Java SDK是基于Java语言为HarmonyOS 2.0及以上系统开发的接口,地图数据可以覆盖海外绝大多数国家,支持多种语言。地图采用WGS84 GPS坐标系,满足绝大多数海外地图开发的需求。您可以轻松地在自己的HarmonyOS应用中加入地图相关的功能,当前支持功能如下:

  • 地图呈现:包括建筑、道路、水系、兴趣点等。
  • 地图交互:控制地图的交互手势和交互按钮。
  • 地图绘制:添加位置标记,以及各种形状等。

您将建立什么

您可通过地图服务SDK开发地图相关的APP,比如:

  • 运动健康类APP:通过地图服务SDK可以显示地图,用户定位和路径计算等功能。
  • 社交类APP:通过地图服务SDK可以分享自己的位置。
  • 基本地图APP:通过当前指导,可以建立一个展示基本地图的APP。

您将会学到什么

  • 如何在华为开发者联盟上创建应用以及配置应用的相关信息。
  • 如何从华为开发者联盟的Map服务开发者文档获取地图示例代码。
  • 如何使用DevEco Studio集成地图服务SDK进行地图功能开发。
  • 如何构建地图样例并展示。

2. 您需要什么

硬件要求

  • 计算机(台式机或笔记本电脑),使用Windows操作系统。
  • 华为智能手表一部(2.0.0及以上版本),用于运行开发调试版本的APP。

软件要求

3. 能力接入准备

集成Map Kit能力,您需要完成以下准备工作:

  • 在AppGallery Connect创建HarmonyOS应用
  • 创建DevEco Studio的Java工程
  • 生成数字证书和Profile文件
  • 配置应用签名信息
  • 生成签名证书指纹
  • 配置签名证书指纹
  • 配置Maven仓地址
具体操作,请按照地图服务指南文档开发准备中详细说明来完成。

4. 开通地图服务

  1. 登录AppGallery Connect网站,选择"我的项目"。
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要开通地图服务的应用。
  3. 前往"项目设置 > API管理"中开启"地图服务"权限。

5. 集成SDK

添加应用的AppGallery Connect配置文件

  1. 下载应用中的"agconnect-services.json"配置文件。
  2. 将"agconnect-services.json"配置在应用级目录下。

添加编译依赖

  1. 打开应用级的"build.gradle"文件。
  2. 在"dependencies"中添加如下编译依赖。
    dependencies { implementation 'com.huawei.hms:maps-harmony:{version}' }

6. 开发地图功能

  1. 添加权限。
    a) 在"config.json"文件中的"module"中添加下列权限:
    <!–允许程序使用地图服务桥接能力–>
    "allowClassMap": true
    b) 在"config.json"文件中的"reqPermissions"字段中添加下列权限:
    <!--允许使用网络socket--> ohos.permission.INTERNET <!--允许程序获取网络信息状态--> ohos.permission.GET_NETWORK_INFO

    示例代码如下:

    { "module": { "allowClassMap": true, "reqPermissions": [ { "name": "ohos.permission.INTERNET", "reason": "access internet", "usedScene": { "ability": [ "com.mycamera.MainAbility" ], "when": "always" } }, { "name": "ohos.permission.GET_NETWORK_INFO", "reason": "GET_NETWORK_INFO", "usedScene": { "ability": [ "com.mycamera.MainAbility" ], "when": "always" } } ] } }
  2. 在MainAbilitySlice的onStart(Intent intent)方法中加载MapView,并调用getMapAsync()来注册回调。在onMapReady回调中获取HuaweiMap对象。创建MapView对象前,先调用"CommonContext.setContext(this);"保存Ability,以便初始化地图功能。
    public void onStart(Intent intent) { super.onStart(intent); CommonContext.setContext(this); MapView mapView = new MapView(this); // 创建MapView mapView.onCreate(); // 获取HuaweiMap对象 mapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(HuaweiMap huaweiMap) { HuaweiMap mHuaweiMap = huaweiMap; mHuaweiMap.setOnMapClickListener(new OnMapClickCallback() { @Override public void onMapClick(Object object) { new ToastDialog(CommonContext.getContext()).setText("onMapClick ").show(); } }); } }); // 创建Layout ComponentContainer.LayoutConfig config = new ComponentContainer.LayoutConfig(ComponentContainer.LayoutConfig.MATCH_PARENT, ComponentContainer.LayoutConfig.MATCH_PARENT); PositionLayout myLayout = new PositionLayout(this); myLayout.setLayoutConfig(config); ShapeElement element = new ShapeElement(); element.setShape(ShapeElement.RECTANGLE); element.setRgbColor(new RgbColor(255, 255, 255)); // 加载MapView myLayout.addComponent(mapView); super.setUIContent(myLayout); }
  3. 在MainAbilitySlice的onStart()、onActive()、onInactive()、onBackground()、onForeground()和onStop()方法中调用MapView对应的方法。

运行应用

开发完成后,在菜单栏中,点击"Run > Run ‘模块名称‘"或,或使用默认快捷键"Shift+F10"运行应用。DevEco Studio启动HAP的编译构建和安装。安装成功后,会自动运行安装的HarmonyOS应用。

7. 产品联调和测试

打开开发调试版本的地图Demo后,查看地图是否能够展示。

8. 恭喜您

干得好,您已经成功完成了codelab并学到了:

  • 如何在开发者联盟中配置地图相关APP
  • 如何从开发者联盟的Map服务开发者文档获取地图Demo代码
  • 如何使用DevEco Studio集成Map SDK进行地图功能开发
  • 如何构建地图并展示

9. 参考

  1. 造成返回码010001或010002可能的原因? 更多错误码解析请参见错误码。
  2. 更多关于地图服务的功能请参见地图服务指南文档。
  3. 您可以点击下载源码。
Code copied