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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
| //绘制水面效果
|
| function drawWater() {
| // this.viewer.scene.globe.depthTestAgainstTerrain = true;
| var waterFace = [
| 110.15,34.56, 0,
| 110.25, 34.56, 0,
| 110.25, 34.54, 0,
| 110.15, 34.54, 0];
| var waterPrimitive = new Cesium.Primitive({
| show: true,// 默认隐藏
| allowPicking: false,
| geometryInstances: new Cesium.GeometryInstance({
| geometry: new Cesium.PolygonGeometry({
| polygonHierarchy: new Cesium.PolygonHierarchy(Cesium.Cartesian3.fromDegreesArrayHeights(waterFace)),
| extrudedHeight: 0,//注释掉此属性可以只显示水面
| // perPositionHeight : true//注释掉此属性水面就贴地了
| })
| }),
| // 可以设置内置的水面shader
| appearance: new Cesium.EllipsoidSurfaceAppearance({
| material: new Cesium.Material({
| fabric: {
| type: 'Water',
| uniforms: {
| //baseWaterColor:new Cesium.Color(0.0, 0.0, 1.0, 0.5),
| //blendColor: new Cesium.Color(0.0, 0.0, 1.0, 0.5),
| //specularMap: 'gray.jpg',
| //normalMap: '../assets/waterNormals.jpg',
| normalMap: '../assets/images/media/waterNormals.jpg',
| frequency: 1000.0,
| animationSpeed: 0.01,
| amplitude: 10.0
| }
| }
| }),
| // fragmentShaderSource: 'varying vec3 v_positionMC;\nvarying vec3 v_positionEC;\nvarying vec2 v_st;\nvoid main()\n{\nczm_materialInput materialInput;\nvec3 normalEC = normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), vec3(1.0)));\n#ifdef FACE_FORWARD\nnormalEC = faceforward(normalEC, vec3(0.0, 0.0, 1.0), -normalEC);\n#endif\nmaterialInput.s = v_st.s;\nmaterialInput.st = v_st;\nmaterialInput.str = vec3(v_st, 0.0);\nmaterialInput.normalEC = normalEC;\nmaterialInput.tangentToEyeMatrix = czm_eastNorthUpToEyeCoordinates(v_positionMC, materialInput.normalEC);\nvec3 positionToEyeEC = -v_positionEC;\nmaterialInput.positionToEyeEC = positionToEyeEC;\nczm_material material = czm_getMaterial(materialInput);\n#ifdef FLAT\ngl_FragColor = vec4(material.diffuse + material.emission, material.alpha);\n#else\ngl_FragColor = czm_phong(normalize(positionToEyeEC), material);\
| // gl_FragColor.a=0.5;\n#endif\n}\n'//重写shader,修改水面的透明度
| })
| });
| this.viewer.scene.primitives.add(waterPrimitive);
|
| this.viewer.camera.flyTo({
| destination: Cesium.Cartesian3.fromDegrees(110.2, 34.55, 6000.0),
| orientation: {
| heading: Cesium.Math.toRadians(0.0), //默认朝北0度,顺时针方向,东是90度
| pitch: Cesium.Math.toRadians(-90), //默认朝下看-90,0为水平看,
| roll: Cesium.Math.toRadians(0) //默认0
| }
| });
|
| CesiumFlood.create(viewer,true,1100,500,1,true);
| CesiumFlood.start();
| }
|
| function sub_analysis_draw(){
| var options = {
| 'viewer':viewer,
| 'polygoncolor': Cesium.Color.SALMON.withAlpha(0.5), //面的颜色(可设置透明度)
| 'pointcolor': Cesium.Color.RED, //画面时圈点的颜色
| }
| CesiumFlood.drawFloodDraw(options);
| }
|
| function sub_analysis_drawClear(){
| var options = {
| 'viewer': viewer, //全局Cesium对象
| };
| CesiumFlood.floodDrawClean(options);
| }
|
| function sub_analysis_start(max,min,speed){
| // CesiumFlood.polygon_degrees = CesiumDraw.polygonPoints;
| CesiumFlood.create(viewer,true,max,min,speed,true);
| CesiumFlood.start();
| }
|
| function sub_analysis_stop(){
| CesiumFlood.speed = 0;
| }
| function sub_analysis_clear(){
| CesiumFlood.remove();
| }
|
|