zkycds
路人甲
路人甲
  • 注册日期2003-08-01
  • 发帖数19
  • QQ
  • 铜币180枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1191回复:2

使用MO选择功能的巨郁闷的事。

楼主#
更多 发布于:2005-05-31 11:19
我想在用户单击鼠标时选择离鼠标点最近的实体。<BR>代码如下
<br>
<P>ESRI.MapObjects2.Core.Point ptFind = axMapMain.ToMapPoint(e.x,e.y); //查找点坐标<BR>//按照从上到下的顺序查找所有图层。<BR>for(int i=0;i<AXMAPMAIN.LAYERS.COUNT ;i++) <BR>{<BR>try<BR>{<BR>MapLayer lyr = (MapLayer)axMapMain.Layers.Item(i);<BR>if(lyr.Visible) //只查找显示出来的图层。<BR>{<BR>if(lyr.shapeType == ShapeTypeConstants.moShapeTypePolygon)<BR>{<BR>findRecordset = lyr.SearchShape(ptFind,SearchMethodConstants.moContainedBy,"");<BR>}<BR>else<BR>{<BR>findRecordset = lyr.SearchByDistance(ptFind,axMapMain.ToMapDistance(15),"");<BR>}<BR>if(!findRecordset.EOF) //Find<BR>{<BR>object obj = findRecordset.Fields.Item("Shape").value;<BR>frmMOIndentity.LayerName = lyr.Name;<BR>axMapMain.FlashShape(obj,3);//闪烁查找到的物体3秒</P>
<P>break;<BR>}//end if<BR>}//end if(lyr.Visible)<BR>}<BR>catch(Exception exp)<BR>{<BR>System.Diagnostics.Debug.WriteLine("Select error\n"+exp.ToString());<BR>}<BR>} //end for</P>
<P>如果图层比较多,经常是明明鼠标点在一个区域内,有时可以选中,有时又选不中。<BR>当关闭所有其他图层,只留下一个图层时,基本上都可以选中。<BR>我跟踪过了,多个图层打开时也执行了相应图层的选择语句,也没有任何异常抛出,不只为什么多个图层选不中,单个图层就可以。<BR>不知有没有什么解决的方法?</P>
喜欢0 评分0
heqjxiaoyao
路人甲
路人甲
  • 注册日期2003-07-31
  • 发帖数981
  • QQ83031582
  • 铜币910枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-06-01 08:35
可以的看看MOVIEW2里面的功能就可以了<img src="images/post/smile/dvbbs/em03.gif" />
希望大家访问我的个人博客: 随笔闲谈: http://rsgisman.bokee.com
举报 回复(0) 喜欢(0)     评分
zchang81
路人甲
路人甲
  • 注册日期2005-05-11
  • 发帖数95
  • QQ
  • 铜币324枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-06-03 09:32
<P>那有两种可能:</P>
<P>一是你的坐标没有配准;二是你的记录指针没有指到相应的图层.</P><img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部