cesium-动态编辑primitive探索 ( 五) API实现方式
实际上这种方式为粗暴的移除重新添加。对于单个primitive来说,没有卡顿现象,可以考虑以此种方式来进行;
下一步计划看看entity的property回调如何来实现
let layer=new Cesium.ArcGisMapServerImageryProvider({ url: 'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer', enablePickFeatures: false }) var viewer = new Cesium.Viewer('cesiumContainer', { imageryProvider: layer, }); let semiMajorAxis=500000 function addPr(semiMajorAxis) { let geometry= new Cesium.EllipseGeometry({ semiMajorAxis:semiMajorAxis, semiMinorAxis : semiMajorAxis, extrudedHeight:0, center:Cesium.Cartesian3.fromDegrees(119, 40.03883) }) return new Cesium.Primitive({ geometryInstances : new Cesium.GeometryInstance({ geometry: geometry, }), releaseGeometryInstances:false, appearance: new Cesium.EllipsoidSurfaceAppearance({ material:Cesium.Material.fromType('Stripe') }), asynchronous:false, // show:true }) } let pr=addPr(semiMajorAxis) console.log(pr) viewer.scene.primitives.add(pr); viewer.camera.setView({ destination: Cesium.Cartesian3.fromDegrees(110.20, 34.55, 3000000) }); var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas); var moveFlag=false handler.setInputAction(function(movement) { if(viewer){ console.log(viewer.scene.primitives) viewer.scene.primitives.remove(pr) semiMajorAxis+=500 pr=addPr(semiMajorAxis) viewer.scene.primitives.add(pr) } },Cesium.ScreenSpaceEventType.MOUSE_MOVE);