一、导读
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…