HarmonyOS 鸿蒙Next需求: Flutter插件: huawei_map 地图插件适配

HarmonyOS 鸿蒙Next需求: Flutter插件: huawei_map 地图插件适配 【问题描述】:huawei_map 地图插件适配

【问题现象】:目前应用内其他功能均已实现包括huawei_location 剩余huawei_map未实现

【版本信息】:Flutter ohos; HarmonyOS NEXT

【复现代码】:不涉及

插件链接: https://pub.dev/packages/huawei_map

5 回复

你这个需求里有个关键点:pub.dev/packages/huawei_map 这个 Flutter 插件本质是 Android/iOS 的 HMS Map Kit Flutter 封装(官方页面也写的是 Flutter 插件对接 Map Kit SDK),它并没有现成的 Flutter ohos / HarmonyOS NEXT 平台实现,所以在 HarmonyOS NEXT 上“缺 huawei_map”是正常的。你要做的是 新增一个 Ohos 平台实现(适配),或换技术路线。
Sources: Huawei Map Flutter Plugin (pub.dev 文档)

下面给你 3 条可落地路线(按推荐程度):


路线 A(推荐):做一个“huawei_map 的 ohos 平台实现”,底层用 HarmonyOS NEXT 的 Map Kit(ArkTS)

HarmonyOS NEXT 其实有原生 Map Kit / MapComponent(支持地图展示、marker、线/面等覆盖物、相机控制等),所以最对口的适配方式是:Flutter 插件层保持 Dart API,不改业务代码;Ohos 侧用 MapComponent 实现同等能力
Sources: Map Kit - Map Display (ArkTS) Codelab, MapComponent(地图组件)API

适配大纲(你/团队要做的工作)

  1. 插件结构:做 federated plugin

    • 保留原 huawei_map 的 Android/iOS 实现
    • 新增一个 huawei_map_ohos(或在原仓库增加 ohos/ 实现),在 pubspec 里声明 platforms: ohos: ...
  2. 渲染层:把 MapComponent 放进 Flutter 页面 这一步取决于 Flutter ohos 是否支持你要的嵌入方式(通常是 PlatformView / Texture / 通过原生页面承载)。

    • 理想方案:实现一个“平台视图”把 ArkUI 的 MapComponent 嵌进去(类似 AndroidView)
    • 如果 Flutter ohos 当前版本对 PlatformView 支持不完整:退一步,用“打开原生页面显示地图”(见路线 B)
  3. 能力层:MethodChannel + EventChannel

    • MethodChannel:addMarker / moveCamera / setMapType / addPolyline / takeSnapshot…
    • EventChannel:onMapClick / onMarkerClick / cameraIdle / locationButtonClick…
  4. 功能映射(从你需求看最重要的)

    • 口径建议:先实现你们业务必须的 20%:展示、定位、marker、轨迹线、区域面、缩放移动
    • 路径规划/搜索等高级能力后补(Map Kit 也支持,但插件工作量会明显上升)

路线 B(更省时间):Flutter 页面不嵌地图,改为“跳转到 ArkUI 地图页”

如果你们只要“能用华为地图”,不强求地图必须嵌在 Flutter widget 树里,这是最快落地方式:

  • Flutter 调 MethodChannel.openMapPage(params)
  • Ohos 侧启动一个 UIAbility 页面,里面直接用 MapComponent 实现地图与交互
  • 地图结果(选点/选 POI)再回传给 Flutter

优点:实现成本低、稳定性高;缺点:地图无法作为 Flutter UI 的一部分组合布局。


路线 C(备选):WebView/H5 地图方案

用 WebView 加载 Web 版地图(如果你们业务允许、且地图服务条款允许),通过 JSBridge 通信。
优点:跨平台成本低;缺点:性能、体验、离线/系统能力集成通常不如原生 Map Kit。

更多关于HarmonyOS 鸿蒙Next需求: Flutter插件: huawei_map 地图插件适配的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


楼主,这个建议你提交工单,这样会比在提问区更快的解决。

希望可以早点适配

鸿蒙Next使用ArkUI框架,Flutter插件huawei_map适配需基于鸿蒙原生地图SDK(Map Kit),通过NAPI实现Flutter与鸿蒙原生层通信。应使用ETS/ArkTS重写插件核心逻辑,替换原有Android/iOS平台实现,不支持Java或C桥接。当前Map Kit需集成HMS Core SDK,配置权限及账户信息后即可调用地图组件。

目前 huawei_map Flutter 插件仅提供了 Android 和 iOS 平台的实现,尚未原生适配 HarmonyOS NEXT (纯鸿蒙/OpenHarmony)
由于 HarmonyOS NEXT 已不再兼容 Android,该插件无法直接复用 Android 侧代码,需要在插件中新增 ohos 平台支持,通过平台通道对接 HarmonyOS 地图服务(Map Kit)的 ArkUI 或 Native 能力。华为地图服务本身已在 HarmonyOS NEXT 上发布 Native SDK,但对应的 Flutter 插件适配包尚未在 pub.dev 正式提供。
您项目中 huawei_location 已实现,很可能是使用了其已适配或官方提供的 ohos 版本;而 huawei_map 若仍缺失,则表示该插件的 ohos 适配尚未就绪。当前可等待华为或社区发布适配版,或自行参照 huawei_location 的 ohos 实现方式为 map 插件桥接 HarmonyOS 地图接口。

回到顶部