cesium添加多个geojson文件并分别控制显示和隐藏

/*获取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样式。

原文地址:https://www.cnblogs.com/Haiszu/p/12006056.html

时间: 2024-10-09 03:44:12

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

XE6发布文件 在Deployment Manager中添加待发布的文件,Remote Path写入assets\internal\或assets\就可以

XE6发布文件 在Deployment Manager中添加待发布的文件,Remote Path写入assets\internal\或assets\就可以其中assets\internal\会把文件发布到TPath.GetDocumentsPath(也就是/data/data/.../files)目录下assets\会把文件发布到TPath.GetSharedDocumentsPath(也就是/mnt/sdcard/Android/data/.../files)目录下另外修改了System.St

Xcode 7.3 添加和配置pch文件?

开发工具/原料: 1.Mac 2.Xcode(我这里目前用的Xcode的最新版本Xcode 7.3) PCH文件的部分发展史: 定义:pch全称为“precompiled header”,也就是预编译头文件,有利于节约开发时间.代码维护时间. 发展:在老版本的Xcode里面,创建项目之后会自动创建有pch文件,在里面往往写一些经常使用的框架头文件或者一些宏定义的URL地址,这里面定义后可全局使用,但是在Xcode6里面项目创建后不再自带pch文件. 方法/步骤: 1.打开Xcode,创建项目.当

使用STC-ISP向KEIL添加STC芯片头文件

第一步:打开“STC-ISP”软件. 第二步:点击右手边“Keil仿真设置”,然后点击“添加型号和头文件到Keil中添加STC仿真器驱动到Keil中”. 第三步:在弹出的“浏览文件夹”对话框中,找到你Keil软件安装目录下的“C51”文件夹.本实验以我自己电脑Keil软件的安装目录为例.找到“C51”文件夹后选中它,然后点击“确定”.此时弹出“添加成功”对话框.

【 D3.js 入门系列 — 10.3 】 GeoJSON 文件和 TopoJSON 文件的区别和联系

本人的个人博客为:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 前些天有朋友留言询问 GeoJSON 文件和 TopoJSON 文件的关系,正好我其实也不是十分明了,查询了一番后整理如下,还望大家指证. 这两种文件都是基于 JSON 语法的,首先来说一下 JSON 语法和文件是怎样的. 1. JSON 格式 JSON(JavaScript Object Notation) 是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读

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

php添加数据到xml文件中 时间:2015-12-17 06:30:37来源:网络 导读:php添加数据到xml文件中 xml文件:stu.xml: 复制代码代码如下: <?xml version="1.0" encoding="utf-8" ?><AllData><xueshengmen><xuesheng>  <name>张三</name>  <yuwen>80</yuw

添加Ubuntu的库文件路径

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

【 D3.js 入门系列 --- 10.1 】 简化 GeoJSON 文件

本人的个人博客为:www.ourd3js.com csdn博客为:blog.csdn.net/lzhlzz 转载请注明出处,谢谢. 上一篇制作中国地图时用到了 GeoJSON 文件.后来我发现这个文件太大,有 2,364 KB,当然这能保证地图很精确,但我们通常不需要那么精确的边界,所以有必要将它缩小.所幸已经有前人做过这项工作,真是前人栽树,后人乘凉,在这里表示感谢. 转换方法: 1. 打开网站  http://mapshaper.org/ 2. 点击 select 选择要缩减的 GeoJSO

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

有时候.a静态库不能上传到svn的服务器  导致别人拉代码运行不了 这是因为cornerstone设置里面默认不会提交.a文件, 在上图选项栏里是cornerstone默认忽略上传的文件名后缀,在这里面吧.a删除即可,同样如果文法上传其他类型的文件可以查看一下是否后缀名也包含在这里面 参考资料: svn中添加.a 静态库文件

将字符串添加到指定的文件中去 AppendAllText ;判断指定路径的文件是否存在File.Exists(Path)

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { class Program { static void Main(string[] args) { string path = @"F:\1.txt"; //指定文件的路径 //---------------------------------------------- //.Exi