鸿蒙Flutter实战:19-Flutter集成高德地图,跳转页面方式
前言
在之前的文章现有Flutter项目支持鸿蒙II中,介绍了如果使何第三方插件,同时给出了非常多的使用案例,如
flutter_inappwebview,video_player, image_picker 等,本文将开始介绍如何集成高德地图。
整体方案
通过 MethodChannel 进行消息通信,在 Dart 侧调用原生API,在 ArkTS 侧收到相关调用后,根据参数跳转到指定页面
Dart 侧
1 | static Future<dynamic> redirectNative(String url) { |
ArkTS 侧
在 ohos/entry/src/main/ets/entryability
创建 OhosPlugin.ets
文件,这里收到到消息后,调用 router.pushUrl
方法跳转到指定页面
1 | export default class OhosPlugin implements FlutterPlugin { |
插件写好后,需要在 EntryAbility 中注册:
1 | this.addPlugin(new OhosPlugin()) |
添加原生页面,回到 DevEco,在 pages 目录右键,创建一个空页面, 命名为 Amap
在 ohos/entry/oh-package.json
文件中引入高德地图SDK:
1 | "dependencies": { |
调用高德地图SDK,显示地图组件:
1 | import { AMap, MapsInitializer, MapView, MapViewComponent, MapViewManager, } from '@amap/amap_lbs_map3d'; |
调用
1 | PlartformCall.redirectNative('pages/Amap'); |
注意事项
如果在运行时,遇到以下错误, 根据官方提醒, 需要配置 useNormalizedOHMUrl
1 | ERROR: Bytecode HARs: [@amap/amap_lbs_map3d, @amap/amap_lbs_common] not supported when useNormalizedOHMUrl is not true. |
打开文件 /ohos/build-profile.json5
, 添加以下配置
1 | { |
截图
源码
https://gitee.com/zacks/flutter-ohos-demo