1.1.0 • Published 3 months ago

@nsc-earth-2/subscriber v1.1.0

Weekly downloads
-
License
MIT
Repository
-
Last release
3 months ago

@nsc-earth-2/subscriber

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

安装

使用 npm 进行安装:

npm install @nsc-earth-2/subscriber

用法

import Subscriber, { EventType } from "@nsc-earth-2/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 对象。

参数类型描述
viewerViewerCesium.Viewer 对象
optionsobject(可选)配置项,包括: • element: 用于注册事件的 HTML 元素,默认为 Cesium.Viewer canvas。 • pickResult: 是否启用拾取结果以及移动去抖时间(毫秒),默认不启用。

add(substances: Entity | Entity[], callback: ListenCallback<Entity>, eventType: EventType): void

为给定 Substance 添加指定事件类型的监听器。

参数类型描述
substancesEntity or Entity[]要添加监听器的 Substance,可以是单个实体或实体数组。
callbackListenCallback当事件发生时要调用的回调函数。
eventTypeEventType所需事件类型。

addExternal(callback: ExternalListenCallback, eventType: EventType): string

添加指定事件类型的外部监听器。与add不同之处在于此事件将不会过滤实体。

参数类型描述
callbackExternalListenCallback要处理所需事件的回调函数。
eventTypeEventType所需事件类型。
返回值string事件 ID,在移除事件时使用。

remove(substances: Entity | Entity[], eventType: EventType): void

从给定的 substance 中删除指定类型的事件监听器。

参数类型描述
substancesEntity or Entity[]要从其中删除侦听器的 Substance,可以是单个实体或实体数组。
eventTypeEventType所需事件类型。

removeExternal(ids: string | string[], eventType?: EventType): void

删除指定 ID 的外部事件监听器。

参数类型描述
idsstring or string[]需要删除的事件 ID,可以是字符串或字符串数组。
eventTypeEventType(可选)事件类型(如果未提供,将搜索该 id 并自动确定事件类型)。

removeNative(viewer: Viewer, eventType: EventType): void

从 Viewer 中删除指定类型的原生事件监听器。

参数类型描述
viewerViewerCesium.Viewer 对象。
eventTypeEventType原生事件类型。

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>

与事件相关联的回调函数类型。

参数类型描述
movementEventArgs包含事件位置和其他属性的对象。
substanceT与事件关联的实体。

ExternalListenCallback

外部事件的回调函数类型。

参数类型描述
movementEventArgs包含事件位置和其他属性的对象。
resultany当启用拾取结果时,它将包含所选实体的详细信息,否则为 undefined。

EventArgs

事件处理程序传递给回调函数的事件参数对象类型。

属性类型描述
positionCartesian2鼠标位置(以像素为单位)。
endPositionCartesian2鼠标位置的结束位置(当鼠标移动时)。
startPositionCartesian2鼠标位置的起始位置(当鼠标移动时)。
name: stringany可以包含其他自定义属性的任何其他属性。

Cartesian2

二维笛卡尔坐标系中的点,由 x 和 y 轴坐标组成。

Entity

表示 Cesium 场景中的一个对象或元素。

Viewer

Cesium 场景的主要控制器,负责管理场景中的所有元素并接收用户输入。

参考资料