伟景行 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一下自己就
随机推荐
- MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)
知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...
- async-await原理解析
在用async包裹的方法体中,可以使用await关键字以同步的方式编写异步调用的代码.那么它的内部实现原理是什么样的呢?我们是否可以自定义await以实现定制性的需求呢?先来看一个简单的例子: cla ...
- javacv开发详解之1:调用本机摄像头视频(建议使用javaCV最新版本)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- VC将同一份代码同时编译为Dll和Exe的方法
开发中经常遇到这样的情况,需要开发一个某某功能的接口Dll,但是Dll不能直接调试,你至少需要一个Loader 但是Loader和Dll本身不在同一个工程里,虽然都在本机的话并不影响源码级调试,但是总 ...
- pdf解锁和脱水印
解锁工具下载http://pan.baidu.com/s/1o8FcKFC 使用方法: 第一步: 打开加密pdf文件保存即可 参考:http://www.epinv.com/post/157.html
- Oracle UNDO Tablespace size & Table Size
Table Space Query select SEGMENT_NAME,bytes/1024/1024,a.* from dba_segments a UNDO Table Space Size ...
- k-means 算法介绍
概述 聚类属于机器学习的无监督学习,在数据中发现数据对象之间的关系,将数据进行分组,组内的相似性越大,组间的差别越大,则聚类效果越好.它跟分类的最主要区别就在于有没有“标签”.比如说我们有一组数据,数 ...
- poj3669【bfs】
题意: 有个**要看流星雨,可是流星雨会砸死他的... 给出n个流星雨下落的坐标,时间,如果那个**在下落坐标或是上下左右就会gg,问你他最短跑到流星雨打不到的地方的时间. 思路: ①:预处理出一个矩 ...
- poj3176【简单DP】
其实就是简单递推对吧~ 贴一发记忆化搜索的- #include <iostream> #include <stdio.h> #include <string.h> ...
- bzoj 3109: [cqoi2013]新数独【dfs】
按3x3的小块dfs,填数的时候直接满足所有条件即可 #include<iostream> #include<cstdio> #include<cstring> u ...