Classes
BaseObject
Beam
Camera
CameraTour
CameraTourData
CameraTourKeyFrame
Cesium3DTileset
Coord
CustomMesh
CustomObject
CustomTag
Decal
DigitalTwinAPI
DigitalTwinPlayer
DynamicWater
EditHelper
FloodFill
GeoJSONLayer
HeatMap
HeatMap3D
HighlightArea
ImageryLayer
InfoTree
Light
Marker
Marker3D
Misc
ODLine
Panorama
Polygon
Polygon3D
Polyline
RadiationPoint
Settings
SettingsPanel
ShapeFileLayer
Tag
TileLayer
Tools
Vehicle
VideoProjection
WaterFlowField
WaterMesh
Weather
//注意需提前开启鼠标拾取:__g.settings.setMousePickMask(7);
case "MouseHovered":
log('触发事件类型:鼠标悬停,eventType:' + eventType);
break;
//鼠标移动时触发此事件
//注意需提前开启鼠标拾取:__g.settings.setMousePickMask(7);
case "MouseMoved":
log('触发事件类型:鼠标移动,eventType:' + eventType);
break;
//相机开始移动时触发此监听事件
//注意需先开启事件:__g.settings.setEnableCameraMovingEvent(true);
case "CameraStartMove":
log('触发事件类型:相机开始飞行,eventType:' + eventType);
break;
//相机正在移动时触发此监听事件
//注意需先开启事件:__g.settings.setEnableCameraMovingEvent(true);
case "CameraMoving":
log('触发事件类型:相机正在飞行,eventType:' + eventType);
break;
//相机停止移动时触发此监听事件
//注意需先开启事件:__g.settings.setEnableCameraMovingEvent(true);
case "CameraStopMove":
log('触发事件类型:相机停止飞行,eventType:' + eventType);
break;
//对象执行focus()或相机执行set()/lookAt()/lookAtBBox()方法时触发
case "CameraChanged":
log('触发事件类型:相机位置发生变化,eventType:' + eventType);
break;
//进入面剖切模式,编辑面剖切位置后触发事件并返回剖切结果
case "PlaneClipEdit":
log('触发事件类型:编辑面剖切,eventType:' + eventType);
break;
//进入体剖切模式,编辑体剖切位置后触发事件并返回剖切结果
case "VolumeClipEdit":
log('触发事件类型:编辑体剖切,eventType:'+ eventType);
break;
//进入测量模式后,测量完成时触发此事件并返回测量结果
case "Measurement":
log('触发事件类型:测量完成,eventType:' + eventType);
break;
//播放导览结束触发此事件
//__g.camera.playAnimation(id)和导览对象播放导览结束__g.cameraTour.play(id)均触发此事件
case "CameraTourFinished":
log('触发事件类型:播放导览结束,eventType:' + eventType);
break;
default:
//视频流初始化配置
let options = {
//必选参数,网页显示视频流的dom节点id
'domId': 'player',
//必选参数,二次开发时必须指定,否则无法进行二次开发
'apiOptions': {
//事件监听回调函数
'onEvent': onEvent,
//构造DigitalTwinAPI对象并初始化
let acapi = new DigitalTwinPlayer('127.0.0.1:8080', options).getAPI();
1.2、通过API接口设置监听事件
初始化API完成后,调用API方法进行事件监听设置,代码示例如下:
//通过API接口设置监听事件 注意:使用此方式监听事件会覆盖上一次设置的事件监听代码
__g.setEventCallback(function (event) {
//事件类型 参考交互事件类型枚举对象
var eventType = event.eventtype;
//图层类型
var layerType = event.Type;
//图层Id
var layerId = event.Id || event.ID;
//点击ActorId
var objectId = event.ObjectID;
//当前点击位置
var objectLocation = event.MouseClickPoint;
//TODO...
1.3、自定义监听鼠标、键盘
自定义键盘鼠标交互
自定义键盘鼠标交互,代码示例如下:
DigitalTwinPlayer的初始化参数params增加属性:actionEventHander,可以用来设置键盘、鼠标交互事件的回调函数,目前支持以下事件的回调:
onmouseenter//鼠标进入 获取焦点
onmouseleave//鼠标离开 失去焦点
onmousemove//鼠标移动
onmousedown//鼠标按下
onmouseup//鼠标松开
onkeydown//键盘按下
onkeyup //键盘松开
let actionEventHander = {
'onmousedown': e => { log(`[MouseDn] button: ${e.button}, pos: ${e.x}, ${e.y}`) },
'onmouseup': e => { log(`[MouseUp] button: ${e.button}, pos: ${e.x}, ${e.y}`) },
'onkeydown': e => { log(`KeyDown: ${e.code}`) }
aircityPlayer = new DigitalTwinPlayer("127.0.0.1:8080", {
'actionEventHander': actionEventHander //鼠标、键盘交互事件的回调
//其他属性
//...
运行效果:
[MouseDn] button: 2, pos: 892, 625
[MouseUp] button: 2, pos: 892, 625
KeyDown: KeyF
KeyDown: KeyA
KeyDown: KeyD
KeyDown: ControlLeft
KeyDown: ShiftLeft