文档管理中心
您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明
指南与API参考API参考应用服务Map Kit(地图服务)ArkTS APImap(地图显示功能)模块描述

模块描述

Phone5.0.0(12)+PC/2in15.0.1(13)+Tablet5.0.0(12)+Wearable5.1.0(18)+

Map Kit支持显示地图、在地图上绘制各类覆盖物(标记、折线、弧线、多边形、圆形等)、添加动画效果、处理地图交互事件、更新地图状态等。

典型使用场景:

  • 在应用界面中嵌入互动式地图
  • 展示地理位置标记和路线信息
  • 实现基于位置的服务(LBS)功能
  • 创建室内地图导航体验

关键Class/Interface介绍

核心组件

展开
Class/Interface 说明
MapComponent 地图UI组件,通过回调返回MapComponentController
MapComponentController 地图主控制器,所有地图操作的主入口
MapEventManager 地图事件监听管理器
BaseOverlay 覆盖物基础类,所有覆盖物继承自此类

覆盖物体系

展开
Class/Interface 说明
Marker 标记
MapPolyline 折线
MapArc 弧线
MapPolygon 多边形
MapCircle 圆形
PointAnnotation 点注释
Bubble 气泡
ClusterOverlay 点聚合
ImageOverlay 图片覆盖物
BuildingOverlay 3D建筑
TraceOverlay 动态轨迹
TileOverlay 瓦片图层
Heatmap 热力图
MvtOverlay 矢量图层
FlowFieldOverlay 流场图层
MassPointOverlay 海量点图层

动画体系

展开
Class/Interface 说明
Animation 动画抽象基类
AlphaAnimation 透明度动画
RotateAnimation 旋转动画
ScaleAnimation 缩放动画
TranslateAnimation 位移动画
FontSizeAnimation 字体大小动画
PlayImageAnimation 帧动画
AnimationSet 动画集合

数据模型

展开
Class/Interface 说明
MapOptions 地图初始化参数
LatLng 经纬度坐标
CameraPosition 相机位置状态
LatLngBounds 经纬度边界矩形

API组合使用关系说明

地图初始化与显示

使用MapComponent显示地图需要完成以下步骤:

收起
自动换行
深色代码主题
复制
  1. // 1. 导入模块
  2. import { map, mapCommon, MapComponent } from '@kit.MapKit';
  3. // 2. 创建地图初始化参数
  4. let mapOptions: mapCommon.MapOptions = {
  5. position: {
  6. target: { latitude: 39.9, longitude: 116.4 },
  7. zoom: 10
  8. }
  9. };
  10. // 3. 定义回调函数获取MapComponentController
  11. let mapCallback = async (err, mapController) => {
  12. if (!err) {
  13. // 获取控制器成功后,可进行后续操作
  14. let mapController = mapController;
  15. let mapEventManager = mapController.getEventManager();
  16. }
  17. };
  18. // 4. 在UI中使用MapComponent
  19. MapComponent({
  20. mapOptions: mapOptions,
  21. mapCallback: mapCallback
  22. })

添加覆盖物流程

收起
自动换行
深色代码主题
复制
  1. // 1. 创建覆盖物配置参数
  2. let markerOptions: mapCommon.MarkerOptions = {
  3. position: { latitude: 39.9, longitude: 116.4 },
  4. clickable: true,
  5. title: "标记标题"
  6. };
  7. // 2. 通过MapComponentController添加覆盖物
  8. let marker = await mapController.addMarker(markerOptions);
  9. // 3. 可对覆盖物进行进一步操作
  10. marker.setTitle("新标题");
  11. marker.showInfoWindow();

地图动画与交互

收起
自动换行
深色代码主题
复制
  1. // 1. 获取MapEventManager
  2. let mapEventManager = mapController.getEventManager();
  3. // 2. 订阅地图事件
  4. mapEventManager.on("mapLoad", () => {
  5. console.info("地图加载完成");
  6. });
  7. // 3. 创建CameraUpdate并执行动画
  8. let cameraUpdate = map.newCameraPosition({
  9. target: { latitude: 40.0, longitude: 117.0 },
  10. zoom: 12
  11. });
  12. mapController.animateCamera(cameraUpdate, 1000);

动画使用

收起
自动换行
深色代码主题
复制
  1. // 1. 创建动画实例
  2. let animation = new map.RotateAnimation(0, 270);
  3. // 2. 配置动画参数
  4. animation.setDuration(2000);
  5. animation.setRepeatCount(map.AnimationRepeatMode.RESTART);
  6. // 3. 订阅动画事件
  7. animation.on("animationStart", () => {});
  8. animation.on("animationEnd", () => {});
  9. // 4. 对覆盖物应用动画
  10. marker.startAnimation(animation);