1. 介绍
简介
地图HarmonyOS Java SDK是基于Java语言为HarmonyOS 2.0及以上系统开发的接口,地图数据可以覆盖海外绝大多数国家,支持多种语言。地图采用WGS84 GPS坐标系,满足绝大多数海外地图开发的需求。您可以轻松地在自己的HarmonyOS应用中加入地图相关的功能,当前支持功能如下:
- 地图呈现:包括建筑、道路、水系、兴趣点等。
- 地图交互:控制地图的交互手势和交互按钮。
- 地图绘制:添加位置标记,以及各种形状等。
您将建立什么
您可通过地图服务SDK开发地图相关的APP,比如:
- 运动健康类APP:通过地图服务SDK可以显示地图,用户定位和路径计算等功能。
- 社交类APP:通过地图服务SDK可以分享自己的位置。
- 基本地图APP:通过当前指导,可以建立一个展示基本地图的APP。
您将会学到什么
- 如何在华为开发者联盟上创建应用以及配置应用的相关信息。
- 如何从华为开发者联盟的Map服务开发者文档获取地图示例代码。
- 如何使用DevEco Studio集成地图服务SDK进行地图功能开发。
- 如何构建地图样例并展示。
3. 能力接入准备
集成Map Kit能力,您需要完成以下准备工作:
- 在AppGallery Connect创建HarmonyOS应用
- 创建DevEco Studio的Java工程
- 生成数字证书和Profile文件
- 配置应用签名信息
- 生成签名证书指纹
- 配置签名证书指纹
- 配置Maven仓地址
4. 开通地图服务
- 登录AppGallery Connect网站,选择"我的项目"。
- 在项目列表中找到您的项目,在项目下的应用列表中选择需要开通地图服务的应用。
- 前往"项目设置 > API管理"中开启"地图服务"权限。

5. 集成SDK
添加应用的AppGallery Connect配置文件
- 下载应用中的"agconnect-services.json"配置文件。

- 将"agconnect-services.json"配置在应用级目录下。

添加编译依赖
- 打开应用级的"build.gradle"文件。

- 在"dependencies"中添加如下编译依赖。
dependencies { implementation 'com.huawei.hms:maps-harmony:{version}' }
6. 开发地图功能
- 添加权限。
a) 在"config.json"文件中的"module"中添加下列权限:
b) 在"config.json"文件中的"reqPermissions"字段中添加下列权限:<!–允许程序使用地图服务桥接能力–>
"allowClassMap": true<!--允许使用网络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" } } ] } } - 在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); } - 在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. 参考
- 造成返回码010001或010002可能的原因?
- 项目中App ID与AppGallery Connect上不一致。
- 未配置指纹。需在本地生成签名证书指纹,然后在AppGallery Connect中配置。
- 未配置应用的AppGallery Connect配置文件,请参见添加当前应用的AppGallery Connect配置文件。
- API key没有使用encodeURI转码。
- 更多关于地图服务的功能请参见地图服务指南文档。
- 您可以点击下载源码。
剩余