UNPKG

@cesium-extends/subscriber

Version:

该包提供了一种方便的方式,用于在 Cesium 场景中订阅事件。它允许您为指定的实体添加事件监听器,并在发生事件时触发回调函数。

174 lines (120 loc) 6.78 kB
# @cesium-extends/subscriber 该包提供了一种方便的方式,用于在 Cesium 场景中订阅事件。它允许您为指定的实体添加事件监听器,并在发生事件时触发回调函数。 ## 安装 使用 npm 进行安装: ``` npm install @cesium-extends/subscriber ``` ## 用法 ```javascript import Subscriber, { EventType } from "@cesium-extends/subscriber"; import { viewer, entities } from "./cesiumInit"; // 创建订阅者 const subscriber = new Subscriber(viewer); // 添加事件监听器 subscriber.add( entities[0], (movement, entity) => { console.log(movement); console.log(entity); }, EventType.LEFT_CLICK, ); // 添加特定事件监听器 subscriber.addExternal((movement, result) => { console.log(movement); console.log(result); }, EventType.MOUSE_MOVE); // 暂停执行监听回调 subscriber.enable = false; // 销毁订阅者 subscriber.destroy(); ``` ## API ### `new Subscriber(viewer: Viewer, options?: Options)` 创建一个新的 Subscriber 对象。 | 参数 | 类型 | 描述 | | ------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | viewer | Viewer | Cesium.Viewer 对象 | | options | object | (可选)配置项,包括: <br> • element: 用于注册事件的 HTML 元素,默认为 Cesium.Viewer canvas。 <br> • pickResult: 是否启用拾取结果以及移动去抖时间(毫秒),默认不启用。 | ### `add(substances: Entity | Entity[], callback: ListenCallback<Entity>, eventType: EventType): void` 为给定 Substance 添加指定事件类型的监听器。 | 参数 | 类型 | 描述 | | ---------- | ---------------------- | ---------------------------------------------------- | | substances | Entity or Entity[] | 要添加监听器的 Substance,可以是单个实体或实体数组。 | | callback | ListenCallback<Entity> | 当事件发生时要调用的回调函数。 | | eventType | EventType | 所需事件类型。 | ### `addExternal(callback: ExternalListenCallback, eventType: EventType): string` 添加指定事件类型的外部监听器。与`add`不同之处在于此事件将不会过滤实体。 | 参数 | 类型 | 描述 | | --------- | ---------------------- | --------------------------- | | callback | ExternalListenCallback | 要处理所需事件的回调函数。 | | eventType | EventType | 所需事件类型。 | | 返回值 | string | 事件 ID,在移除事件时使用。 | ### `remove(substances: Entity | Entity[], eventType: EventType): void` 从给定的 substance 中删除指定类型的事件监听器。 | 参数 | 类型 | 描述 | | ---------- | ------------------ | ---------------------------------------------------------- | | substances | Entity or Entity[] | 要从其中删除侦听器的 Substance,可以是单个实体或实体数组。 | | eventType | EventType | 所需事件类型。 | ### `removeExternal(ids: string | string[], eventType?: EventType): void` 删除指定 ID 的外部事件监听器。 | 参数 | 类型 | 描述 | | --------- | ------------------ | ---------------------------------------------------------------- | | ids | string or string[] | 需要删除的事件 ID,可以是字符串或字符串数组。 | | eventType | EventType | (可选)事件类型(如果未提供,将搜索该 id 并自动确定事件类型)。 | ### `removeNative(viewer: Viewer, eventType: EventType): void` 从 Viewer 中删除指定类型的原生事件监听器。 | 参数 | 类型 | 描述 | | --------- | --------- | -------------------- | | viewer | Viewer | Cesium.Viewer 对象。 | | eventType | EventType | 原生事件类型。 | ### `destroy(): void` 销毁 Subscriber 对象。 ## 类型 ### `EventType` 监听器支持的事件类型,包括: - `'LEFT_DOWN'` - `'LEFT_UP'` - `'LEFT_CLICK'` - `'LEFT_DOUBLE_CLICK'` - `'RIGHT_DOWN'` - `'RIGHT_UP'` - `'RIGHT_CLICK'` - `'MIDDLE_DOWN'` - `'MIDDLE_UP'` - `'MIDDLE_CLICK'` - `'MOUSE_MOVE'` - `'WHEEL'` - `'PINCH_START'` - `'PINCH_MOVE'` - `'PINCH_END'` ### `ListenCallback<T>` 与事件相关联的回调函数类型。 | 参数 | 类型 | 描述 | | --------- | --------- | ------------------------------ | | movement | EventArgs | 包含事件位置和其他属性的对象。 | | substance | T | 与事件关联的实体。 | ### `ExternalListenCallback` 外部事件的回调函数类型。 | 参数 | 类型 | 描述 | | -------- | --------- | ---------------------------------------------------------------- | | movement | EventArgs | 包含事件位置和其他属性的对象。 | | result | any | 当启用拾取结果时,它将包含所选实体的详细信息,否则为 undefined。 | ### `EventArgs` 事件处理程序传递给回调函数的事件参数对象类型。 | 属性 | 类型 | 描述 | | -------------- | ---------- | -------------------------------------- | | position | Cartesian2 | 鼠标位置(以像素为单位)。 | | endPosition | Cartesian2 | 鼠标位置的结束位置(当鼠标移动时)。 | | startPosition | Cartesian2 | 鼠标位置的起始位置(当鼠标移动时)。 | | [name: string] | any | 可以包含其他自定义属性的任何其他属性。 | ### `Cartesian2` 二维笛卡尔坐标系中的点,由 x 和 y 轴坐标组成。 ### `Entity` 表示 Cesium 场景中的一个对象或元素。 ### `Viewer` Cesium 场景的主要控制器,负责管理场景中的所有元素并接收用户输入。 ## 参考资料 - [Cesium](https://cesium.com/) - [Cesium Documentation](https://cesium.com/docs/)