伟景行 citymaker 从入门到精通(2)——工程图层树加载

工程树是指explorer左边这棵树

本例子实现了图层树加载,点击节点切换可视状态

树控件使用easyui的树


  • html部分

onCheck:treeProjectTreeOnCheck是指树节点的onCheck是js函数treeProjectTreeOnCheck

1     <div data-options="region:‘center‘,fit:true">
2         <object id="__g" type="application/x-cm-3d" style="width: 100%; height: 100%;"></object>
3     </div>
4     <div data-options="region:‘west‘,split:true" style="width: 300px;">
5         <!-- 工程的树 -->
6         <ul id="treeProjectTree" class="easyui-tree" data-options="checkbox:true,animate:true,onCheck:treeProjectTreeOnCheck" style="width: 100%; height: 100%;">
7         </ul>
8     </div>

  • script部分
        // 空项的itemid
        var emptyItemId = "00000000-0000-0000-0000-000000000000";

        // 获取树节点(循环)
        function addProjectTreeNodeLoop(parentId, nodes) {
            var projecrTree = __g.objectManager.getProjectTree();
            // 获取父节点的第一个子节点
            var itemId = projecrTree.getNextItem(parentId, 11);

            // 当当前节点不等于空节点
            while (itemId != emptyItemId) {
                // 组节点
                if (projecrTree.isGroup(itemId) == true) {
                    var node = {};
                    // 项的名称
                    node.text = projecrTree.getItemName(itemId);
                    // 可视:0不可见,1可见,2部分可见
                    var visibility = projecrTree.getVisibility(itemId);
                    node.checked = visibility == 1 ? true : false;
                    node.itemId = itemId;
                    node.children = [];
                    nodes.push(node);

                    // 继续遍历子项
                    addProjectTreeNodeLoop(itemId, node.children);
                } else {
                    var node = {};
                    node.text = projecrTree.getItemName(itemId);
                    var visibility = projecrTree.getVisibility(itemId);
                    node.checked = visibility == 1 ? true : false;

                    node.itemId = itemId;

                    nodes.push(node);
                }

                // 获取当前项的同级的下一项
                itemId = projecrTree.getNextItem(itemId, 13);
            }
        }

        // 工程树的节点check事件
        function treeProjectTreeOnCheck(node, checked) {
            var projecrTree = __g.objectManager.getProjectTree();
            // 控制工程树的可视
            projecrTree.setVisibility(node.itemId, checked == true ? 1 : 0);
        }

        //初始化工程树
        function initProjectTree() {
            var nodes = [];
            // 根节点ItemId
            var rootId = __g.objectManager.getProjectTree().rootID;
            // 获取树所有节点
            addProjectTreeNodeLoop(rootId, nodes);

            //填充节点数据到树控件
            $(‘#treeProjectTree‘).tree({
                data: nodes
            });
        }

        $(function ($) {
            // 初始化三维控件
            initAxControl();
            //cep文件路径,本地路径也行
            var cepPath = "http://192.168.15.53:32555/default.cep";
            //打开cep
            __g.project.open(cepPath, false, "");

            //初始化工程树
            initProjectTree();
        });

  • 最终效果:

代码下载:

链接:http://pan.baidu.com/s/1ge9yLLT 密码:39g1



全系列链接:

伟景行 citymaker 从入门到精通系列

时间: 2024-11-05 05:05:38

伟景行 citymaker 从入门到精通(2)——工程图层树加载的相关文章

伟景行 citymaker 从入门到精通系列

伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件

伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件

开发环境:citymaker 7(以下简称cm),jquery,easyui 1.4(界面),visual studio 2012(没有vs,不部署到IIS也行,html文件在本地目录双击打开可用) 以下演示一个最基本的功能,先初始化控件,然后通过打开cep文件加载三维场景 从CityMaker SDK安装目录复制文件 还需要复制(整个skybox文件夹) 复制后的文件结构 PS:我的代码里的cm7.js和cm7_sample_util.js有少许改动,下方有提供代码 html文件 新建一htm

esri-leaflet入门教程(5)- 动态要素加载

esri-leaflet入门教程(5)- 动态绘制图形 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚本只是非常简单的调用.但如果要做一列的地图交互操作或者动态渲染等,那就必须使用地图区域跳转.查询结果渲染.动态添加图形等多种交互手段.而这些交互手段基本上离不开一些非服务类型的数据加载,我们可以将其成为动态要素.动态要素一般是在页面端进行动态绘制的. 动态要素这一说法并不是ArcGIS 或者leaf

zuul入门(5)zuul的过滤器加载

一.Groovy编写的Filter 1.可以放到指定目录加载 创建一个pre类型的filter,在run方法中获取HttpServletRequest 然后答应header信息 在代码中加入groovy编译器,间隔10秒扫描一次groovy文件,其代码如下: <dependency> <groupId>org.codehaus.groovy</groupId> <artifactId>groovy-all</artifactId> <ver

web前端入门到实战:纯CSS实现加载转圈样式

不同的项目中对于等待加载时转圈圈的样式是不同的,有的是传统的转圈的gif图片,见得比较多的是将转圈圈的换成了可爱的图标.有时候项目中加入等待加载的图片会很违和,不符合美观,所以需要用CSS做一个.下面是一个纯CSS实现转圈样式的例子. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport&q

esri-leaflet入门教程(4)-加载各类图层

by 李远祥 在leaflet中图层一般分为底图(Basemap)和叠加图层(Overlay).前面章节已经介绍过底图其实也是实现了TileLayer 接口,而其他的叠加图层要么就是叠加的业务图层,要么就是动态显示的图形和符号.这一点在esri leaflet中也是有对照的. ArcGIS产品中比较让人熟知的图层包括ArcGISDynamicMapServiceLayer.ArcGISImageServiceLayer.ArcGISTiledMapServiceLayer.FeatureLaye

《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3

内容简介 <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流行.并且用途比较广泛的编程语言,所以,<跟老齐学Python:从入门到精通>读起来不晦涩,并且在其中穿插了很多貌似与Python编程无关,但与学习者未来程序员职业生涯有关的内容. <跟老齐学Python:从入门到精通>特别强调了学习和使用Python的基本方法,学习一种高级语言,掌握其

CUDA从入门到精通

CUDA从入门到精通(零):写在前面 在老板的要求下,本博主从2012年上高性能计算课程开始接触CUDA编程,随后将该技术应用到了实际项目中,使处理程序加速超过1K,可见基于图形显示器的并行计算对于追求速度的应用来说无疑是一个理想的选择.还有不到一年毕业,怕是毕业后这些技术也就随毕业而去,准备这个暑假开辟一个CUDA专栏,从入门到精通,步步为营,顺便分享设计的一些经验教训,希望能给学习CUDA的童鞋提供一定指导.个人能力所及,错误难免,欢迎讨论. PS:申请专栏好像需要先发原创帖超过15篇...

ASP.NET MVC4入门到精通系列目录汇总(转)

序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,Web开发依旧停留在拖控件的水平,最最基本的算 法,递归.排序(我不要求快速排序,你会冒泡就行了)都不会,数据库方面,很基础的SQL都写不出,分组过滤也不会,更别提性能了,问下数据优化经验,除 了回答加索引基本就没下文了.当然,一些过去N年都是做ASP.NET WebForm开发的,不熟悉MVC,那也没