我想实现的效果是:
在vue2中当我切换组件且viewer被重置的情况下,能够保留在切换之前已经添加的geojson数据,在新一次初始化viewer的时候将之前由GeoJSON添加而来的Entity重新加回来。
首先说几个坑:
1、Cesium中确实提供了一个EntityCollection
// 创建一个 EntityCollection 对象
var entities = new Cesium.EntityCollection();
但是它只能够处理普通的Entity,不能对由geojson数据处理而来的Entity对象进行添加。简单的说就是遍历它的values时,使用viewer.entities.add(xxx)是无法加载的。只有使用下面的方法添加的Entity可以通过遍历这个EntityCollection来进行添加。
// 这样使用可以正常添加普通的Entity
// 创建一个 EntityCollection 对象
var entities = new Cesium.EntityCollection();
// 创建一个新实体
var entity = entities.add({
position: Cesium.Cartesian3.fromDegrees(-75.59777, 40.03883),
point: {
pixelSize: 10,
color: Cesium.Color.YELLOW,
},
});
// 遍历实体集合
entities.values.forEach(function

文章讲述了在Vue2应用中使用Cesium渲染GeoJSON数据时,如何在切换组件并重置viewer后,保留并重新加载先前的GeoJSONEntity。关键在于使用viewer.dataSources._dataSources保存数据源,并在新的初始化中遍历添加。需要注意viewer的销毁时机以及避免对viewer.dataSources的错误保存方式。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



