(一)Entity API简介
1.立方体:
var blueBox = viewer. entities. add ( {
name : 'Blue box' ,
position: Cesium. Cartesian3. fromDegrees ( - 114.0 , 40.0 , 300000.0 ) ,
box : {
dimensions : new Cesium. Cartesian3 ( 400000.0 , 300000.0 , 500000.0 ) ,
material : Cesium. Color. BLUE
}
} ) ;
var redBox = viewer. entities. add ( {
name : 'Red box with black outline' ,
position: Cesium. Cartesian3. fromDegrees ( - 107.0 , 40.0 , 300000.0 ) ,
box : {
dimensions : new Cesium. Cartesian3 ( 400000.0 , 300000.0 , 500000.0 ) ,
material : Cesium. Color. RED ,
outline : true ,
outlineColor : Cesium. Color. BLACK
}
} ) ;
var outlineOnly = viewer. entities. add ( {
name : 'Yellow box outline' ,
position: Cesium. Cartesian3. fromDegrees ( - 100.0 , 40.0 , 300000.0 ) ,
box : {
dimensions : new Cesium. Cartesian3 ( 400000.0 , 300000.0 , 500000.0 ) ,
fill : false ,
outline : true ,
outlineColor : Cesium. Color. YELLOW
}
} ) ;
2.圆和椭圆
var viewer = new Cesium. Viewer ( 'cesiumContainer' ) ;
var greenCircle = viewer. entities. add ( {
position: Cesium. Cartesian3. fromDegrees ( - 111.0 , 40.0 , 150000.0 ) ,
name : 'Green circle at height' ,
ellipse : {
semiMinorAxis : 300000.0 ,
semiMajorAxis : 300000.0 ,
height: 200000.0 ,
material : Cesium. Color. GREEN
}
} ) ;
var redEllipse = viewer. entities. add ( {
position: Cesium. Cartesian3. fromDegrees ( - 103.0 , 40.0 ) ,
name : 'Red ellipse on surface with outline' ,
ellipse : {
semiMinorAxis : 250000.0 ,
semiMajorAxis : 400000.0 ,
material : Cesium. Color. RED . withAlpha ( 0.5 ) ,
outline : true ,
outlineColor : Cesium. Color. RED
}
} ) ;
var blueEllipse = viewer. entities. add ( {
position: Cesium. Cartesian3. fromDegrees ( - 95.0 , 40.0 , 100000.0 ) ,
name : 'Blue translucent, rotated, and extruded ellipse' ,
ellipse : {
semiMinorAxis : 150000.0 ,
semiMajorAxis : 300000.0 ,
extrudedHeight : 200000.0 ,
rotation : Cesium. Math. toRadians ( 45 ) ,
material : Cesium. Color. BLUE . withAlpha ( 0.7 ) ,
outline : true
}
} ) ;
viewer. zoomTo ( viewer. entities) ;
3.圆柱和圆锥(Cylinder Cones)
var greenCylinder = viewer. entities. add ( {
name : 'Green cylinder with black outline' ,
position: Cesium. Cartesian3. fromDegrees ( - 100.0 , 40.0 , 200000.0 ) ,
cylinder : {
length : 400000.0 ,
topRadius : 200000.0 ,
bottomRadius : 200000.0 ,
material : Cesium. Color. GREEN ,
outline : true ,
outlineColor : Cesium. Color. DARK_GREEN
}
} ) ;
var redCone = viewer. entities. add ( {
name : 'Red cone' ,
position: Cesium. Cartesian3. fromDegrees ( - 105.0 , 40.0 , 200000.0 ) ,
cylinder : {
length : 400000.0 ,
topRadius : 0.0 ,
bottomRadius : 200000.0 ,
material : Cesium. Color. RED
}
} ) ;
4.墙
var redWall = viewer. entities. add ( {
name : 'Red wall at height' ,
wall : {
positions : Cesium. Cartesian3. fromDegreesArrayHeights (
[ - 115.0 , 44.0 , 200000.0 ,
- 90.0 , 44.0 , 200000.0 ]
) ,
minimumHeights : [ 100000.0 , 100000.0 ] ,
material : Cesium. Color. RED
}
} ) ;
var greenWall = viewer. entities. add ( {
name : 'Green wall from surface with outline' ,
wall : {
positions : Cesium. Cartesian3. fromDegreesArrayHeights (
[ - 107.0 , 43.0 , 100000.0 ,
- 97.0 , 43.0 , 100000.0 ,
- 97.0 , 40.0 , 100000.0 ,
- 107.0 , 40.0 , 100000.0 ,
- 107.0 , 43.0 , 100000.0 ] ) ,
material : Cesium. Color. GREEN ,
outline : true ,
outlineColor : Cesium. Color. BLACK
}
} ) ;
5.点、图标和标签
var viewer = new Cesium. Viewer ( 'cesiumContainer' ) ;
var citizensBankPark = viewer. entities. add ( {
name : 'Citizens Bank Park' ,
position : Cesium. Cartesian3. fromDegrees ( - 75.166493 , 39.9060534 ) ,
point : {
pixelSize : 5 ,
color : Cesium. Color. RED ,
outlineColor : Cesium. Color. WHITE ,
outlineWidth : 2
} ,
label : {
text : 'Citizens Bank Park' ,
font : '14pt monospace' ,
style : Cesium. LabelStyle. FILL_AND_OUTLINE ,
outlineWidth : 2 ,
verticalOrigin : Cesium. VerticalOrigin. BOTTOM ,
pixelOffset : new Cesium. Cartesian2 ( 0 , - 9 )
}
billboard : {
image : '.png' ,
width : 64 ,
height : 64
} ,
} ) ;
6.3D模型
var viewer = new Cesium. Viewer ( 'cesiumContainer' ) ;
var position = Cesium. Cartesian3. fromDegrees ( - 123.0744619 , 44.0503706 ) ;
var heading = Cesium. Math. toRadians ( 45.0 ) ;
var pitch = Cesium. Math. toRadians ( 15.0 ) ;
var roll = Cesium. Math. toRadians ( 0.0 ) ;
var orientation = Cesium. Transforms. headingPitchRollQuaternion ( position, heading, pitch, roll) ;
var entity = viewer. entities. add ( {
position : position,
orientation : orientation,
model : {
uri : '支持gltf模型'
}
} ) ;
viewer. trackedEntity = entity;
7.根据经纬度贴图片
Viewer. entities. add ( {
Rectangle: {
Coordinates: Cesium. Rectangle. fromDegrees ( ) ,
Material: new Cesium. ImageMaterialProperty ( {
Image: './png' ,
} )
}
} ) ;
(二)Primitive API
1.绘制矩形
var viewer = new Cesium. Viewer ( 'cesiumContainer' ) ;
var scene = viewer. scene;
scene. primitives. add ( new Cesium. RectanglePrimitive ( {
rectangle : Cesium. Rectangle. fromDegrees ( - 100.0 , 20.0 , - 90.0 , 30.0 ) ,
material : Cesium. Material. fromType ( 'Dot' )
} ) ) ;
2.绘制多线段
var primitive = new Cesium. Primitive ( {
geometryInstances : new Cesium. GeometryInstance ( {
geometry : new Cesium. PolylineGeometry ( {
positions : Cesium. Cartesian3. fromDegreesArrayHeights ( [
0.0 , 0.0 , 1000
5.0 , 0.0 , 5000
] ) ,
width : 10.0 ,
vertexFormat : Cesium. PolylineColorAppearance. VERTEX_FORMAT
} ) ,
attributes : {
color : Cesium. ColorGeometryInstanceAttribute. fromColor ( new Cesium. Color ( 1.0 , 1.0 , 1.0 , 1.0 ) )
}
} ) ,
appearance : new Cesium. PolylineColorAppearance ( {
translucent : false
} ) } ) ;
viewer. scene. primitives. add ( primitive) ;
3.绘制添加点
var points = scene. primitives. add ( new Cesium. PointPrimitiveCollection ( ) ) ;
points. add ( {
color: Cesium. Color. RED ,
pixelSize: size,
position: new Cesium. Cartesian3. fromDegrees ( log, lat, height) ,
} )