HARMONYOS_SETUP.md
6.18 KB
HarmonyOS 平台配置指南
本文档介绍如何在 HarmonyOS 平台上配置和使用 csp_amap_flutter_map 插件。
🎯 前置要求
1. 开发环境要求
- DevEco Studio: 4.0 或以上版本
- HarmonyOS Next: API 10 或以上
- Flutter: 3.1.5 或以上版本
- 高德地图 HarmonyOS SDK: 10.0.0 或以上版本
2. 申请 API Key
- 访问 高德开放平台
- 登录并进入控制台
- 创建 HarmonyOS 应用
- 获取 HarmonyOS 平台的 API Key
🔧 配置步骤
1. pubspec.yaml 配置
dependencies:
csp_amap_flutter_map:
git:
url: https://gitee.com/sto_workspace/flutter_map.git
ref: develop
2. 初始化设置
import 'package:csp_amap_flutter_map/csp_amap_flutter_map.dart';
import 'package:st_amap_flutter_base/st_amap_flutter_base.dart';
// 初始化高德地图
AMapInitializer.init(context,
apiKey: AMapApiKey(
androidKey: 'your_android_key',
iosKey: 'your_ios_key',
ohosKey: 'your_harmonyos_key')); // HarmonyOS API Key
// 合规处理
AMapInitializer.updatePrivacyAgree(
AMapPrivacyStatement(hasContains: true, hasShow: true, hasAgree: true));
3. HarmonyOS 项目配置
ohos/oh-package.json5
{
"name": "csp_amap_flutter_map",
"version": "1.0.0",
"description": "高德地图SDK Flutter插件 - HarmonyOS 实现",
"main": "index.ets",
"dependencies": {
"@ohos/flutter_ohos": "file:../flutter",
"@amap/map": "^10.0.0"
}
}
ohos/src/main/module.json5
{
"module": {
"name": "csp_amap_flutter_map",
"type": "har",
"deviceTypes": ["phone", "tablet"],
"requestPermissions": [
{
"name": "ohos.permission.LOCATION",
"reason": "$string:location_permission_reason",
"usedScene": {
"abilities": [],
"when": "inuse"
}
},
{
"name": "ohos.permission.APPROXIMATELY_LOCATION",
"reason": "$string:location_permission_reason"
},
{
"name": "ohos.permission.INTERNET",
"reason": "$string:internet_permission_reason"
}
],
"metadata": [
{
"name": "AMap_api_key",
"value": "your_harmonyos_api_key_here"
}
]
}
}
📱 使用示例
基础地图显示
import 'package:flutter/material.dart';
import 'package:csp_amap_flutter_map/csp_amap_flutter_map.dart';
class HarmonyOSMapPage extends StatefulWidget {
@override
_HarmonyOSMapPageState createState() => _HarmonyOSMapPageState();
}
class _HarmonyOSMapPageState extends State<HarmonyOSMapPage> {
late AMapController _mapController;
static const CameraPosition _initialPosition = CameraPosition(
target: LatLng(39.909187, 116.397451),
zoom: 10.0,
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('HarmonyOS 地图示例')),
body: AMapWidget(
initialCameraPosition: _initialPosition,
onMapCreated: (AMapController controller) {
_mapController = controller;
},
onTap: (LatLng latLng) {
print('点击位置: ${latLng.latitude}, ${latLng.longitude}');
},
),
);
}
}
添加标记
class MarkerExamplePage extends StatefulWidget {
@override
_MarkerExamplePageState createState() => _MarkerExamplePageState();
}
class _MarkerExamplePageState extends State<MarkerExamplePage> {
final Set<Marker> _markers = {};
late AMapController _mapController;
void _addMarker() {
const marker = Marker(
position: LatLng(39.909187, 116.397451),
icon: BitmapDescriptor.defaultMarker,
infoWindow: InfoWindow(
title: 'HarmonyOS 标记',
snippet: '这是一个 HarmonyOS 平台的标记',
),
);
setState(() {
_markers.add(marker);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: AMapWidget(
initialCameraPosition: CameraPosition(
target: LatLng(39.909187, 116.397451),
zoom: 10.0,
),
markers: _markers,
onMapCreated: (AMapController controller) {
_mapController = controller;
},
),
floatingActionButton: FloatingActionButton(
onPressed: _addMarker,
child: Icon(Icons.add_location),
),
);
}
}
🚀 功能特性
✅ 已支持功能
- ✅ 地图显示和基础操作
- ✅ 相机控制(移动、缩放、旋转、倾斜)
- ✅ 标记 (Marker) 添加和管理
- ✅ 折线 (Polyline) 绘制
- ✅ 多边形 (Polygon) 绘制
- ✅ 地图事件监听(点击、长按、相机移动)
- ✅ 坐标转换
- ✅ 地图截图
- ✅ 缓存清理
🔄 开发中功能
- 🔄 定位功能
- 🔄 路径规划
- 🔄 POI 搜索
- 🔄 地理围栏
⚠️ 注意事项
1. 权限申请
使用地图功能前,需要确保应用已获得以下权限:
-
ohos.permission.LOCATION- 精确位置权限 -
ohos.permission.APPROXIMATELY_LOCATION- 大概位置权限 -
ohos.permission.INTERNET- 网络权限
2. API Key 配置
- 确保在
module.json5中正确配置了 API Key - HarmonyOS 的 API Key 与 Android/iOS 不同,需要单独申请
3. 性能优化
- 建议在不需要地图时及时释放资源
- 大量标记时考虑使用聚合功能
- 适当控制地图更新频率
🐛 故障排除
常见问题
1. 地图不显示
- 检查 API Key 是否正确配置
- 检查网络权限是否已获取
- 检查高德地图 SDK 版本是否兼容
2. 定位不准确
- 检查位置权限是否已获取
- 检查设备 GPS 功能是否开启
- 在室外环境测试定位功能
3. 性能问题
- 减少同时显示的标记数量
- 使用合适的地图缩放级别
- 避免频繁的地图操作
📞 技术支持
如果遇到问题,可以通过以下方式获取支持:
- 查看文档: 仔细阅读官方文档和本配置指南
- 检查日志: 查看 DevEco Studio 控制台输出
- 参考示例: 查看项目中的 example 示例代码
- 联系开发团队: 提交 issue 或联系技术支持
📄 许可证
本项目基于 Apache License 2.0 许可证开源。详见 LICENSE 文件。