工程树是指explorer左边这棵树

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

树控件使用easyui的树


  • html部分

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

     <div data-options="region:'center',fit:true">
<object id="__g" type="application/x-cm-3d" style="width: 100%; height: 100%;"></object>
</div>
<div data-options="region:'west',split:true" style="width: 300px;">
<!-- 工程的树 -->
<ul id="treeProjectTree" class="easyui-tree" data-options="checkbox:true,animate:true,onCheck:treeProjectTreeOnCheck" style="width: 100%; height: 100%;">
</ul>
</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 从入门到精通系列

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

  1. 伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息

    在地图上点击要素查看要素信息,也就是identify功能 script部分 // 通过枚举索引获取枚举名称 function getEnumTextByIdx(enumObj, idx) { for ...

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

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

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

    开发环境:citymaker 7(以下简称cm),jquery,easyui 1.4(界面),visual studio 2012(没有vs,不部署到IIS也行,html文件在本地目录双击打开可用) ...

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

    esri-leaflet入门教程(5)- 动态要素加载 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...

  5. 超图GIS入门iserver搭建,前端调用iserver加载三维场景demo

    目录 前言 一.GIS介绍,为什么选择它? 二.环境安装 三.调用三维GIS场景 设置地图风格 添加地图iServer服务 前言 前段时间因为对3D制图感兴趣,学习了一下国内制作GIS的公司产品技术, ...

  6. 通过命令行运行java出现"错误: 找不到或无法加载主类 "解决办法

    首先在命令行运行不需要写package路径, 而在ide中一般是有路径的 so举例说明 例如程序名为HelloWorldTest.java,程序中含有package helloWorld语句,而该包位 ...

  7. ExtJS入门教程05,grid的异步加载数据

    上一篇演示了extjs grid的基本用法,并加载了本地数据.今天我们将演示如何加载异步数据. 所谓异步,就是通过ajax的方式将服务器端的数据加载到我们的grid中.为了提供数据,我们先定义一个数据 ...

  8. 《EMCAScript6入门》读书笔记——23.Module的加载实现

  9. webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)

    为什么是webpack webpack一下自己就

随机推荐

  1. MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)

    知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...

  2. async-await原理解析

    在用async包裹的方法体中,可以使用await关键字以同步的方式编写异步调用的代码.那么它的内部实现原理是什么样的呢?我们是否可以自定义await以实现定制性的需求呢?先来看一个简单的例子: cla ...

  3. javacv开发详解之1:调用本机摄像头视频(建议使用javaCV最新版本)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  4. VC将同一份代码同时编译为Dll和Exe的方法

    开发中经常遇到这样的情况,需要开发一个某某功能的接口Dll,但是Dll不能直接调试,你至少需要一个Loader 但是Loader和Dll本身不在同一个工程里,虽然都在本机的话并不影响源码级调试,但是总 ...

  5. pdf解锁和脱水印

    解锁工具下载http://pan.baidu.com/s/1o8FcKFC 使用方法: 第一步: 打开加密pdf文件保存即可 参考:http://www.epinv.com/post/157.html

  6. Oracle UNDO Tablespace size & Table Size

    Table Space Query select SEGMENT_NAME,bytes/1024/1024,a.* from dba_segments a UNDO Table Space Size ...

  7. k-means 算法介绍

    概述 聚类属于机器学习的无监督学习,在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.它跟分类的最主要区别就在于有没有“标签”.比如说我们有一组数据,数 ...

  8. poj3669【bfs】

    题意: 有个**要看流星雨,可是流星雨会砸死他的... 给出n个流星雨下落的坐标,时间,如果那个**在下落坐标或是上下左右就会gg,问你他最短跑到流星雨打不到的地方的时间. 思路: ①:预处理出一个矩 ...

  9. poj3176【简单DP】

    其实就是简单递推对吧~ 贴一发记忆化搜索的- #include <iostream> #include <stdio.h> #include <string.h> ...

  10. bzoj 3109: [cqoi2013]新数独【dfs】

    按3x3的小块dfs,填数的时候直接满足所有条件即可 #include<iostream> #include<cstdio> #include<cstring> u ...