//-------------------
//searchGeometries
function searchGeometries2(parentNode, callbackFunc) {
SGWorld.ProjectTree.EnableRedraw(0);
searchGeometriesLeaf2(parentNode, callbackFunc);
SGWorld.ProjectTree.EnableRedraw(1);
}
//-------------------
// searchGeometries
function searchGeometriesLeaf2(parentNode, callbackFunc) { if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer
{
var layer = SGWorld.ProjectTree.GetLayer(parentNode);
var featureGroups = layer.FeatureGroups;
for (var i = 0; i < featureGroups.Count; i++) // Traverse all sub-layers
{
var featureGroup = featureGroups.Item(i);
var altitudeType = AltitudeMethodToAltitudeType(featureGroup.GetProperty("Altitude Method"));
var features = featureGroup.Features;
for (var j = 0; j < features.Count; j++) {
var ret;
if (featureGroup.GeometryType != 0)
ret = callbackFunc(features.Item(j).Geometry, featureGroup.GeometryType, altitudeType);
else {
if (features.Item(j).Geometry.GeometryType == 0) // Point
{
var position = SGWorld.Creator.CreatePosition(features.Item(j).Geometry.X, features.Item(j).Geometry.Y, features.Item(j).Geometry.Z);
ret = callbackFunc(position, featureGroup.GeometryType, altitudeType);
}
}
if (!ret)
return;
}
}
}
else {
var node = SGWorld.ProjectTree.GetNextItem(parentNode, 11);
while (node != "") {
if (SGWorld.ProjectTree.IsGroup(node) || SGWorld.ProjectTree.IsLayer(node))
searchGeometriesLeaf2(node, callbackFunc);
else {
var Object = SGWorld.Creator.GetObject(node);
if (Object != null) {
var altitudeType = Object.Position.AltitudeType;
var ret;
if (Object.ObjectType == 1 || Object.ObjectType == 2)
ret = callbackFunc(Object.Geometry, Object.ObjectType, altitudeType);
else
ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType); if (!ret)
return;
}
} node = SGWorld.ProjectTree.GetNextItem(node, 13);
}
}
}

SkylineGlobe6.5遍历信息树节点方法的更多相关文章

  1. 遍历树节点(多层)的方法(java)

    前序遍历,后序遍历,广度遍历,深度遍历,遍历一级节点.以及按钮如何响应点击事件. import java.awt.*; import java.awt.event.*; import java.uti ...

  2. 先序遍历DOM树的5种方法

    DOM树由文档中的所有节点(元素节点.文本节点.注释节点等)所构成的一个树结构,DOM树的解析和构建是浏览器要实现的关键功能.既然DOM树是一个树结构,那么我们就可以使用遍历树结构的相关方法来对DOM ...

  3. JPA,EclipseLink 缓存机制学习(一) 树节点搜索问题引发的思考

    最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...

  4. BOM的节点方法和属性

    一.HTML DOM >>>>>>>>>>>>>>>>>>>>具体可以参考W3S ...

  5. 【zTree】zTree展开树节点

    今天在做zTree树的时候想着将第一级tree展开,于是利用下面方法: /** * 展开树节点的第一层 */ function openFirstTreenode(){ // 获取树对象 var tr ...

  6. JPA,EclipseLink 缓存机制学习——树节点搜索问题引发的思考

    最近在项目在使用JPA+EclipseLink 的方式进行开发,其中EclipseLink使用版本为2.5.1.遇到一些缓存方面使用不当造成的问题,从本篇开始逐步学习EclipseLink的缓存机制. ...

  7. jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别

    http://www.poluoluo.com/jzxy/201312/253059.html 在这个sprint中,因为要写前端UI,所以用到了jQuery,但是jQuery在向上遍历DOM树的AP ...

  8. php 两种获取分类树的方法

    php 两种获取分类树的方法 1. /** * 获取分类树 * @param array $array 数据源 * @param int $pid 父级ID * @param int $level 分 ...

  9. 拷贝和遍历DOM树

    一.浅拷贝: 拷贝就是复制,就相当于把一个对象中的所有内容,复制一份给另一个对象,直接复制, 或者说,就是把一个对象的地址给了另外一个对象,他们的指向相同,两个对象之间有相同的属性或者方法,都可以使用 ...

随机推荐

  1. python之锁, 队列

    进程的其他方法 进程id,进程名字,查看进程是否活着is_alive()  terminate()发送结束进程的信号 import time import os from multiprocessin ...

  2. 定时器setTimeout实现函数节流

    问题描述 文字输入查询的keyup或oninput事件,实现实时查询功能. 在用户输入过程中,用户可能只想需要 '小' 字的查询结果,但是以上两个事件会触发'x'.'i'.'a'.'o'.'小',一共 ...

  3. MySQL 性能优化--优化数据库结构之优化数据类型

    MySQL性能优化--优化数据库结构之优化数据类型   By:授客  QQ:1033553122   优化数字数据(Numeric Data) l   对于唯一ID或其它可用字符串或数字表示的值,选择 ...

  4. Flutter 布局(九)- Flow、Table、Wrap详解

    本文主要介绍Flutter布局中的Flow.Table.Wrap控件,详细介绍了其布局行为以及使用场景,并对源码进行了分析. 1. Flow A widget that implements the ...

  5. 平板电脑安装Ubuntu教程

    平板电脑安装Ubuntu教程-以V975w为例,Z3735系列CPU通用 最近尝试在昂达V975w平板电脑和intel stick中安装ubuntu,经过分析,发现存在一个非常大的坑.但因为这个坑,此 ...

  6. Python机器学习入门

    # NumPy Python科学计算基础包 import numpy as np # 导入numpy库并起别名为npnumpy_array = np.array([[1,3,5],[2,4,6]])p ...

  7. 无需软件windows如何加密文件夹

    在百部百科上看到,放在博客中以便查看. 1.首先打开记事本,当然如果你的电脑里装有类似notepad++的文本编辑软件的也可以,但是不能用word.用这类软件好处是代码高亮,看上去舒服,减少错误率. ...

  8. 路由交换01-----ICMP协议

    路由交换协议------ICMP ICMP协议 ICMP (InternetControl Message Protocol)协议是TCP/IP协议簇的核心协议之一,用来在网络设备之间传递各种差错和控 ...

  9. Java学习笔记--JDK动态代理

    1.JDK动态代理     JDK1.3之后,Java提供了动态代理的技术,允许开发者在运行期创建接口的代理实例.JDK的动态代理主要涉及到java.lang.reflect包中的两个类:Proxy和 ...

  10. 寒假训练 A - A Knight's Journey 搜索

    Background The knight is getting bored of seeing the same black and white squares again and again an ...