private ILayerItem GetLayerItemLayout(ILayerObjectContainer layerObjContainer)
        {
            ILayerItemGroup g = new LayerItemGroup("数据层", "数据层");

            (g as LayerItemGroup).Tag = layerObjContainer;
            if (layerObjContainer.LayerObjects != null && layerObjContainer.LayerObjects.Count != 0)
            {
                GetLayerItemLayouts(g, layerObjContainer);
            }
            return(g);
        }
 //调整二级及以上节点顺序
 public void AdjustOrder(int insertIndex, ILayerItem item, ILayerItem parentItem)
 {
     if (parentItem == null)
     {
         return;
     }
     (parentItem as ILayerItemGroup).Items.Remove(item);
     (parentItem as ILayerItemGroup).Items.Insert(insertIndex, item);
     foreach (IElement ele in _viewer.LayoutHost.LayoutRuntime.Layout.Elements)
     {
         if (ele is ILayerObjectContainer)
         {
             ILayerObjectContainer container = ele as ILayerObjectContainer;
             //ILayerObjectBase insertObj = item.Tag as ILayerObjectBase;
             foreach (ILayerObjectBase obj in container.LayerObjects)
             {
                 if (obj is ILayerObject)
                 {
                     ILayerObject layerObj = obj as ILayerObject;
                     if (layerObj.Tag.Equals(item.Tag))
                     {
                         container.LayerObjects.Remove(layerObj);
                         container.LayerObjects.Insert(insertIndex, layerObj);
                         RefreshViewer();
                         return;
                     }
                 }
                 if (obj is ILayerObjecGroup)
                 {
                     ILayerObjecGroup layerGrp = obj as ILayerObjecGroup;
                     foreach (ILayerObjectBase it in layerGrp.Children)
                     {
                         if ((it as ILayerObject).Tag.Equals(item.Tag))
                         {
                             layerGrp.Children.Remove(it);
                             layerGrp.Children.Insert(insertIndex, it);
                             RefreshViewer();
                             return;
                         }
                     }
                 }
             }
         }
         if (ele.Equals(parentItem) && ele is IElementGroup)
         {
             IElementGroup group = ele as IElementGroup;
             group.Elements.Remove(item.Tag as IElement);
             group.Elements.Insert(insertIndex, item.Tag as IElement);
             RefreshViewer();
             return;
         }
     }
 }
 private void GetLayerItemLayouts(ILayerItemGroup g, ILayerObjectContainer layerObjContainer)
 {
     ILayerObjectBase[] layers = layerObjContainer.LayerObjects.ToArray();
     foreach (ILayerObjectBase obj in layers)
     {
         if (obj is ILayerObject)
         {
             ILayerObject layerObj = obj as ILayerObject;
             ILayerItem   it       = new LayerObjectItem(layerObj);
             g.Items.Add(it);
         }
         else
         {
             LayerItemGroup group = new LayerItemGroup(obj.Text ?? string.Empty, obj.Text ?? string.Empty);
             IDataFrame     df    = layerObjContainer as IDataFrame;
             if (df != null)
             {
                 IDataFrameDataProvider prd = df.Provider as IDataFrameDataProvider;
                 if (prd != null)
                 {
                     ICanvas canvas = prd.Canvas;
                     if (canvas != null)
                     {
                         GeoDo.RSS.Core.DrawEngine.ILayerContainer lc = canvas.LayerContainer as GeoDo.RSS.Core.DrawEngine.ILayerContainer;
                         if (lc != null)
                         {
                             IVectorHostLayer hostLayer = canvas.LayerContainer.VectorHost;
                             if (hostLayer != null)
                             {
                                 group.Tag = hostLayer.Map;
                             }
                         }
                     }
                 }
             }
             g.Items.Add(group);
             GetLayerItemLayouts(group, (obj as ILayerObjecGroup).Children.ToArray());
         }
     }
 }