/** * 全局变量_Tool工具 */ var gisToolsRoam_entity; //点击设备:图标/模型,三维模型触发的点击事件 var PutInVideo_RightHandler3D = new _Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); PutInVideo_RightHandler3D.setInputAction(function(movement) { var pick = viewer.scene.pick(movement.position); //获取模型坐标位置 var position = viewer.scene.pickPosition(movement.position); //将笛卡尔坐标转化为经纬度坐标 var cartographic = _Cesium.Cartographic.fromCartesian(position); var longitude = _Cesium.Math.toDegrees(cartographic.longitude); var latitude = _Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height; if (height < 0) { height = 0; } if(pick && pick.id){ if(pick.id._name == "camera"){ DrawVideoPlace(longitude,latitude,height); } }else{ console.log("当前选中的是模型"); } }, _Cesium.ScreenSpaceEventType.RIGHT_CLICK); //点击设备:图标/模型,三维模型触发的点击事件 var GetPoint = function (){ var handler3D = new _Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); handler3D.setInputAction(function(movement) { var pick = viewer.scene.pick(movement.position); //获取模型坐标位置 var position = viewer.scene.pickPosition(movement.position); //将笛卡尔坐标转化为经纬度坐标 var cartographic = _Cesium.Cartographic.fromCartesian(position); var longitude = _Cesium.Math.toDegrees(cartographic.longitude); var latitude = _Cesium.Math.toDegrees(cartographic.latitude); var height = cartographic.height; if (height < 0) { height = 0; } console.log(longitude+","+latitude+","+height); }, _Cesium.ScreenSpaceEventType.LEFT_CLICK); } //获取当前相机位置 var GetCameraPoint = function (){ var camera = viewer.camera; console.log(camera); var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(camera.position); var lng=_Cesium.Math.toDegrees(cartographic.longitude); var lat=_Cesium.Math.toDegrees(cartographic.latitude); var alt=cartographic.height; console.log(lng+","+lat+","+alt);//输出x,y,z(经纬度) var heading = _Cesium.Math.toDegrees(camera.heading); var pitch = _Cesium.Math.toDegrees(camera.pitch); var roll = _Cesium.Math.toDegrees(camera.roll); console.log(heading+","+pitch+","+roll);//输出方向(度数) var rectangle = viewer.camera.computeViewRectangle(); var west =rectangle.west / Math.PI * 180; var north = rectangle.north / Math.PI * 180; var east = rectangle.east / Math.PI * 180; var south = rectangle.south / Math.PI * 180; console.log(west+","+north+","+east+","+south);//输出相机所看到的区域坐标(经纬度) } /** * flyTo:飞行定位公用方法 * x:经度(WGS84) * y:纬度(WGS84) * z:高程(WGS84) * h:水平旋转偏航角(°) * p:垂直旋转俯仰角(°) * r:左右旋转翻滚角(°) * d:飞行时间(mm) */ var flyTo = function (x,y,z,h,p,r,d){ viewer.camera.flyTo({ destination: _Cesium.Cartesian3.fromDegrees(x,y,z), orientation: { heading: _Cesium.Math.toRadians(h), pitch: _Cesium.Math.toRadians(p), roll: r }, duration: d//动画持续时间 }); } /** * setView:瞬间定位公用方法(没有飞行动画效果) * x:经度(WGS84) * y:纬度(WGS84) * z:高程(WGS84) * h:水平旋转偏航角(°) * p:垂直旋转俯仰角(°) * r:左右旋转翻滚角(°) */ var setView = function (x,y,z,h,p,r){ viewer.camera.setView({ destination: _Cesium.Cartesian3.fromDegrees(x,y,z), orientation: { heading: _Cesium.Math.toRadians(h), pitch: _Cesium.Math.toRadians(p), roll: r } }); } function GetRoamStart(){ gisToolsRoam_entity = viewer.entities.add({ availability : new _Cesium.TimeIntervalCollection([new _Cesium.TimeInterval({ start : roam_start, stop : roam_stop })]), position : roam_position, orientation : new _Cesium.VelocityOrientationProperty(roam_position), model : { uri : ctx+'/js/gis/data/XFC.gltf', distanceDisplayCondition : 0 } }); viewer.trackedEntity = gisToolsRoam_entity; viewer.clock.startTime = roam_start.clone(); viewer.clock.stopTime = roam_stop.clone(); viewer.clock.currentTime = roam_start.clone(); viewer.clock.clockRange = _Cesium.ClockRange.LOOP_STOP; //Loop at the end viewer.clock.multiplier = 1; } function GetRoamStop(){ viewer.entities.remove(gisToolsRoam_entity); }