手把手教你玩转HarmonyOS版地图应用开发
一、导读
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.com/cn/docs/documentation/doc-guides/start-overview-000000000002960
第二步 配置应用的签名信息
应用工程创建完成后,需要配置签名信息,才可以使用真机调试和发布应用。
第三步 获取应用的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/harmonyos-sdk/summary/
手把手教你玩转HarmonyOS版地图应用开发的更多相关文章
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
四. 实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...
- 转:变手把手教你玩转SOCKET模型之重叠I/O篇
手把手教你玩转SOCKET模型之重叠I/O篇 “身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙 ...
- 手把手教你玩转 CSS3 3D 技术
css3的3d起步 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2D事物,从而展现3 ...
- 手把手教你玩转CSS3 3D技术
手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...
- 知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一
知识全聚集 .Net Core 技术突破 | 我用C#手把手教你玩微信自动化一 教程 01 | 模块化方案一 02 | 模块化方案二 03 | 简单说说工作单元 其他教程预览 分库分表项目实战教程 G ...
- 手把手教你怎么用ArcgisOnline发布地图服务
Arcgis推出了Arcgis Online,但是大家都不知道这是个什么东西,怎么用这个东西,今天这篇文章手把手的教你如何使用Arcgisonline发布地图服务. 一.ArcgisOnline简介 ...
- 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完毕port(Completion Port)具体解释 ...
- 手把手教你玩微信小程序跳一跳
最近微信小程序火的半边天都红了,虽然不会写,但是至少也可以仿照网上大神开发外挂吧!下面手把手教妹纸们(汉纸们请自觉的眼观耳听)怎么愉快的在微信小游戏中获得高分. 废话不多说,咱们这就发车了!呸!咱们这 ...
- 手把手教你玩转 Gitea|使用 Helm 在 K3s 上安装 Gitea
前言 在前面的文章中,演示了如何用 Docker 镜像和 Windows 二进制包来安装运行 Gitea.今天是玩转 Gitea 系列的使用 Helm 在 K3s 上安装 Gitea. 关于 Gite ...
随机推荐
- .NET Worker Service 作为 Windows 服务运行及优雅退出改进
上一篇文章我们了解了如何为 Worker Service 添加 Serilog 日志记录,今天我接着介绍一下如何将 Worker Service 作为 Windows 服务运行. 我曾经在前面一篇文章 ...
- 大白话带你认识JVM
如果在文中用词或者理解方面出现问题,欢迎指出.此文旨在提及和而不深究,但会尽量效率地把知识点都抛出来 一.JVM的基本介绍 JVM 是 Java Virtual Machine 的缩写,它是一个虚构出 ...
- NOIP模拟测试17「入阵曲·将军令·星空」
入阵曲 题解 应用了一种美妙移项思想, 我们先考虑在一维上的做法 维护前缀和$(sum[r]-sum[l-1])\%k==0$可以转化为 $sum[r]\% k==sum[l-1]\%k$开个桶维护一 ...
- CMD批处理(4)——批处理循环语句结构
FOR函数,对一组文件批量执行命令,基本模式如下 1.文件搜索 for [/D] [/R [路径]] %%变量 in (集合) do (命令) 2.等差数列 for /L %%变量 in (开始,间隔 ...
- Docker笔记--镜像&基于GO项目创建Docker镜像
Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...
- Windows10上开启WSL2(Windows Subsystem for Linux 2)及Docker Desktop For Windows
什么是WSL2 WSL2(Windows Subsystem for Linux 2)是适用于Linux的Windows子系统体系结构的一个新版本,它支持适用于Linux的Windows子系统在Win ...
- 乘风破浪,.Net Core遇见Dapr,为云原生而生的分布式应用运行时
Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2万,超 ...
- css中的毛玻璃(不是透明度) 简单文档
其实毛玻璃很简单 只需要在css中加入 backdrop-filter:blur(8px); 8px是模糊力度 注意:使用该方法前需要设置背景不能是透明(如果是显示这个元素下面的图像记得半透明,例子就 ...
- Linux中cut,sort,uniq和wc的用法
一.cut是一个选取命令,就是将一段数据经过分析,取出我们想要的.一般来说,选取信息通常是针对"行"来进行分析的,并不是整篇信息分析的.1.语法格式为:cut [-bn] [fil ...
- Harbor镜像仓库
Harbor镜像仓库 作者 刘畅 时间 2020-7-11 微信 目录 1.下载离线安装包 1 2.安装docker 1 3.安装docker-compose 2 4.自签TLS证书 2 4.1.创建 ...