|
|
|
|
using ESRI.ArcGIS.Carto;
|
|
|
|
|
using ESRI.ArcGIS.Controls;
|
|
|
|
|
using ESRI.ArcGIS.Geometry;
|
|
|
|
|
using KGIS.Framework.Maps;
|
|
|
|
|
using KGIS.Framework.Platform;
|
|
|
|
|
using KGIS.Framework.Utils;
|
|
|
|
|
using Kingo.Plugin.MapView.Interface;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace Kingo.Plugin.MapView.Commands
|
|
|
|
|
{
|
|
|
|
|
public class BaseSnapCommand : ICheckBarItem
|
|
|
|
|
{
|
|
|
|
|
private IHookHelper m_hookHelper;
|
|
|
|
|
private EngineEditorClass m_editor = new EngineEditorClass();
|
|
|
|
|
private IEngineSnapEnvironment snapEnv = null;
|
|
|
|
|
private bool IsChecked = false;
|
|
|
|
|
List<IFeatureLayer> layers = new List<IFeatureLayer>();
|
|
|
|
|
public virtual ESRI.ArcGIS.Geometry.esriGeometryHitPartType HitPartType { get { return ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartNone; } }
|
|
|
|
|
|
|
|
|
|
public bool Checked
|
|
|
|
|
{
|
|
|
|
|
get
|
|
|
|
|
{
|
|
|
|
|
if (snapEnv.SnapAgentCount != 0)
|
|
|
|
|
{
|
|
|
|
|
//List<IFeatureLayer> layers = GetVisibleLayer(m_hookHelper.FocusMap);
|
|
|
|
|
//layers = FrmSnapSetting.checkedLayers;
|
|
|
|
|
//若未进行捕捉设置,则获取当前显示图层
|
|
|
|
|
if (layers.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
layers = MapsManager.Instance.MapService.GetAllVisibleLayerInMap<IFeatureLayer>();
|
|
|
|
|
}
|
|
|
|
|
if (layers.Count != snapEnv.SnapAgentCount)
|
|
|
|
|
{
|
|
|
|
|
ESRI.ArcGIS.Geometry.esriGeometryHitPartType partType = (snapEnv.get_SnapAgent(0) as IEngineFeatureSnapAgent).HitType;
|
|
|
|
|
snapEnv.ClearSnapAgents();
|
|
|
|
|
foreach (IFeatureLayer item in layers)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = new EngineFeatureSnap();
|
|
|
|
|
featureSnapAgent.FeatureClass = item.FeatureClass;
|
|
|
|
|
featureSnapAgent.HitType = partType;
|
|
|
|
|
snapEnv.AddSnapAgent(featureSnapAgent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return IsChecked;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual void OnCreate(object hook)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
snapEnv = (IEngineSnapEnvironment)m_editor;
|
|
|
|
|
if (hook == null)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (m_hookHelper == null)
|
|
|
|
|
{
|
|
|
|
|
m_hookHelper = new HookHelper();
|
|
|
|
|
m_hookHelper.Hook = hook;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (m_hookHelper.ActiveView == null)
|
|
|
|
|
{
|
|
|
|
|
m_hookHelper = null;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
layers = null;
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug("加载 BaseSnap 类时失败,异常原因: " + ex + " ; ");
|
|
|
|
|
m_hookHelper = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private IMapService _MapService;
|
|
|
|
|
|
|
|
|
|
public virtual void OnClick()
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
snapEnv.SnapTolerance = 15;
|
|
|
|
|
this.IsChecked = !this.IsChecked;
|
|
|
|
|
if (this.IsChecked)
|
|
|
|
|
{
|
|
|
|
|
layers = MapsManager.Instance.MapService.GetAllVisibleLayerInMap<IFeatureLayer>();
|
|
|
|
|
//layers = FrmSnapSetting.checkedLayers;
|
|
|
|
|
if (layers.Count <= 0)
|
|
|
|
|
{
|
|
|
|
|
layers = MapsManager.Instance.MapService.GetAllVisibleLayerInMap<IFeatureLayer>();
|
|
|
|
|
}
|
|
|
|
|
if (snapEnv.SnapAgentCount != layers.Count)
|
|
|
|
|
{
|
|
|
|
|
snapEnv.ClearSnapAgents();
|
|
|
|
|
foreach (IFeatureLayer item in layers)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = new EngineFeatureSnap();
|
|
|
|
|
featureSnapAgent.FeatureClass = item.FeatureClass;
|
|
|
|
|
featureSnapAgent.HitType = HitPartType;
|
|
|
|
|
snapEnv.AddSnapAgent(featureSnapAgent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < snapEnv.SnapAgentCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = snapEnv.get_SnapAgent(i) as IEngineFeatureSnapAgent;
|
|
|
|
|
if (featureSnapAgent != null && (featureSnapAgent.HitType & HitPartType) != HitPartType)
|
|
|
|
|
{
|
|
|
|
|
featureSnapAgent.HitType = featureSnapAgent.HitType | HitPartType;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (snapEnv.SnapAgentCount > 0)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = snapEnv.get_SnapAgent(0) as IEngineFeatureSnapAgent;
|
|
|
|
|
if (featureSnapAgent != null && (featureSnapAgent.HitType & HitPartType) == HitPartType)
|
|
|
|
|
{
|
|
|
|
|
if ((featureSnapAgent.HitType ^ HitPartType) == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartNone)
|
|
|
|
|
{
|
|
|
|
|
snapEnv.ClearSnapAgents();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < snapEnv.SnapAgentCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent snapAgent = snapEnv.get_SnapAgent(i) as IEngineFeatureSnapAgent;
|
|
|
|
|
if (snapAgent != null && (snapAgent.HitType & HitPartType) == HitPartType)
|
|
|
|
|
{
|
|
|
|
|
snapAgent.HitType = snapAgent.HitType ^ HitPartType;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
LogAPI.Debug(ex);
|
|
|
|
|
}
|
|
|
|
|
finally
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//public virtual void OnClick()
|
|
|
|
|
//{
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// _MapService = Platform.Instance.MapsService;
|
|
|
|
|
|
|
|
|
|
// IPoint IPointNow = m_editor.LastPoint;
|
|
|
|
|
|
|
|
|
|
// //double dX = IPointNow.X;
|
|
|
|
|
// //double dY = IPointNow.Y;
|
|
|
|
|
|
|
|
|
|
// int iMark = 0;
|
|
|
|
|
|
|
|
|
|
// if (iMark == 1)
|
|
|
|
|
// {
|
|
|
|
|
// OnClickReal();
|
|
|
|
|
// return;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// snapEnv.SnapTolerance = 15;
|
|
|
|
|
// this.IsChecked = !this.IsChecked;
|
|
|
|
|
// if (this.IsChecked)//点击了
|
|
|
|
|
// {
|
|
|
|
|
// layers = KGIS.Framework.AE.IFeatureLayerAPI.GetLayers(m_hookHelper.FocusMap, ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryNull, true);
|
|
|
|
|
// //if (snapEnv.SnapAgentCount != layers.Count)
|
|
|
|
|
// //{
|
|
|
|
|
// int iCTemp1 = snapEnv.SnapAgentCount;
|
|
|
|
|
// snapEnv.ClearSnapAgents();
|
|
|
|
|
// int iCTemp2 = snapEnv.SnapAgentCount;
|
|
|
|
|
// foreach (IFeatureLayer item in layers)
|
|
|
|
|
// {
|
|
|
|
|
// //public static IPoint getSnapPoint(AxMapControl mainMap, IPoint QueryPoint, IFeatureLayer pFeatureLayer, string snapStyle)
|
|
|
|
|
|
|
|
|
|
// if(IPointNow!=null)
|
|
|
|
|
// {
|
|
|
|
|
// var v1 = (m_hookHelper.Hook as AxMapControl);
|
|
|
|
|
// var v2 = (m_hookHelper as AxMapControl);
|
|
|
|
|
// var v3 = (_MapService.getAxMapControl() as AxMapControl);
|
|
|
|
|
|
|
|
|
|
// IPoint ipO = GetSnapPointBZ.getSnapPoint(v3, IPointNow, item, "线中点");
|
|
|
|
|
// snapEnv.SnapPoint(ipO);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// IEngineFeatureSnapAgent featureSnapAgent = new EngineFeatureSnap();
|
|
|
|
|
// featureSnapAgent.FeatureClass = item.FeatureClass;
|
|
|
|
|
// featureSnapAgent.HitType = HitPartType;
|
|
|
|
|
// snapEnv.AddSnapAgent(featureSnapAgent);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
// m_hookHelper.ActiveView.Refresh();//刷新图层
|
|
|
|
|
|
|
|
|
|
// //}
|
|
|
|
|
// //else
|
|
|
|
|
// //{
|
|
|
|
|
// // for (int i = 0; i < snapEnv.SnapAgentCount; i++)
|
|
|
|
|
// // {
|
|
|
|
|
// // IEngineFeatureSnapAgent featureSnapAgent = snapEnv.get_SnapAgent(i) as IEngineFeatureSnapAgent;
|
|
|
|
|
// // if (featureSnapAgent != null)
|
|
|
|
|
// // {
|
|
|
|
|
// // featureSnapAgent.HitType = ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartMidpoint;
|
|
|
|
|
// // }
|
|
|
|
|
// // }
|
|
|
|
|
// //}
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// if (snapEnv.SnapAgentCount > 0)
|
|
|
|
|
// {
|
|
|
|
|
// snapEnv.ClearSnapAgents();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// LogAPI.Debug(ex);
|
|
|
|
|
// }
|
|
|
|
|
// finally
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
public virtual void OnClickReal()
|
|
|
|
|
{
|
|
|
|
|
snapEnv.SnapTolerance = 150;
|
|
|
|
|
this.IsChecked = !this.IsChecked;
|
|
|
|
|
if (this.IsChecked)//点击了
|
|
|
|
|
{
|
|
|
|
|
layers = MapsManager.Instance.MapService.GetAllVisibleLayerInMap<IFeatureLayer>();
|
|
|
|
|
if (snapEnv.SnapAgentCount != layers.Count)
|
|
|
|
|
{
|
|
|
|
|
snapEnv.ClearSnapAgents();
|
|
|
|
|
foreach (IFeatureLayer item in layers)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = new EngineFeatureSnap();
|
|
|
|
|
featureSnapAgent.FeatureClass = item.FeatureClass;
|
|
|
|
|
featureSnapAgent.HitType = HitPartType;
|
|
|
|
|
snapEnv.AddSnapAgent(featureSnapAgent);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < snapEnv.SnapAgentCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = snapEnv.get_SnapAgent(i) as IEngineFeatureSnapAgent;
|
|
|
|
|
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType 为 " + featureSnapAgent.HitType + " ; ");
|
|
|
|
|
//LogAPI.Debug("HitPartType 为 " + HitPartType + " ; ");
|
|
|
|
|
|
|
|
|
|
//var vTemp11 = featureSnapAgent.HitType & HitPartType;
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType & HitPartType 为 " + vTemp11 + " ; ");
|
|
|
|
|
|
|
|
|
|
//var vTemp12 = featureSnapAgent.HitType | HitPartType;
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType | HitPartType 为 " + vTemp12 + " ; ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//bool b11 = (featureSnapAgent.HitType & HitPartType) != HitPartType;
|
|
|
|
|
//LogAPI.Debug(" (featureSnapAgent.HitType & HitPartType) != HitPartType 为 " + b11 + " ; ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (featureSnapAgent != null && (featureSnapAgent.HitType & HitPartType) != HitPartType)
|
|
|
|
|
{
|
|
|
|
|
featureSnapAgent.HitType = featureSnapAgent.HitType | HitPartType;
|
|
|
|
|
|
|
|
|
|
//if(featureSnapAgent.HitType== ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartBoundary)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (featureSnapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartVertex)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (featureSnapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartEndpoint)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (featureSnapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartMidpoint)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else//未点击
|
|
|
|
|
{
|
|
|
|
|
if (snapEnv.SnapAgentCount > 0)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent featureSnapAgent = snapEnv.get_SnapAgent(0) as IEngineFeatureSnapAgent;
|
|
|
|
|
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType 为 " + featureSnapAgent.HitType + " ; ");
|
|
|
|
|
//LogAPI.Debug("HitPartType 为 " + HitPartType + " ; ");
|
|
|
|
|
|
|
|
|
|
//var vTemp21 = featureSnapAgent.HitType ^ HitPartType;
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType ^ HitPartType 为 " + vTemp21 + " ; ");
|
|
|
|
|
|
|
|
|
|
//var b21 = (featureSnapAgent.HitType & HitPartType) == HitPartType;
|
|
|
|
|
//LogAPI.Debug(" (featureSnapAgent.HitType & HitPartType) == HitPartType 为 " + b21 + " ; ");
|
|
|
|
|
|
|
|
|
|
if (featureSnapAgent != null && (featureSnapAgent.HitType & HitPartType) == HitPartType)
|
|
|
|
|
{
|
|
|
|
|
//var vTemp22 = featureSnapAgent.HitType ^ HitPartType;
|
|
|
|
|
//LogAPI.Debug("featureSnapAgent.HitType ^ HitPartType 为 " + vTemp22 + " ; ");
|
|
|
|
|
|
|
|
|
|
if ((featureSnapAgent.HitType ^ HitPartType) == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartNone)
|
|
|
|
|
{
|
|
|
|
|
snapEnv.ClearSnapAgents();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
for (int i = 0; i < snapEnv.SnapAgentCount; i++)
|
|
|
|
|
{
|
|
|
|
|
IEngineFeatureSnapAgent snapAgent = snapEnv.get_SnapAgent(i) as IEngineFeatureSnapAgent;
|
|
|
|
|
|
|
|
|
|
//var vTemp23 = snapAgent.HitType & HitPartType;
|
|
|
|
|
//LogAPI.Debug("snapAgent.HitType & HitPartType 为 " + vTemp23 + " ; ");
|
|
|
|
|
|
|
|
|
|
//var b22 = (snapAgent.HitType & HitPartType) == HitPartType;
|
|
|
|
|
//LogAPI.Debug(" (snapAgent.HitType & HitPartType) == HitPartType 为 " + b22 + " ; ");
|
|
|
|
|
|
|
|
|
|
if (snapAgent != null && (snapAgent.HitType & HitPartType) == HitPartType)
|
|
|
|
|
{
|
|
|
|
|
//var vTemp24 = snapAgent.HitType ^ HitPartType;
|
|
|
|
|
//LogAPI.Debug("snapAgent.HitType ^ HitPartType 为 " + vTemp24 + " ; ");
|
|
|
|
|
|
|
|
|
|
snapAgent.HitType = snapAgent.HitType ^ HitPartType;
|
|
|
|
|
|
|
|
|
|
//if (snapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartBoundary)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (snapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartVertex)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (snapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartEndpoint)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//if (snapAgent.HitType == ESRI.ArcGIS.Geometry.esriGeometryHitPartType.esriGeometryPartMidpoint)
|
|
|
|
|
//{
|
|
|
|
|
// int i55 = 1;
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int Bitmap
|
|
|
|
|
{
|
|
|
|
|
get { return 0; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Caption
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Category
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public bool Enabled
|
|
|
|
|
{
|
|
|
|
|
get { return m_editor.EditState == esriEngineEditState.esriEngineStateEditing; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int HelpContextID
|
|
|
|
|
{
|
|
|
|
|
get { return 0; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string HelpFile
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Message
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public string Name
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual string Tooltip
|
|
|
|
|
{
|
|
|
|
|
get { return ""; }
|
|
|
|
|
}
|
|
|
|
|
#region 获取所有可见图层
|
|
|
|
|
///// <summary>
|
|
|
|
|
///// 获取当前地图中可见的矢量图层
|
|
|
|
|
///// </summary>
|
|
|
|
|
///// <param name="pMap"></param>
|
|
|
|
|
///// <returns></returns>
|
|
|
|
|
//private List<IFeatureLayer> GetVisibleLayer(IMap pMap)
|
|
|
|
|
//{
|
|
|
|
|
// List<IFeatureLayer> result = new List<IFeatureLayer>();
|
|
|
|
|
// if (pMap == null)
|
|
|
|
|
// return result;
|
|
|
|
|
// try
|
|
|
|
|
// {
|
|
|
|
|
// for (int i = 0; i < pMap.LayerCount; i++)
|
|
|
|
|
// {
|
|
|
|
|
// ILayer layer = pMap.get_Layer(i);
|
|
|
|
|
// if (layer is IFeatureLayer)
|
|
|
|
|
// {
|
|
|
|
|
// if ((layer as IFeatureLayer).Visible)
|
|
|
|
|
// {
|
|
|
|
|
// result.Add(layer as IFeatureLayer);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// else if (layer is ICompositeLayer)
|
|
|
|
|
// {
|
|
|
|
|
// if ((layer as IGroupLayer).Visible)
|
|
|
|
|
// {
|
|
|
|
|
// result.AddRange(GetVisibleLayerByGroupLayer(layer as ICompositeLayer));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// catch (Exception ex)
|
|
|
|
|
// {
|
|
|
|
|
// LogAPI.Debug("获取当前地图中可见的矢量图层时失败,异常原因:" + ex + " ; ");
|
|
|
|
|
// }
|
|
|
|
|
// return result;
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//private List<IFeatureLayer> GetVisibleLayerByGroupLayer(ICompositeLayer pGroupLayer)
|
|
|
|
|
//{
|
|
|
|
|
// List<IFeatureLayer> result = new List<IFeatureLayer>();
|
|
|
|
|
// if (pGroupLayer != null && pGroupLayer.Count > 0)
|
|
|
|
|
// {
|
|
|
|
|
// for (int i = 0; i < pGroupLayer.Count; i++)
|
|
|
|
|
// {
|
|
|
|
|
// ILayer layer = pGroupLayer.get_Layer(i);
|
|
|
|
|
// if (layer is IAnnotationLayer)
|
|
|
|
|
// {
|
|
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
// else if (layer is IGroupLayer)
|
|
|
|
|
// {
|
|
|
|
|
// if ((layer as IGroupLayer).Visible)
|
|
|
|
|
// {
|
|
|
|
|
// result.AddRange(GetVisibleLayerByGroupLayer(layer as ICompositeLayer));
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// else
|
|
|
|
|
// {
|
|
|
|
|
// if (layer is IFeatureLayer)
|
|
|
|
|
// {
|
|
|
|
|
// if ((layer as IFeatureLayer).Visible)
|
|
|
|
|
// {
|
|
|
|
|
// result.Add((IFeatureLayer)layer);
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// return result;
|
|
|
|
|
//}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|