相机移动结束事件
viewer.scene.camera.moveEnd.addEventListener(function() {//实现对应的移动结束操作});
鼠标移动事件,这个在判断当前地图的鼠标所在位置,获取鼠标位置的坐标,同时能够判断当前鼠标处,是否存在地图中的对象。
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);handler.setInputAction(function (movement) {//鼠标移动的结束坐标,也有起始坐标var pickedObject = scene.pick(movement.endPosition);//判断当前鼠标处,是否有对象if (Cesium.defined(pickedObject) &&pickedObject.id instanceof Cesium.Entity) {//实体对象的处理}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);//鼠标的点击事件,这个是判断数据点击所在的位置var handler.setInputAction(function (movement) {//此处就只有鼠标的点击位置了var pickedObject = scene.pick(movement.position);if (//同样也是判断点击处的对象信息Cesium.defined(pickedObject) &&pickedObject.id instanceof Cesium.Entity) {}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);在使用完成后,用以下的方式去移除不需要的事件。//移除鼠标点击事件handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);//移除鼠标移动事件handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);
场景的实时渲染事件,每间隔很短的一个时间,就会执行一次事件,这个可以判断场景中的一些实时的对象情况。
viewer.scene.preRender.addEventListener(function() {});
Scene
viewer.scene.backgroundColor=Cesium.Color.TRANSPARENT;viewer.scene.globe.baseColor=Cesium.Color.TRANSPARENT;
瓦片加载
tileset.readyPromise.then(zoomToTileset);
坐标转换
坐标拾取
let handlers = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection);handlers.setInputAction(function (event) {//获取相机射线ray = viewer.scene.camera.getPickRay(event.endPosition);//根据射线和场景求出在球面中的笛卡尔坐标position1 = viewer.scene.globe.pick(ray,viewer.scene);//获取该浏览器坐标的顶部数据feature = viewer.scene.pick(event.endPosition);// console.log(feature);if (feature == undefined && position1) {cartographic1 = Cesium.Ellipsoid.WGS84.cartesianToCartographic(position1);lon = Cesium.Math.toDegrees(cartographic1.longitude);lat = Cesium.Math.toDegrees(cartographic1.latitude);MouseHeight = 0;}else{let cartesian = viewer.scene.pickPosition(event.endPosition);if (Cesium.defined(cartesian) ){//如果对象已定义,将度转为经纬度let cartographic = Cesium.Cartographic.fromCartesian(cartesian);lon = Cesium.Math.toDegrees(cartographic.longitude);lat = Cesium.Math.toDegrees(cartographic.latitude);MouseHeight = cartographic.height;//模型高度}}// console.log(A,B,MouseHeight)} , Cesium.ScreenSpaceEventType.MOUSE_MOVE);
Cesium Cartesian3 和经纬度以及屏幕坐标等之间的转换
1、经纬度转换为世界坐标
Cesium.Cartesian3.fromDegrees(longitude, latitude, height, ellipsoid, result)
var ellipsoid=viewer.scene.globe.ellipsoid;var cartographic=Cesium.Cartographic.fromDegrees(lng,lat,alt);var cartesian3=ellipsoid.cartographicToCartesian(cartographic);
2、世界坐标转换为经纬度
var ellipsoid=viewer.scene.globe.ellipsoid;var cartesian3=new Cesium.cartesian3(x,y,z);var cartographic=ellipsoid.cartesianToCartographic(cartesian3);var lat=Cesium.Math.toDegrees(cartograhphic.latitude);var lng=Cesium.Math.toDegrees(cartograhpinc.longitude);var alt=cartographic.height;
Cartographic.fromCartesian
3、屏幕坐标和世界坐标相互转换
var pick1= new Cesium.Cartesian2(0,0);var cartesian = viewer.scene.globe.pick(viewer.camera.getPickRay(pick1),viewer.scene);
Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, Cartesian3);
