Cesium重复添加geojson

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

我想实现的效果是:

在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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值