Cesium geojson 移除

本文档详细介绍了在Cesium中遇到的删除GeoJson数据源的困扰,以及如何通过给数据源命名来正确实现删除操作。首先,尝试直接使用全局保存的dataSource进行删除失败,然后提出了解决方案,即给GeoJson赋予唯一名称,并通过`viewer.dataSources.getByName()`方法获取并删除数据源。这个方法确保了删除的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全部移除

这个没什么好说的,直接用就行

viewer.dataSources.removeAll();

单个移除

进行单个移除的时候,我遇到了麻烦,我将promise里面的datasource保存后,用保存下来的datasource进行删除,我发现无法 viewer.dataSources.remove(datasource) 无法移除。

这里是错误示例

// 全局保存 geojson 的 dataSource
var geoDataSource = null;

let geoPromise = Cesium.GeoJsonDataSource.load("geojson地址");
geoPromise.then((dataSource) => {
  // 将 dataSource 在全局保存下来用于删除
  geoDataSource = viewer.dataSources.add(dataSource);
  // 视角切换到geojson
  viewer.flyTo(dataSource.entities.values)
})

// 这里用全局保存的 geoDataSource 删除无效。
viewer.dataSources.remove(geoDataSource);

解决方案
给定义好的 geojson 赋一个 name ,然后通过 getByName 获取 dataSource 用于删除。

注意: 这里给 geojsonname 赋值,一定要是唯一的,要不然删除就会有删错的情况。

示例

let geoPromise = Cesium.GeoJsonDataSource.load(
  "geojson地址",
  {
    stroke: Cesium.Color.WHITE,   // 边框颜色
    strokeWidth: 3, // 边框宽度
  });
  
geoPromise.then((dataSource) => {
  // 添加 geojson
  viewer.dataSources.add(dataSource);
  // 给定义好的 geojson 的 name 赋值(这里的 dataSource 就是定义好的geojson)
  dataSource.name = "geojson_map";
  // 视角跳转到 geojson
  viewer.flyTo(dataSource.entities.values)
})

// 这里是删除语句(通过 getByName 获取 dataSources,用于删除)。
viewer.dataSources.remove(viewer.dataSources.getByName('geojson_map')[0])

删除前
在这里插入图片描述
删除后
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值