『Cesium 基础』常用函数
webgis 2020-02-01
cesium
三维
# 对 Entity 的操作:添加、隐藏、修改、去除、居中显示
let entities = viewer.entities;
// 创建Entity 对象
let rainEntity = entities.add({
id: 'rain',
name: 'RainStation',
position: Cesium.Cartesian3.fromDegrees(lon, lat),
billboard: {
image: 'images/pointIcons/rain1.png',
scale: 0.7,
verticalOrigin: Cesium.VerticalOrigin.BOTTOM,
},
label: {
text: rainfall,
font: '12px SimHei ',
Width: 3,
style: Cesium.LabelStyle.FILL,
fillColor: Cesium.Color.AQUA,
horizontalOrigin: Cesium.HorizontalOrigin.CENTER,
verticalOrigin: Cesium.VerticalOrigin.TOP,
},
}); //添加
viewer.entities.getById('rain').show = false; //隐藏
viewer.entities.getById('rain').label.text = 'drp'; //修改属性
viewer.entities.removeAll(); //移除所有
viewer.zoomTo(rainEntity); //居中显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 去掉 entity 的双击事件
viewer.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
1
# 获取当前视角高度
var scene = viewer.scene;
var ellipsoid = scene.globe.ellipsoid;
var height = ellipsoid.cartesianToCartographic(viewer.camera.position).height;
1
2
3
4
5
2
3
4
5
# 获取某个经纬度在屏幕上的位置
var position = Cesium.Cartesian3.fromDegrees(lon, lat);
var clickPt = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, position);
var screenX = clickPt.x;
var screenY = clickPt.y;
1
2
3
4
5
6
7
2
3
4
5
6
7
# 获取三维场景屏幕中心点坐标
var result = viewer.camera.pickEllipsoid(
new Cesium.Cartesian2(viewer.canvas.clientWidth / 2, viewer.canvas.clientHeight / 2)
);
var curPosition = Cesium.Ellipsoid.WGS84.cartesianToCartographic(result);
var lon = (curPosition.longitude * 180) / Math.PI;
var lat = (curPosition.latitude * 180) / Math.PI;
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 响应鼠标单击等事件,获取屏幕点击坐标
var handler = new Cesium.ScreenSpaceEventHandler(canvas);
handler.setInputAction(function(click) {}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
var clickX = click.position.x;
var clickY = click.position.y;
// 这个 LEFT_CLICK 可以换成 MIDDLE_CLICK、MOUSE_MOVE 等就会响应滚轮点击、
//鼠标移动等事件,见参考文档中的 ScreenSpaceEventType(),注意不同的事件中,
//function 中的 click 会有不同的属性,可 console.log(click),找到所需
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 监听相机视角改变事件
viewer.camera.moveStart.addEventListener( (moveStartPosition)=>{
console.log()
});
viewer.camera.moveEnd.addEventListener( (moveEndPosition)=>{});
1
2
3
4
5
2
3
4
5
# 视角定位到指定的位置和高度
viewer.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(lon, lat, height),
orientation: {
heading: curHeading, //左右偏移
pitch: curPitch, //上下偏移
roll: 0.0,
},
});
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8