伟景行 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一下自己就
随机推荐
- phpstudy开启时mysql不开启时红色灯
1.本身为开启 2.mysql服务没有启动
- 使用lsyncd配置数据库备份多异地同步
lsyncd配置文件 settings { logfile = "/var/log/lsyncd.log", --日志路径 status = "/var/log/lsyn ...
- 杂项:ASP.NET Core
ylbtech-杂项:ASP.NET Core 1.返回顶部 1. ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序.使用 ASP.NET ...
- View Controller Programming Guide for iOS---(六)---Responding to Display-Related Notifications
Responding to Display-Related Notifications 响应跟显示相关的通知 When the visibility of a view controller’s vi ...
- windows下patch
经常在网上看到有人发布patch文件来更新他们的开源代码,例如cegui.ogre等都使用这种形式来修bug或者增加一些小功能.但是,我们下载到的patch文件,貌似是linux/unix的diff工 ...
- hibernate的基础学习--一对一关联
一对一关系以丈夫和妻子模型 配置文件 妻子配置文件: <?xml version="1.0" encoding="utf-8" ?> <!DO ...
- c++ 头文件 及 sort 和 vector简单介绍
c++ sort :http://www.16kan.com/post/997260.html http://wenku.baidu.com/view/e064166daf1ffc4ffe47ac6 ...
- 基础总结篇之二:Activity的四种launchMode (转载)
转自:http://blog.csdn.net/liuhe688/article/details/6754323 合抱之木,生於毫末:九層之台,起於累土:千里之行,始於足下.<老子> 今天 ...
- poj 3648 Wedding【2-SAT+tarjan+拓扑】
看错题*n,注意是输出新娘这边的-- 按2-SAT规则连互斥的边,然后注意连一条(1,1+n)表示新娘必选 然后输出color[belong[i]]==color[belong[1+n(新娘)]]的点 ...
- loj#2540. 「PKUWC2018」随机算法
传送门 完了pkuwc咋全是dp怕是要爆零了-- 设\(f(S)\)表示\(S\)的排列数,\(S\)为不能再选的点集(也就是选到独立集里的点和与他们相邻的点),\(mx(S)\)表示\(S\)状态下 ...