12
2019
04

Cesium 添加点

var xuanwuhu = viewer.entities.add({
  name : 'xuanwuhu',
  position : Cesium.Cartesian3.fromDegrees(118.793091, 32.074570),
  point : {
    pixelSize : 5,
    color : Cesium.Color.RED,
    outlineColor : Cesium.Color.WHITE,
    outlineWidth : 2
  },
  label : {
    text : '玄武湖',
    font : '14pt monospace',
    style: Cesium.LabelStyle.FILL_AND_OUTLINE,
    outlineWidth : 2,
    //垂直位置
    verticalOrigin : Cesium.VerticalOrigin.BUTTON,
    //中心位置
    pixelOffset : new Cesium.Cartesian2(0, 20)
  }
});
viewer.zoomTo(xuanwuhu);


12
2019
04

cesium 监听事件

/鼠标点击事件  左键
        var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
        handler.setInputAction(function(click) {
           // 处理鼠标按下事件
           // 获取鼠标当前位置
            // console.log('1111');
            var pick = viewer.scene.pick(click.position);
            //选中某模型   pick选中的对象
            if(pick && pick.id){

            }

         }, Cesium.ScreenSpaceEventType.LEFT_DOWN);

// 鼠标滚轮事件
        handler.setInputAction(function(wheelment) {

        }, Cesium.ScreenSpaceEventType.WHEEL);

//相机移动结束事件
        viewer.scene.camera.moveEnd.addEventListener(function(){
            //获取当前相机高度
            height = Math.ceil(earth.camera.positionCartographic.height);


        })


12
2019
04

cesium创建、添加json数据

https://blog.csdn.net/qq_28459505/article/details/80402601

12
2019
04

Cesium 添加一个影像服务,控制影像服务显示范围

/**
* 添加一个影像服务,控制影像服务显示范围
* @param imageryProvider 影像服务
* @param minlat 最小纬度
* @param minlon 最小经度
* @param maxlat 最大纬度
* @param maxlon 最大经度
*/
function setLayerRectangle(imageryProvider,minlat,minlon,maxlat,maxlon){
var layers = viewer.scene.imageryLayers;  
imageryProvider.rectangle=Cesium.Rectangle.fromDegrees(minlat,minlon,maxlat,maxlon); 
//添加一个图层,在特定位置绘制一个图片  
layers.addImageryProvider(imageryProvider);
}


12
2019
04

Cesium禁止缩放、旋转、平移

// 如果为真,则允许用户旋转相机。如果为假,相机将锁定到当前标题。此标志仅适用于2D和3D。
scene.screenSpaceCameraController.enableRotate = false;
// 如果为true,则允许用户平移地图。如果为假,相机将保持锁定在当前位置。此标志仅适用于2D和Columbus视图模式。
scene.screenSpaceCameraController.enableTranslate = false;
// 如果为真,允许用户放大和缩小。如果为假,相机将锁定到距离椭圆体的当前距离
scene.screenSpaceCameraController.enableZoom = false;
// 如果为真,则允许用户倾斜相机。如果为假,相机将锁定到当前标题。这个标志只适用于3D和哥伦布视图。
scene.screenSpaceCameraController.enableTilt = false;


12
2019
04

Cesium获取地形的高度

https://blog.csdn.net/u013821237/article/details/84838103

12
2019
04

Cesium中获取经纬度和视角高

<!-- 经纬度实时显示 -->
var longitude_show=document.getElementById('longitude_show');
var latitude_show=document.getElementById('latitude_show');
var altitude_show=document.getElementById('altitude_show');
var canvas=viewer.scene.canvas;
//具体事件的实现
var ellipsoid=viewer.scene.globe.ellipsoid;
var handler = new Cesium.ScreenSpaceEventHandler(canvas);
handler.setInputAction(function(movement){
            //捕获椭球体,将笛卡尔二维平面坐标转为椭球体的笛卡尔三维坐标,返回球体表面的点
             var cartesian=viewer.camera.pickEllipsoid(movement.endPosition, ellipsoid);
              if(cartesian){
                   //将笛卡尔三维坐标转为地图坐标(弧度)
                   var cartographic=viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian);
                   //将地图坐标(弧度)转为十进制的度数
                    var lat_String=Cesium.Math.toDegrees(cartographic.latitude).toFixed(4);
                    var log_String=Cesium.Math.toDegrees(cartographic.longitude).toFixed(4);
					var alti_String=(viewer.camera.positionCartographic.height/1000).toFixed(2);
					longitude_show.innerHTML=log_String;
					latitude_show.innerHTML=lat_String;
					altitude_show.innerHTML=alti_String;
               }
        },Cesium.ScreenSpaceEventType.MOUSE_MOVE);


12
2019
04

Cesium获取鼠标点击位置(PickPosition)

屏幕坐标(鼠标点击位置距离canvas左上角的像素值)


通过:movement.position获取

var viewer = new Cesium.Viewer('cesiumContainer'); 
var handler= new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function (movement) {
     console.log(movement.position);
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

参考自:https://blog.csdn.net/weixin_33860722/article/details/86854843

12
2019
04

Cesium获取当前点击位置坐标

获取点击坐标一般情况下有三种,分别是获取椭球面上的坐标,或者开启地形图以后的坐标,以及拾取模型上面的坐标。
ps:如果当前点无法获取到坐标,会返回undefined。

12
2019
04

Cesium 鼠标事件监听

在Cesium里面,我们可以通过Cesium.ScreenSpaceEventHandler的实例化对象的setInputAction方法绑定鼠标事件:

var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
//todo:在椭球下点击创建点
handler.setInputAction(function(event) {
    var earthPosition  = viewer.camera.pickEllipsoid(event.position,viewer.scene.globe.ellipsoid);
    if (Cesium.defined(earthPosition)) {
        createPoint(earthPosition); //在点击位置添加一个点
    }
}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

setInputAction的第一个参数是当事件触发时的回调,第二个参数是绑定的事件类型。案例中绑定的鼠标左键点击事件,其它还有:
鼠标左键单击事件
Cesium.ScreenSpaceEventType.LEFT_CLICK

鼠标左键双击事件
Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK

鼠标左键按下事件
Cesium.ScreenSpaceEventType.LEFT_DOWN 

鼠标左键抬起事件
Cesium.ScreenSpaceEventType.LEFT_UP 

鼠标中键单击事件
Cesium.ScreenSpaceEventType.MIDDLE_CLICK 

鼠标中键按下事件
Cesium.ScreenSpaceEventType.MIDDLE_DOWN 

鼠标中键抬起事件
Cesium.ScreenSpaceEventType.MIDDLE_UP 

鼠标移动事件
Cesium.ScreenSpaceEventType.MOUSE_MOVE 

触摸表面上的双指事件的结束
Cesium.ScreenSpaceEventType.PINCH_END 

触摸表面上双指移动事件
Cesium.ScreenSpaceEventType.PINCH_MOVE 

触摸表面上双指事件的开始
Cesium.ScreenSpaceEventType.PINCH_START 

鼠标右键单击事件
Cesium.ScreenSpaceEventType.RIGHT_CLICK 

鼠标右键按下事件
Cesium.ScreenSpaceEventType.RIGHT_DOWN 

鼠标滚轮事件
Cesium.ScreenSpaceEventType.WHEEL 

如果想要接触某一个交互事件可以通过handler对象里面removeInputAction 事件解除,下面是解除鼠标左键单击事件:
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);