如果想在Cesium中显示一个点,目前有这么几种方法:Primitive、Entity、czml文件、GeoJson文件等。
下面是显示64,800 个点的 PointPrimitiveobjects 的代码示例,并且让所有点同时都运动起来
var viewer = new Cesium.Viewer('cesiumContainer'); // 生成PointPrimitiveCollection对象 var pointCollection = viewer.scene.primitives.add(new Cesium.PointPrimitiveCollection()); // 生成64800个点,每个经度、纬度值各生成一个点,高度为0(贴地表) // 每个点都添加到PointPrimitiveCollection对象中 for (var longitude = -180; longitude < 180; longitude++) { var color = Cesium.Color.PINK; if ((longitude % 2) === 0) { color = Cesium.Color.CYAN; } for (var latitude = -90; latitude < 90; latitude++) { pointCollection.add({ position : Cesium.Cartesian3.fromDegrees(longitude, latitude), color : color }); } } // 模拟每个点固定向外偏移(1km,1km,1km)(跟时间无关,每帧调用此函数) function animatePoints() { var positionScratch = new Cesium.Cartesian3(); var points = pointCollection._pointPrimitives; var length = points.length; for (var i = 0; i < length; ++i) { var point = points[i]; Cesium.Cartesian3.clone(point.position, positionScratch); Cesium.Cartesian3.add( positionScratch, new Cesium.Cartesian3(1000, 1000, 1000), positionScratch); point.position = positionScratch; } } // scene中的render 方法,每一帧都被会调用,用于场景的重绘 // 此处的preRender在render方法之前执行,也是每一帧被调用 // 由于每一帧调用animatePoints方法时,方法内部都将每个点 // 的位移向外移动1km,因此所有点就都运动起来了 viewer.scene.preRender.addEventListener(animatePoints);
参考:https://blog.csdn.net/u011575168/article/details/119985969