千家信息网

TE二次开发中如何遍历信息树

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"TE二次开发中如何遍历信息树",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"TE二次开发中如何遍历信息树"这篇文章吧。TE自带的信
千家信息网最后更新 2026年11月02日TE二次开发中如何遍历信息树

这篇文章主要为大家展示了"TE二次开发中如何遍历信息树",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"TE二次开发中如何遍历信息树"这篇文章吧。

TE自带的信息树控件,包含了fly工程的位置、演示、图层和其他单个元素,在信息树中,是按照树结构进行摆放的,要想在开发中,获取树中的所有对象,或者查找树中的某一个对象,需要使用开发接口,对信息树进行遍历,在程序中,对树结构遍历少不了要用递归算法,在TE的信息树遍历中,这也是需要的。

下边根据一个js的代码,简单说一下,在开发中如何遍历信息树:

//首先要指定遍历的根节点,这个可以是整个工程的根节点,也可以是信息树中

//某个文件夹的id,在js可以使用回调函数,执行外部的一些操作

function searchGeometries2(parentNode, callbackFunc) {

//EnableRedraw是控制信息树中内容发生变化时,是否实施刷新

SGWorld.ProjectTree.EnableRedraw(0);

searchGeometriesLeaf2(parentNode, callbackFunc);

SGWorld.ProjectTree.EnableRedraw(1);

}

function searchGeometriesLeaf2(parentNode, callbackFunc) {

//此例子是搜索到图层,判断图层中的内容

if (SGWorld.ProjectTree.IsLayer(parentNode)) // Layer

{

//关于图层中的feature操作

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 {

//根据参数,获得下一个信息树的节点,后参数见api文档

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, Object.Position);

else

ret = callbackFunc(Object.Position, Object.ObjectType, altitudeType, Object.Position);

if (!ret)

return;

}

}

//根据参数,获得下一个信息树的节点 ,后参数见api文档

node = SGWorld.ProjectTree.GetNextItem(node, 13);

}

}

}

以上是"TE二次开发中如何遍历信息树"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

信息 开发 内容 参数 节点 对象 文件 文件夹 篇文章 单个 工程 文档 结构 得下 递归 学习 帮助 少不了 代码 位置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技活动banner 互联网的科技 互联网科技公司税收优惠 新华互联网科技学院 互联网 的科技创新 互联网 新科技 美国互联网前沿科技 海南科技产业互联网平台 科技赋能互联网健康 成都玖崟互联网科技有限公司乐商圈怎么样 济南华为互联网科技产业总部基地 互联网科技革命什么开始 开一家科技互联网公司需要多少钱 互联网行业科技股 沐思想互联网科技有限公司 元气玛特互联网科技公司是外包吗 深圳无忧互联网科技 互联网科技新闻 版纳互联网科技选哪家 银川新华互联网科技学校是国营吗 耶加雪菲 互联网佳科技有限公司 互联网科技工作委员会毛军 互联网科技集团 顺网科技2021年互联网排名 团飞科技与伯堂互联网服务平台 链环科技传统企业怎么转型互联网 北京市互联网新科技 上海创道互联网络科技有限公司 青岛易易互联网科技
0