• SkylineGlobe6.5遍历信息树节点方法


    //-------------------
    //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);
            }
        }
    }
  • 相关阅读:
    Activiti6-IdentityService(学习笔记)
    Activiti6-TaskService(学习笔记)重要
    选定用户与用户组启动流程(学习笔记)
    Activiti6作业执行器Job Executor配置(学习笔记)
    命令模式与责任链模式以及命令拦截器的配置(学习笔记)
    Activiti6事件及监听器配置(学习笔记)
    基于MySQL的Activiti6引擎创建
    abowman
    wpf 遍历listview 时 传入指定类型 得到指定类型控件info
    wpf listview 行变色
  • 原文地址:https://www.cnblogs.com/yitianhe/p/3334734.html
Copyright © 2020-2023  润新知