伟景行 citymaker 从入门到精通(2)——工程图层树加载
工程树是指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 从入门到精通(2)——工程图层树加载的更多相关文章
- 伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息
在地图上点击要素查看要素信息,也就是identify功能 script部分 // 通过枚举索引获取枚举名称 function getEnumTextByIdx(enumObj, idx) { for ...
- 伟景行 citymaker 从入门到精通系列
伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件 伟景行 citymaker 从入门到精通(2)——工程图层树加载 伟景行 citymaker 从入门 ...
- 伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件
开发环境:citymaker 7(以下简称cm),jquery,easyui 1.4(界面),visual studio 2012(没有vs,不部署到IIS也行,html文件在本地目录双击打开可用) ...
- esri-leaflet入门教程(5)- 动态要素加载
esri-leaflet入门教程(5)- 动态要素加载 by 李远祥 在上一章节中已经说明了esr-leaflet是如何加载ArcGIS Server提供的各种服务,这些都是服务本身来决定的,API脚 ...
- 超图GIS入门iserver搭建,前端调用iserver加载三维场景demo
目录 前言 一.GIS介绍,为什么选择它? 二.环境安装 三.调用三维GIS场景 设置地图风格 添加地图iServer服务 前言 前段时间因为对3D制图感兴趣,学习了一下国内制作GIS的公司产品技术, ...
- 通过命令行运行java出现"错误: 找不到或无法加载主类 "解决办法
首先在命令行运行不需要写package路径, 而在ide中一般是有路径的 so举例说明 例如程序名为HelloWorldTest.java,程序中含有package helloWorld语句,而该包位 ...
- ExtJS入门教程05,grid的异步加载数据
上一篇演示了extjs grid的基本用法,并加载了本地数据.今天我们将演示如何加载异步数据. 所谓异步,就是通过ajax的方式将服务器端的数据加载到我们的grid中.为了提供数据,我们先定义一个数据 ...
- 《EMCAScript6入门》读书笔记——23.Module的加载实现
- webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
为什么是webpack webpack一下自己就
随机推荐
- 一步一步学Silverlight 2系列(27):使用Brush进行填充
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- docker 初试---常用命令
http://blog.csdn.net/wsscy2004/article/details/25878363 常用命令 查看容器的root用户密码 docker logs <容器名orID&g ...
- POJ - 2142 The Balance(扩展欧几里得求解不定方程)
d.用2种砝码,质量分别为a和b,称出质量为d的物品.求所用的砝码总数量最小(x+y最小),并且总质量最小(ax+by最小). s.扩展欧几里得求解不定方程. 设ax+by=d. 题意说不定方程一定有 ...
- Android Studio四大组件之Service
Service在Android运行在后台,它没有可视化界面,只是默默运行在后台.我们以一个后台定时器的例子清晰的说明Service的运行流程. 一.创建Service类 项目右键->New-&g ...
- Linux命令排查线上问题常用的几个
排查线上问题常用的几个Linux命令 https://www.cnblogs.com/cjsblog/p/9562380.html top 相当于Windows任务管理器 可以看到,输出结果分两部分, ...
- 怎么解决Failed to load the JNI shared library
怎么解决Failed to load the JNIshared library 解决Failed to load the JNIshared library唯一的方法就是重新安装eclipse, ...
- vue 基本知识整理
1 每个Vue.js应用都是通过构造函数Vue创建一个Vue的根实例 2 可以扩展Vue构造器,从而使用预定义选项创建可复用的组件构造器 所有的Vue.js组件其实都是被扩展的Vue实例 每一个VUE ...
- 【旧文章搬运】PspCidTable攻与防
原文发表于百度空间,2009-03-29========================================================================== PspCi ...
- 洛谷 - P1198 - 最大数 - 线段树
https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
- Codeforces Round #408 (Div. 2) D. Police Stations(最小生成树+构造)
传送门 题意 n个点有n-1条边相连,其中有k个特殊点,要求: 删去尽可能多的边使得剩余的点距特殊点的距离不超过d 输出删去的边数和index 分析 比赛的时候想不清楚,看了别人的题解 一道将1个联通 ...