Mars3D开发基础:事件机制

646 阅读2分钟

Mars3D开发基础系列文档导航

  1. 三维场景 Map
  2. 地图控件
  3. 地图图层 Layer
  4. 加载DEM地形
  5. 栅格瓦片图层
  6. 坐标系及坐标变换
  7. 相机Camera及视角控制
  8. 时钟Clock及时序控制
  9. 事件机制
  10. 矢量图层Layer
  11. 矢量数据Graphic
  12. Property属性机制
  13. Material材质
  14. glTF小模型
  15. 3DTiles三维模型
  16. 场景特效
  17. 管理及分析功能

无论是前端系统,还是二维/三维GIS应用系统,都离不开各种事件的应用,尤其是鼠标的单击、双击事件。 Mars3D 内所有类均支持事件的绑定、解绑、触发等统一的事件机制,事件类型全部定义在mars3d.EventType

1. 事件的相关类

  1. 事件相关的更多方法可以参阅 BaseClass类的API文档。

  2. 事件方法中使用到说支持的事件类型,都统一定义在mars3d.EventType枚举中。在每个对应类的API中都会说明当前类所支持的事件类型,具体参阅各类的API文档。

下面,我们以 map对象为例,绑定一个事件做示例:


function map_cameraChangedHandler(event){
 console.log('相机位置完成', event)
}

//on绑定事件
map.on(mars3d.EventType.cameraChanged, map_cameraChangedHandler, this)

//off移除事件
map.off(mars3d.EventType.cameraChanged, map_cameraChangedHandler, this)

2. 主要类的常用事件

2.1 Map类的事件

目前最重要的Map类支持3类事件类型可以绑定:

  1. Map内部图层变化时的事件,如addLayer、removeLayer
  2. 相机、时钟、场景等变化触发的事件,如cameraMoveStart、preUpdate、clockTick
  3. 鼠标键盘操作触发的事件,如click、mouseMove、mouseOver、keydown

详细事件列表,请参阅:Map支持的事件类型

2.2 图层类的事件

图层类型可以绑定多种事件,我们已最常用的GraphicLayer图层为例:

  1. 图层内部变化时的事件,如add、show、addGraphic
  2. 鼠标操作触发的事件,如click、rightClick、mouseOver、mouseOut
  3. 标绘和编辑触发的事件,如drawStart、drawCreated、editStart、editStop

详细事件列表,请参阅:GraphicLayer支持的事件类型

2.3 矢量数据类的事件

矢量数据类型可以绑定多种事件,我们已最常用的Entity矢量数据为例:

  1. 数据内部变化时的事件,如add、remove、show
  2. 鼠标操作触发的事件,如click、rightClick、mouseOver、mouseOut
  3. 标绘和编辑触发的事件,如drawStart、drawCreated、editStart、editStop

详细事件列表,请参阅:BaseEntity支持的事件类型

image.png