petalmaps_ohos
Flutter 花瓣地图(PetalMaps)插件,支持 HarmonyOS/OpenHarmony 平台。通过系统地图能力(@kit.MapKit 的 petalMaps)调起花瓣地图应用,实现打开首页、地点搜索、地点详情、路线规划、导航、打车等功能。
1. 安装与使用
1.1 安装方式
在工程目录的 pubspec.yaml 中添加依赖:
方式一:Pub 依赖(推荐)
dependencies:
petalmaps_ohos: ^0.0.1
方式二:Git 依赖
dependencies:
petalmaps_ohos:
git:
url: https://atomgit.com/oh-flutter/petalMaps_ohos.git
path: .
ref: main
方式三:本地路径依赖
dependencies:
petalmaps_ohos:
path: ../petalmaps_ohos
然后执行:
flutter pub get
1.2 使用案例
使用示例见 example 目录。
import 'package:petalmaps_ohos/petalmaps_ohos.dart';
final plugin = PetalmapsOhos();
// 打开地图首页
await plugin.openMapHomePage();
// 地点搜索
await plugin.openMapTextSearch(destinationName: '云谷');
// 查看地点详情
await plugin.openMapPoiDetail(
latitude: 32.02065982629459,
longitude: 118.788899213002,
destinationPoiId: '563233191438217472',
);
// 路线规划
await plugin.openMapRoutePlan(
latitude: 31.983015468224288,
longitude: 118.78058590757131,
);
// 导航
await plugin.openMapNavi(
latitude: 31.983015468224288,
longitude: 118.78058590757131,
);
// 打车
await plugin.openMapTaxi(
latitude: 31.983015468224288,
longitude: 118.78058590757131,
);
2. 约束与限制
2.1 兼容性
在以下版本中已测试通过:
| 项目 | 版本 |
|---|---|
| Flutter | 3.35.8-ohos-0.0.2 |
| Dart | 3.9.2 |
| SDK | 5.1.0(18) |
| IDE | DevEco Studio 6.0.2 Release |
| ROM | 6.0.0.130 SP15 |
2.2 权限与依赖
调起花瓣地图应用依赖系统 @kit.MapKit,无需在插件 HAR 的 module.json5 中额外声明权限。设备需已安装花瓣地图应用,否则调起可能失败。
3. API
“ohos Support” 列:yes 表示 OHOS 支持,no 表示不支持。
3.1 PetalmapsOhos(主入口)
| Name | return | Description | Type | ohos Support |
|---|---|---|---|---|
| getPlatformVersion() | Future<String?> | 获取平台版本信息 | function | yes |
| openMapHomePage() | Future<void> | 打开地图应用首页 | function | yes |
| openMapTextSearch({required String destinationName}) | Future<void> | 打开地图应用进行地点搜索 | function | yes |
| openMapPoiDetail({required double latitude, required double longitude, String? destinationPoiId}) | Future<void> | 打开地图应用查看地点详情 | function | yes |
| openMapRoutePlan({required double latitude, required double longitude, double? originLatitude, double? originLongitude, String? destinationName}) | Future<void> | 打开地图应用规划路线 | function | yes |
| openMapNavi({required double latitude, required double longitude, String? destinationName}) | Future<void> | 打开地图应用进行导航 | function | yes |
| openMapTaxi({required double latitude, required double longitude, String? destinationName}) | Future<void> | 打开地图应用打车页面 | function | yes |
3.2 参数说明
| 方法 | 必填参数 | 可选参数 |
|---|---|---|
| openMapTextSearch | destinationName:搜索目标名称 | - |
| openMapPoiDetail | latitude:纬度,longitude:经度 | destinationPoiId:POI ID |
| openMapRoutePlan | latitude:目的地纬度,longitude:目的地经度 | originLatitude、originLongitude:起点;destinationName:目的地名称 |
| openMapNavi | latitude:目的地纬度,longitude:目的地经度 | destinationName:目的地名称 |
| openMapTaxi | latitude:目的地纬度,longitude:目的地经度 | destinationName:目的地名称 |
4. 错误处理
所有方法在调起失败时会抛出 PlatformException,建议使用 try/catch 捕获:
try {
await plugin.openMapHomePage();
} on PlatformException catch (e) {
// e.code 为方法相关错误码,e.message 为系统返回信息
}
5. 遗留问题
无。
6. 其他
实现原理:Dart 通过 MethodChannel(petalmaps_ohos)调用原生方法;OHOS 端实现 AbilityAware 获取 UIAbilityContext,使用 @kit.MapKit 的 petalMaps.openMapHomePage、openMapTextSearch、openMapPoiDetail、openMapRoutePlan、openMapNavi、openMapTaxi 调起花瓣地图应用。
参考文档:华为地图 PetalMaps 调起能力
7. 开源协议
本项目采用 Apache License 2.0,详见 LICENSE 文件。
版权 © 坚果派