public IFeature GetFeatureOnMouseDown(IPoint point)
{
try
{
ILayer layer = Common.GetLayerByName(mMap, "地块");
if (layer == null)
{
MessageBox.Show("请加载地块图层!", "提示");
return null;
}
//IFeatureLayer fLayer = layer as IFeatureLayer;
//IFeatureSelection featureSelection = fLayer as IFeatureSelection;
//featureSelection.Clear();
//if (featureSelection == null)
//{
// return null;
//} IFeatureLayer featureLayer = layer as IFeatureLayer;
if (featureLayer == null)
return null;
IFeatureClass featureClass = featureLayer.FeatureClass;
if (featureClass == null)
return null; //IPoint point = axMapControl1.ActiveView.ScreenDisplay.DisplayTransformation.ToMapPoint(x, y);
IGeometry geometry = point as IGeometry; double length = ConvertPixelsToMapUnits(axMapControl1.ActiveView, );
ITopologicalOperator pTopo = geometry as ITopologicalOperator;
IGeometry buffer = pTopo.Buffer(length);
geometry = buffer.Envelope as IGeometry; ISpatialFilter spatialFilter = new SpatialFilterClass();
spatialFilter.Geometry = geometry;
switch (featureClass.ShapeType)
{
case esriGeometryType.esriGeometryPoint:
spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelContains;
break;
case esriGeometryType.esriGeometryPolygon:
spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
break;
case esriGeometryType.esriGeometryPolyline:
spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;
break;
}
spatialFilter.GeometryField = featureClass.ShapeFieldName;
IQueryFilter filter = spatialFilter as IQueryFilter; IFeatureCursor cursor = featureClass.Search(filter, false);
IFeature pfeature = cursor.NextFeature();
if (pfeature != null)
{
return pfeature;
//featureSelection.Add(pfeature);
//pfeature = cursor.NextFeature();
}
else
{
return null;
}
}
catch
{
return null;
}
}

大家可以修改一下我的代码,图层改成你需要的图层即可。也可以写成类。只是写成类的话,变量可能会多一点。

if (pfeature != null)
{
return pfeature;
//featureSelection.Add(pfeature);
//pfeature = cursor.NextFeature();
}

此处也可以将if改成while,如果选择的是多个要素的话。将我注释掉的代码打开即可选择多个要素。

最新文章

  1. MVC学习笔记1
  2. 洛谷 P3366 【模板】最小生成树 prim算法思路 我自己的实现
  3. JavaScript 基础第二天
  4. C#显示SQL语句格式
  5. 深入学习golang(1)—数组与切片
  6. 可以这样去理解group by和聚合函数(转)
  7. js中的with语句
  8. Redis学习手册(List数据类型)
  9. entOS查看系统信息-CentOS查看命令
  10. vijosP1223麦森数
  11. Eclipse无法识别Android真机的解决方法
  12. Android学习笔记--Broadcast, BroadcastReceiver(广播)
  13. Java map取value最大值和最小值
  14. time.setToNow() 取当前时间,月份有误
  15. C/C++程序在main之前执行代码
  16. jquery.uploadify+spring mvc实现上传图片
  17. Linux 配置vim编辑器
  18. Python 字典(联合内存、联合数组)
  19. Scala_Trait特征
  20. python标准库介绍——21 UserDict 模块详解

热门文章

  1. 8.6 First_value和Last_value
  2. C++ 何时使用动态分配(即使用newkeyword)?何时使用指针?
  3. MinGW安装和使用基础教程
  4. java9新特性-17-智能Java编译工具
  5. python ftp
  6. Monad的基本运算
  7. UI Framework-1: views Windowing
  8. Vector源码学习
  9. 在ubuntu上编译rasbian kernel(for raspberry pi 1)
  10. Symfony4中文文档: 安装和设置Symfony框架