一、导读

7月31日,华为HarmonyOS开发者日将在杭州举办。为了不便更多开发者,高德开放平台地图SDK已在业内率先实现鸿蒙化迁徙和重构,全面适配HarmonyOS并面向开发者收费公布。开发者可到高德开放平台官网理解更多内容,获取版本下载、开发文档、常见问题等反对。

拜访高德开放平台:https://lbs.amap.com/

在往年6月2日,华为就正式公布了HarmonyOS。因为HarmonyOS在兼容Android上有特殊要求,如果APP利用是用Android API开发,开发者能够间接应用Android的SDK。

但如果APP用了HarmonyOS的API开发,就不能用Android的SDK而须要应用HarmonyOS版本的SDK。

为了不便开发者在HarmonyOS的相应设施中进行LBS服务的开发,高德开放平台率先进行了HarmonyOS适配,首批适配范畴包含地图和搜寻SDK,反对嵌入搭载HarmonyOS的手机、Pad及其他智能终端设备。

二、HarmonyOS地图SDK个性介绍

与高德开放平台Android地图SDK平滑切换

  • 已集成高德开放平台Android地图SDK的开发者可无缝切换到HarmonyOS地图SDK,无额定开发量。HarmonyOS与Android零碎间的接口变动由高德开放平台SDK适配层消化,SDK对外接口放弃不变。
  • 高德底层引擎对接HarmonyOS NDK,下层代码全面对接HarmonyOS SDK,所有零碎接口均应用HarmonyOS API。

继承高德开放平台Android/iOS地图SDK性能亮点

  • 开发者能够通过高德开放平台API和SDK,轻松实现地图的构建工作,将地图粗劣地出现在您的利用中。地图SDK不仅提供丰盛的地图覆盖物绘制能力,也反对搜寻、多种门路布局、坐标转换、间隔测量、面积计算等性能。
  • 适配HarmonyOS后的地图SDK仍旧反对与自定义地图SaaS平台等周边工具配合应用,开发者能够在平台中定制区域面、建筑物、水系、天空、路线、标注、行政边界共7大类40余种地图元素,灵便设计心仪的地图款式。更多地图SDK根底能力、自定义、可视化能力详情请参考高德开放平台官网。

HarmonyOS版地图SDK整体框架

HarmonyOS和Android零碎差别很大,简直所有的API都有调整,不少API都调整了实现计划,所以不能通过改包名来实现适配。咱们将原生SDK中所有调用Android的代码均切换为适配层,在适配层将SDK的接口一一适配到HarmonyOS接口。

HarmonyOS版地图SDK整体框架大抵如下:

三、如何集成-从零开始

第一步 搭建HarmonyOS开发环境

实现DevEco Studio装置、环境配置和工程创立,参考HarmonyOS官网阐明:https://developer.harmonyos.c...

第二步 配置利用的签名信息

利用工程创立实现后,须要配置签名信息,才能够应用真机调试和公布利用。

第三步 获取利用的appId

配置完签名信息之后,就能够获取以后利用的appId了,这个appId次要用于申请高德的apiKey,请确定最终公布利用的appId,避免最终高德SDK鉴权失败。

通过代码获取利用的appId形式如下:

getApplicationContext().getBundleManager().getBundleInfo(getBundleName(), 0).getAppId()

留神:目前通过DevEco Studio连贯云真机获取到的appId不全,只获取到了"包名_", 应用云真机调试高德地图SDK时会导致鉴权不通过。正确的appId模式为:"包名_签名信息", 例如:com.amap.demo_BGtGgVB3ASqU7XXXXV2/zhoYh6tFQHAd5DASWVTEAgvZfzrEGljjs=

第四步 在高德开放平台官网控制台申请API Key

创立新利用

从开放平台官网右上角入口-控制台,创立一个新利用。如果您之前曾经创立过利用,可间接跳过这个步骤。

增加新Key

在创立的利用上点击"增加新Key"按钮,在弹出的对话框中,顺次:输出利用名名称,抉择绑定的服务为“Harmony平台SDK”,输出AppID,如下图所示:

须要留神:1个Key只能用于一个利用(多渠道安装包属于多个利用),1个Key在多个利用上应用会呈现服务调用失败。

在浏览完高德地图API服务条款后,勾选此选项,点击“提交”,实现Key的申请,此时您能够在所创立的利用上面看到刚申请的Key了。

第五步 在代码中设置申请的Key

请应用API的形式将申请的高德API Key设置给高德地图SDK。

/** * 动静设置apiKey。 * * @param apiKey 在高德官网上申请的apiKey。 */MapsInitializer.setApiKey(String apiKey)

留神:请确保在调用任何高德地图SDK的接口之前将API Key设置给高德地图SDK,倡议放到Application的初始化之中。

实现以上5步之后,就能够欢快的应用HarmonyOS版高德地图SDK了。

四、如何应用-创立地图

应用地图SDK之前,须要在config.json文件中进行相干权限设置,确保地图功能能够失常应用。

第一步 配置config.json

首先,申明权限。

..."reqPermissions": [      {        "usedScene": {          "ability": [            "com.example.harmonysearchsdk.MainAbility"          ],          "when": "always"        },        "reason": "request internet",        "name": "ohos.permission.INTERNET"      }    ]...

第二步 向工程中增加地图开发包

将har包放入libs目录下,顺次增加依赖。

dependencies {    implementation files("libs/xxx.har")    //...}

或者间接应用引入libs下所有har包的形式:

dependencies {  implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])    //...}

第三步 初始化地图容器

设置Key

获取Key形式请参考上方“从零开始”章节第四步。

MapsInitializer.setApiKey("您的key");

创立MapView

public class BasicMapDemoSlice extends Ability {    private MapView mapView;    @Override    protected void onStart(Intent intent) {        super.onStart(intent);        initMapView();    }    private void initMapView() {        mapView = new MapView(this);        mapView.onCreate(null);        mapView.onResume();        DirectionalLayout.LayoutConfig config = new DirectionalLayout.LayoutConfig(                DirectionalLayout.LayoutConfig.MATCH_PARENT, DirectionalLayout.LayoutConfig.MATCH_PARENT);        mapView.setLayoutConfig(config);        super.setUIContent(mapView);    }    @Override    protected void onStop() {        super.onStop();        if (mapView != null) {            mapView.onDestroy();        }    }}

初始化地图并获取AMap对象

AMap aMap = mapView.getMap();aMap.setOnMapLoadedListener(new AMap.OnMapLoadedListener() {    @Override    public void onMapLoaded() {    // todo    }});

至此就能够看到地图展现,并且拿到AMap对象后,就能够往地图上增加点线面等覆盖物了。

五、获取更多详情和开发反对

拜访高德开放平台:https://lbs.amap.com/

获取HarmonyOS版高德地图SDK下载、开发文档、Demo等开发反对:https://lbs.amap.com/api/harm...