var viewer = new Cesium.Viewer('cesiumContainer', { navigationHelpButton: false, animation: false, timeline: false }); //坐标 var mypositions = Cesium.Cartesian3.fromDegreesArrayHeights([ // Triangle A -90.6714, 35.9641, 322.543, -94.6717, 38.9642, 325.51, -97.6717, 35.9639, 324.724, // Triangle B -94.6717, 30.9639, 324.717, -90.6717, 32.9639, 324.724, -94.6717, 34.9639, 324.719 ]); //加入点 var pointCollection = new Cesium.PointPrimitiveCollection(); for (var i = 0; i < mypositions.length; i++) { pointCollection.add({ position: mypositions[i], color: Cesium.Color.YELLOW }) }; viewer.scene.primitives.add(pointCollection); //固定相机位置 var extent = Cesium.Rectangle.fromDegrees(-98, 30, -90, 39); Cesium.Camera.DEFAULT_VIEW_RECTANGLE = extent; Cesium.Camera.DEFAULT_VIEW_FACTOR = 0.5; //点的数量 var numPositions = mypositions.length; //点存储空间 var pos = new Float64Array(numPositions * 3); //向量存储空间 var normals = new Float32Array(numPositions * 3); for (var i = 0; i < numPositions; ++i) { pos[i * 3] = mypositions[i].x; pos[i * 3 + 1] = mypositions[i].y; pos[i * 3 + 2] = mypositions[i].z; normals[i * 3] = 0.0; normals[i * 3 + 1] = 0.0; normals[i * 3 + 2] = 1.0; } //创建geometry var geometry = new Cesium.Geometry({ attributes: { position: new Cesium.GeometryAttribute({ // not FLOAT componentDatatype: Cesium.ComponentDatatype.DOUBLE, componentsPerAttribute: 3, values: pos }), normal: new Cesium.GeometryAttribute({ componentDatatype: Cesium.ComponentDatatype.FLOAT, componentsPerAttribute: 3, values: normals }) }, primitiveType: Cesium.PrimitiveType.TRIANGLES, boundingSphere: Cesium.BoundingSphere.fromVertices(pos) }); //绘制三角带 var myInstance = new Cesium.GeometryInstance({ geometry: geometry, attributes: { color: Cesium.ColorGeometryInstanceAttribute.fromColor(Cesium.Color.RED) }, show: new Cesium.ShowGeometryInstanceAttribute(true) }); viewer.scene.primitives.add(new Cesium.Primitive({ geometryInstances: [myInstance], asynchronous: false, appearance: new Cesium.PerInstanceColorAppearance({ closed: true, translucent: false }) }));