华为HarmonyOS地图服务 6 - 侦听事件来实现地图交互

本章节包含地图的点击和长按、相机移动(华为地图的移动是通过模拟相机移动的方式实现的)、以及"我的位置"按钮点击等事件侦听。

接口说明

以下是地图侦听事件相关接口,以下功能主要由MapComponentController提供,更多接口及使用方法请参见接口文档

接口名 描述
on(type: 'mapClick', callback: Callback<mapCommon.LatLng>): void 设置地图点击事件侦听器。
on(type: 'mapLongClick', callback: Callback<mapCommon.LatLng>): void 设置地图长按事件侦听器。
on(type: 'cameraMoveStart', callback: Callback<number>): void 设置相机开始移动事件侦听器。
on(type: 'cameraMove', callback: Callback<void>): void 设置相机移动事件侦听器。
on(type: 'cameraIdle', callback: Callback<void>): void 设置相机移动结束事件侦听器。
on(type: 'markerClick' , callback: Callback<Marker>): void 设置marker点击事件侦听器。
on(type: 'myLocationButtonClick', callback: Callback<void>): void 设置我的位置按钮点击事件侦听器。
on(type: 'pointAnnotationClick', callback: Callback<PointAnnotation>): void 设置pointAnnotation点击事件侦听器。

开发步骤

地图点击事件侦听

TypeScript 复制代码
this.mapController.on("mapClick", (position) => {
console.info("mapClick", `on-mapClick position = ${position.longitude}`);
});

地图长按事件侦听

TypeScript 复制代码
this.mapController.on("mapLongClick", (position) => {
console.info("mapLongClick", `on-mapLongClick position = ${position.longitude}`);
});

相机移动侦听

相机移动时(华为地图的移动是通过模拟相机移动的方式实现的),通过设置侦听器,能够对相机移动状态进行侦听。

  • 当相机开始移动时,会回调cameraMoveStart。
TypeScript 复制代码
this.mapController.on("cameraMoveStart", (reason) => {
console.info("cameraMoveStart", `on-cameraMoveStart reason = ${reason}`);
});
  • 当相机移动或用户与触摸屏交互时,会多次调用cameraMove。
TypeScript 复制代码
this.mapController.on("cameraMove", () => {
console.info("cameraMove", `on-cameraMove`);
});
  • 当相机停止移动时,会回调cameraIdle。
TypeScript 复制代码
this.mapController.on("cameraIdle", () => {
console.info("cameraIdle", `on-cameraIdle`);
});

标记点击事件侦听

标记是指在地图的指定位置添加标记以标识位置、商家、建筑等。详情请参见标记

TypeScript 复制代码
this.mapController.on("markerClick", (marker) => {
console.info("markerClick", `markerClick: ${marker.getId()}`);
});

我的位置侦听

TypeScript 复制代码
this.mapController.on("myLocationButtonClick", () => {
console.info("myLocationButtonClick", `myLocationButtonClick`);
});

点注释事件侦听

点注释是指在地图的指定位置添加点注释以标识位置、商家、建筑等,并可以通过信息窗口展示详细信息。

TypeScript 复制代码
this.mapController.on("pointAnnotationClick", (pointAnnotation) => {
console.info("pointAnnotationClick", `pointAnnotationClick: ${pointAnnotation.getId()}`);
});
相关推荐
川石教育44 分钟前
鸿蒙开发-ArkTS 中使用 filter 组件
harmonyos·鸿蒙·鸿蒙应用开发·鸿蒙开发·鸿蒙开发培训·arkts语言
CES_Asia1 小时前
工信部“人工智能+”制造行动点亮CES Asia 2025
人工智能·科技·数码相机·制造·智能音箱·智能手表
李洋-蛟龙腾飞公司1 小时前
HarmonyOS Next 应用元服务开发-分布式数据对象迁移数据权限与基础数据
分布式·华为·harmonyos
Damon小智1 小时前
HarmonyOS NEXT 技术实践-实现音乐服务卡片
华为·harmonyos·鸿蒙·harmonyos next·服务卡片
play_big_knife1 小时前
鸿蒙项目云捐助第十七讲云捐助我的页面上半部分的实现
华为·harmonyos·鸿蒙·云开发·鸿蒙开发·鸿蒙next·华为云开发
~央千澈~2 小时前
优雅草央千澈-关于蓝湖如何快速的标注交互原型是如何使用的-如何使用蓝湖设计交互原型和整个软件项目的流程逻辑-实践项目详细说明
ui·交互·蓝湖
枫叶丹48 小时前
【HarmonyOS之旅】HarmonyOS开发基础知识(三)
华为od·华为·华为云·harmonyos
SoraLuna13 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
AORO_BEIDOU16 小时前
单北斗+鸿蒙系统+国产芯片,遨游防爆手机自主可控“三保险”
华为·智能手机·harmonyos
博览鸿蒙17 小时前
鸿蒙操作系统(HarmonyOS)的应用开发入门
华为·harmonyos