- 在vue框架集成cesium使用的时候,Cesium.Viewer最好挂载在window或者vue的原型链上面,避免将Viewer挂载在组件data上,以优化内存;
- viewer的配置项
window.viewer = new this.Cesium.Viewer("cesiumContainer", {
animation: false,
shouldAnimate: false,
baseLayerPicker: false,
fullscreenButton: false,
vrButton: false,
homeButton: false,
selectionIndicator: false,
infoBox: false,
sceneModePicker: false,
timeline: false,
navigationHelpButton: false,
navigationInstructionsInitiallyVisible: false,
scene3DOnly: true,
useDefaultRenderLoop: true,
showRenderLoopErrors: true,
useBrowserRecommendedResolution: true,
automaticallyTrackDataSourceClocks: true,
orderIndependentTranslucency: true,
shadows: false,
projectionPicker: false,
requestRenderMode: true,
imageryProvider: createImageryProvider("osm"),
terrainProvider: addTerrain("ionTerrain")
});
- 移除图层的第二个参数要特别注意,第二个参数表明这个图层移除后是否销毁,如果不指明,默认销毁
let layers = window.viewer.scene.imageryLayers;
let imaPro = createImageryProvider(
"arcgis",
"https://map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer"
);
let arcLayer = layers.addImageryProvider(imaPro);
arcLayer.show = true;
arcLayer.alpha = 0.5;
layers.add(arcLayer);
layers.remove(arcLayer, false)
- cesium中的笛卡尔坐标系: x轴垂直屏幕向外;y轴向东;z轴向北;坐标原点为地球集合中心。
- 由于3D tile数据一般数据量比较大,为了保证性能一般选择用Primitive方式添加而不是entity。
- 使用primitive加载geometry时注意外观和geometry要匹配(画框线的时候不要使用材质)。
- 如果使用vue3集成Cesium,建议使用vite创建Vue3项目,集成方式简单便捷。可参考:一分钟搭建 Vite + Cesium 开发环境
- 如果使用vue3集成了Cesium,在创建entity或者primitive时一定不要将其变为响应式数据,不然remove方法会无法移除实例。
- 如果使用cesium时数据量太大导致网页展示慢、卡顿,可以通过禁止网页缓存进行缓解:
<meta http-equiv="pragrma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" /> <meta http-equiv="expires" content="0" />