伟景行 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一下自己就
随机推荐
- jQuery常用插件大全(9)ResponsiveSlides插件
ResponsiveSlides.js是一个展示同一容器内图片的轻量级响应式jQuery幻灯片插件(tiny responsive slideshow jQuery plugin).它支持包括IE6在 ...
- Struts2访问Servlet API的几种方式
struts2提供了三种方式访问servlet API:大致分为两类 1. ActionContext: public static ActionContext getContext() :获得当前 ...
- H5页面解决左右滑动问题
在head里面加入. <meta name="viewport" content="width=device-width, initial-scale=1.0, u ...
- python中为什么需要使用“if __name__ == '__main__'”语句
首先用最简洁的语言来说明一下 if __name__ == '__main__': 的作用:防止在被其他文件导入时显示多余的程序主体部分. 先举个例子,如果不用 if __name__ == '__m ...
- Python3中使用PyMongo的方法详解
前言 本文主要给大家介绍的是关于在Python3使用PyMongo的方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细介绍: MongoDB存储 在这里我们来看一下Python3下Mongo ...
- 【前端】CentOS 7 系列教程之五: 安装最新版 nginx 并转发 node 服务
转载请注明出处:http://www.cnblogs.com/shamoyuu/p/linux_5.html 进入/usr/local目录 cd /usr/local 下载最新版的ngxin压缩包 w ...
- MYSQL数据库学习----MYSQL函数
MYSQL函数分为几种 数学函数 字符串函数 日期和时间函数 条件判断函数 系统信息函数 加密函数 格式化函数 一:数学函数 主要使用的几个数学函数 1 ABS()----绝对值函数 eg. SELE ...
- 【转】 JUnit单元测试--IntelliJ IDEA
原文地址:https://blog.csdn.net/weixin_38104426/article/details/74388375 使用idea IDE 进行单元测试,首先需要安装JUnit 插件 ...
- 实现文字下划线 ---模拟text-decoration
css 的text-decoration可以实现文字下方的下划线,但是距离文字比较近,不是很好看,我们可以使用border-bottom来模拟这个效果 (inline元素虽然不可以设置margin-t ...
- (二十五)后台开发-分类信息的curd -展示所有实现
案例1-分类信息的curd 步骤分析: 左边的dtree: 1.导入dtree.js 2.导入dtree.css 3.创建一个div 添加样式 class="dtree" 4.在d ...