简介

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

您将建立什么

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

您将会学到什么

硬件要求

软件要求

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

具体操作,请按照地图服务指南文档开发准备中详细说明来完成。
  1. 登录AppGallery Connect网站,选择"我的项目"。
  2. 在项目列表中找到您的项目,在项目下的应用列表中选择需要开通地图服务的应用。
  3. 前往"项目设置 > API管理"中开启"地图服务"权限。

添加应用的AppGallery Connect配置文件

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

添加编译依赖

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

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

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

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