iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【HarmonyOS】低代码元服务开发中的地图实现
  • 305
分享到

【HarmonyOS】低代码元服务开发中的地图实现

harmonyos华为 2023-09-12 16:09:03 305人浏览 安东尼
摘要

在元服务开发过程中,大家可能需要在应用中使用地图,如果使用SDK集成的方式,地图SDK包体积大小很大,集成后元服务大小可能会超过10M,这就超出了HAP包的大小限制。那么是否有其他途径可以在元服务中使用地图呢?笔者最近在学习AGC新推出的低

在元服务开发过程中,大家可能需要在应用中使用地图,如果使用SDK集成的方式,地图SDK包体积大小很大,集成后元服务大小可能会超过10M,这就超出了HAP包的大小限制。那么是否有其他途径可以在元服务中使用地图呢?笔者最近在学习AGC新推出的低代码开发元服务的文档时发现,他的景区模板(模板简介-基于模板开发元服务-低代码平台开发元服务-AppGallery Connect帮助中心 | 华为开发者联盟 (huawei.com))集成了地图但是并没有通过SDK的方式导入的地图,使用的是WEBView+本地html+腾讯javascript api GL的方式实现的地图,下面给大家讲述一下具体实现的流程。

【腾讯地图Javascript API GL】

首先我们在在腾讯地图官网找到Javascript API GL的文档JavaScript API | 腾讯位置服务 (qq.com)

我们需要注册帐号并且在控制台创建应用和key,然后就可以运行demo查看是否可以正常加载地图了。

cke_2348.png

这边我们将示例中的代码,拷贝到新建的文件demo.html中,将demo.html文件放置于HarmonyOS工程的资源目录下(entry/src/main/resources/rawfile/)。将上面申请的key替换示例代码中这边的key

      Hello world!                  

需要注意的是腾讯地图已经不再支持file://的方式使用Javascript API GL,所以我们在Android中通过WebView加载这个本地的html文件是无法使用这个js API的

webView.loadUrl("file:///android_asset/demo.html");

cke_5976.png

那是不是HarmonyOS中我们也束手无策了呢?

很惊喜的是:出于安全考虑,HarmonyOS中WebView虽然不支持直接通过File协议加载资源文件或本地文件。但是可以通过加载https或者Http地址的方式,加载本地的html文件,如下:

webView.load("https://example.com/rawfile/example.html");

这正好解决了我们的问题。

【WebView加载本地Html】

加载地图之前我们需要完成工程的权限设置,应用使用的是Web地图所以需要申请网络权限如下:

"reqPermissions": [ {   "name": "ohos.permission.INTERNET",   "mergeRule": {     "remove": [       "reason"     ]   } }]

然后我们需要实现的是WebView加载本地Html,在官网我们可以找到加载资源文件和本地文件的方法(WebView-常用组件开发指导-Java UI框架-UI-基于Java开发-开发-HarmonyOS应用开发

这边使用的是通过processResourceRequest方法访问文件,具体代码如下:

WebView webView= (WebView) findComponentById(ResourceTable.Id_webview);webView.getWebConfig().setJavaScriptPermit(true);webView.getWebConfig().setWebStoragePermit(true);webView.setWebAgent(new WebAgent() {   @Override   public ResourceResponse processResourceRequest(WebView webview, ResourceRequest request) {       final String authority = "com.example.javawebmap";       final String rawFile = "/rawfile/";       Uri requestUri = request.getRequestUrl();       if (authority.equals(requestUri.getDecodedAuthority())) {           String path = requestUri.getDecodedPath();           if (TextTool.isNullOrEmpty(path)) {               return super.processResourceRequest(webview, request);           }           if (path.startsWith(rawFile)) {               // 根据自定义规则访问资源文件               String rawFilePath = "entry/resources/rawfile/" + path.replace(rawFile, "");               String mimeType = URLConnection.guessContentTypeFromName(rawFilePath);               try {                   Resource resource = MainAbilitySlice.this.getContext().getResourceManager().getRawFileEntry(rawFilePath).openRawFile();                   return new ResourceResponse(mimeType, resource, null);               } catch (IOException e) {                   HiLog.info(TAG, "open raw file failed " + e.getMessage());               }           }       }       return super.processResourceRequest(webview, request);   }});

最后我们通过load的方式加载本地的demo.html文件

webView.load("https://com.example.javawebmap/rawfile/demo.html");

【运行效果】

最后我们就可以看到运行的效果了

cke_21912.png

如果需要跟地图进行进一步的开发或者交互我们可以使用webView.addJsCallback的方式,这个在上面的WebView使用说明中同样也有。至此我们通过WebView和腾讯地图Javascript API GL的方式完成简单地图的加载。

【参考文章】

模板简介-基于模板开发元服务-低代码平台开发元服务-AppGallery Connect帮助中心 | 华为开发者联盟 (huawei.com)

WebView-常用组件开发指导-Java UI框架-UI-基于Java开发-开发-HarmonyOS应用开发

JavaScript API | 腾讯位置服务 (qq.com)

 欲了解更多更全技术文章,欢迎访问https://developer.huawei.com/consumer/cn/forum/?ha_source=zzh 

来源地址:https://blog.csdn.net/weixin_44708240/article/details/130871511

您可能感兴趣的文档:

--结束END--

本文标题: 【HarmonyOS】低代码元服务开发中的地图实现

本文链接: https://www.lsjlt.com/news/404780.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle怎么显示表的字段
    如何显示 oracle 表的字段 在 Oracle 数据库中,可以使用 DESC 命令显示表的字段。 语法: DESC table_name 参数: table_name:要显示字段的表...
    99+
    2024-05-14
    oracle
  • oracle怎么看所有的表
    在 oracle 数据库中查看所有表的步骤:连接到数据库运行查询:select table_name from user_tables; 如何使用 Oracle 查看所有表 ...
    99+
    2024-05-14
    oracle
  • oracle怎么显示行数
    如何使用 oracle 显示行数 在 Oracle 数据库中,有两种主要方法可以显示行数: 1. 使用 COUNT 函数 SELECT COUNT(*) FROM table_n...
    99+
    2024-05-14
    oracle
  • oracle怎么显示百分比
    oracle中显示百分比的方法有:使用百分号“%”;使用to_char()函数;使用format()函数(oracle 18c及更高版本);创建自定义函数。 Oracle 显...
    99+
    2024-05-14
    oracle
  • oracle怎么删除列
    oracle 中删除列的方法有两种:1)使用 alter table table_name drop column column_name 语句;2)使用 drop colum...
    99+
    2024-05-14
    oracle
  • sql怎么查看表的索引
    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:mysql 的 information_schema.statistics、postg...
    99+
    2024-05-14
    mysql oracle
  • sql怎么查看索引
    您可以使用 sql 通过以下方法查看索引:show indexes 语句:显示表中定义的索引列表及其信息。explain 语句:显示查询计划,其中包含用于执行查询的索引。informat...
    99+
    2024-05-14
  • sql怎么查看存储过程
    如何查看 sql 存储过程的源代码:使用 show create procedure 语句直接获取创建脚本。查询 information_schema.routines 表的 routi...
    99+
    2024-05-14
  • sql怎么查看视图表
    要查看视图表,可以使用以下步骤:使用 select 语句获取视图中的数据。使用 desc 语句查看视图的架构。使用 explain 语句分析视图的执行计划。使用 dbms 提供...
    99+
    2024-05-14
    oracle python
  • sql怎么查看创建的视图
    可以通过sql查询查看已创建的视图,具体步骤包括:连接到数据库并执行查询select * from information_schema.views;查询结果将显示视图的名称、...
    99+
    2024-05-14
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作