ArcEngine 问题 10
求助ILayerm_pCurrentLayer=axMapControl1.Map.get_Layer(1);IFeatureLayerpFeatureLayer=(IF...
求助
ILayer m_pCurrentLayer =axMapControl1.Map.get_Layer(1);
IFeatureLayer pFeatureLayer= (IFeatureLayer)m_pCurrentLayer;
第2句总是报错:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Carto.IFeatureLayer”。此操作失败的原因是对 IID 为“{40A9E885-5533-11D0-98BE-00805F7CED21}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
初接触这些东西 希望大家能帮助一下 展开
ILayer m_pCurrentLayer =axMapControl1.Map.get_Layer(1);
IFeatureLayer pFeatureLayer= (IFeatureLayer)m_pCurrentLayer;
第2句总是报错:
无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“ESRI.ArcGIS.Carto.IFeatureLayer”。此操作失败的原因是对 IID 为“{40A9E885-5533-11D0-98BE-00805F7CED21}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
初接触这些东西 希望大家能帮助一下 展开
1个回答
展开全部
我也遇到这个问题,我写一个函数:通过图层名称来获得图层,代码如下:
#region 获取图层(根据图层名称)
/// <summary>
/// 获取图层(根据图层名称)
/// </summary>
/// <param name="layerName">图层名称</param>
/// <returns>要素类</returns>
private IFeatureLayer GetLayerByName(string layerName)
{
try
{
IFeatureLayer pFeatureLayer = null;
IFeatureLayer reFeatureLayer = null;
for (int i = 0; i < axMapControl1.LayerCount; i++)
{
pFeatureLayer = (IFeatureLayer)axMapControl1.get_Layer(i); //报错
if (pFeatureLayer.Name == layerName)
{
reFeatureLayer= pFeatureLayer;
}
}
return reFeatureLayer;
}
catch (System.Exception ex)
{
MessageBox.Show("获取图层失败:"+ex.Message);
return null;
}
}
#endregion
最后的问题原来是:图层的问题,我遍历的图层中有栅格图层,它不是FeatureLayer,所以在遍历的时候要做一下判断.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询