/*获取geojson数据*/
function get_geojson(name,h,n){
let x=document.getElementById(n);
if(x.className === "la"){
loadgeojson(name,h,n);
x.className = "la2";
}else{
x.className = "la";
let len = viewer.dataSources.length;
if(len>0){
for(let i=0;i<len;i++){
var dataSource = viewer.dataSources.get(i);
if(dataSource._name === n){
viewer.dataSources.remove(dataSource);
}
}
}
}
}
var promise=new Array(9);
function loadgeojson(name,h,n){
let xmlhttp,p;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
} else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP_geo");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200 )
{
p=xmlhttp.response;
Cesium.Math.setRandomNumberSeed(0);//设置随机数种子
promise[n] = Cesium.GeoJsonDataSource.load(p);
promise[n].then(function (dataSource) {
viewer.dataSources.add(dataSource);
dataSource.name= n;
let entities = dataSource.entities.values;
entities.id=n;
let colorHash = {};
//可对单个实体进行设置
for (let i = 0; i < entities.length; i++) {
let entity = entities[i];//geojson里面必须得有一个name属性,entity.name对应
let name = entity.name;//可以使两个同名要素使用同一种颜色
let color = colorHash[name];
if (!color) {
color = Cesium.Color.fromRandom({
alpha : 1.0
});
colorHash[name] = color;
}
entity.polygon.material = color;
entity.polygon.outline = true;// polygon边线显示与否
entity.polygon.height=h;//底面距离地面高度
entity.polygon.extrudedHeight =h+0.2;//顶面距离地面高度
}
});
/*viewer.flyTo(promise[n]);*/
}
};
xmlhttp.open("GET","./jsp/get_geojson.jsp?floor_name="+name,true);
xmlhttp.send();
}

完整代码如上所示。

1创建promise数组,长度为geojson数据的个数;

2loadgeojson(name,h,n)函数异步加载geojson文件(服务器后台从数据库中下载json数据到本地,返回文件地址p),name为geojson数据名称,h为高度,n为id,设为datasource名称;

3getjson(name,h,n)函数,name为geojson数据名称,h为高度,n为datasource名称(参数与loadgeojson相同),datasource的id从1开始记录geojson加载顺序,判断名称是否一致,删除该资源(无序)。

4代码实现了在页面通过button控制geojson的加载和移除,对于已经加载的geojson数据,button.style.backgroundcolor变为红色(.la2样式),当移除该数据时,button回到.la样式。

cesium添加多个geojson文件并分别控制显示和隐藏的更多相关文章

  1. 使用 Cesium 动态加载 GeoJSON 数据

    前言 需求是这样的,我需要在地图中显示 08 年到现在的地震情况,地震都是发生在具体的时间点的,那么问题就来了,如何实现地震情况按照时间动态渲染而不是一次全部加载出来. 一. 方案分析 这里面牵扯到两 ...

  2. MVC学习随笔----如何在页面中添加JS和CSS文件

    http://blog.csdn.net/xxjoy_777/article/details/39050011 1.如何在页面中添加Js和CSS文件. 我们只需要在模板页中添加JS和CSS文件,然后子 ...

  3. 要将 ASP.NET 访问权限授予某个文件,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。

    找到该文件所在文件夹,右键属性,安全选项卡,添加-aspnet用户,并设置其权限为完全控制.如果还是不行,就添加一个Everyone用户并赋予完全控制权限windows server 2008中IIS ...

  4. VC6在win7环境下无法添加以及打开现有文件的解决办法

       在VC6.0中使用键盘快捷键或者是文件菜单打开现有文件以及添加文件出现编辑器停止响应,弹出内容为Microsoft(R) Developer Studio已停止工作 Windows正在检查解决该 ...

  5. php添加数据到xml文件的例子

    php添加数据到xml文件中 时间:2015-12-17 06:30:37来源:网络 导读:php添加数据到xml文件中   xml文件:stu.xml: 复制代码代码如下: <?xml ver ...

  6. Sql server之路 (三)添加本地数据库SDF文件

    12月25日 今天搞了半天 添加本地数据库Sdf文件到项目里.总是出现问题. 安装环境 Vs2008 没有安装的环境 1.Vs2008 sp1 2. 适用于 Windows 桌面的 Microsoft ...

  7. 添加Ubuntu的库文件路径

    添加Ubuntu的库文件路径 http://blog.csdn.net/r91987/article/details/6879062 关于ubuntu添加共享库路径: 1. 将绝对路径写入 /etc/ ...

  8. android 添加依赖的库文件

    Notpad: 2016-3-16: 1.android 添加依赖的库文件 右键自己的项目 -> properties ->android ->在Library处点击add -> ...

  9. svn管理代码在cornerstone上无法添加.a 静态库文件

    有时候.a静态库不能上传到svn的服务器  导致别人拉代码运行不了 这是因为cornerstone设置里面默认不会提交.a文件, 在上图选项栏里是cornerstone默认忽略上传的文件名后缀,在这里 ...

随机推荐

  1. MIT线性代数:20.克拉默法则,逆矩阵和体积

  2. 差异---虐爆了yxs的 后缀数组裸题 板子题 单调栈的简单应用 字符串的基础理解考察题

    先玩柿子,发现可以拆开,前半部分可以瞬间求出,于是只求后半部分 然后抄板子就好了,完结撒花! 下边是个人口胡,因为已经被虐爆头脑不清醒了 定义:LCP(a,b)为排名为a,b两个后缀的最长公共前缀 证 ...

  3. 基于华为物联网IOT的应用开发 ---界面管理开发

    在前面随笔<基于华为物联网IOT的应用开发 --- 基于.net 的SDK封装>介绍过IOT中应用侧SDK的封装,主要就是基于华为IOT的应用侧封装,以便在应用系统中进行调用.应用侧SDK ...

  4. COO 与 CSR 稀疏矩阵存取格式;

    稀疏矩阵是指矩阵中元素大部分是0的矩阵,事实上,实际问题中大规模矩阵基本上是稀疏矩阵,很多稀疏度在90%甚至99%以上:因此我们需要有高效的稀疏矩阵存储格式. 本文参考了 https://www.cn ...

  5. windows下如何安装Python虚拟环境

    1.前言 由于Python的版本众多,还有Python2和Python3的争论,因此有些软件包或第三方库就容易出现版本不兼容的问题. 通过 virtualenv 这个工具,就可以构建一系列虚拟的Pyt ...

  6. 大数据之路day01_3--JAVA语言基础(1)

    从这里开始,正式进入正轨 1.关键字  2.main main是关键字吗? 不是,他只是一个标识符,只不过有点特殊,虚拟机可以识别. main(主函数)的作用 1:可以保证程序的独立运行 2:是程序的 ...

  7. 『题解』洛谷P3376 【模板】网络最大流

    Problem Portal Portal1:Luogu Description 如题,给出一个网络图,以及其源点和汇点,求出其网络最大流. Input 第一行包含四个正整数\(N,M,S,T\),分 ...

  8. 易初大数据 2019年11月8日 linux 王庆超

    ◆linux系统的特点: (1)完全免费. (2)高效.安全.稳定. (3)支持多种硬件平台. (4)友好的用户界面. (5)强大的网络功能. (6)支持多任务.多用户. ◆linux体系: 1.li ...

  9. TensorFlow2.0(10):加载自定义图片数据集到Dataset

    .caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px so ...

  10. 那些年用过的UI开发平台

    屈指算来,在我不长也不能算短的职业生涯中,接触了数代 的UI技术: MFC (Microsoft Foundation Class)- Win32上最强大的Class Library,没有之一.VS唯 ...