阅读:1949回复:6
如何利用选择工具返回所选择的图元?
<P>当设置完选择工具Map.CurrentTool =miselecttool 之后,就可以选择图元了,但是现在我们不知道该图元所在的图层,如果你声明了一个变量CMapXSelection m_Sel之后:
1. 如何将鼠标所选择的图元加入到m_Sel选择集中? 2. l另外我们有可能所选择的图元分属不同的层中,可以把它们加入到同一选择集中吗?如果可以的话,怎么实现?</P> <P>下面的代码有什么错误:</P> <P>CMapXSelection m_Sel;</P> <P>int temp;</P> <P>m_Sel=m_ctrlMapX.GetLayers().Item(i).GetSelection(); temp=m_Sel.GetCount();</P> <P>为什么程序执行不到语句temp=m_Sel.GetCount();呢?</P> |
|
1楼#
发布于:2004-12-23 19:20
VC,不懂!惭愧!<img src="images/post/smile/dvbbs/em01.gif" />
|
|
2楼#
发布于:2004-12-23 20:23
<P>其实不管任何编程语言,有很多地方都是相通的。原来的问题已经解决,原因在于把图层的起始索引号误写成了0。</P><P>另外我想表达的意思,由于选择集是针对图层的,而且当你定义了一个选择集之后,在该变量中只能存放一个固定图层的选择图元,所以在此我有以下几个疑问:</P><P>1.当你将选择工具设置为miSelectTool之后,就可以在地图上选择对象了,但是我们对所选择的对象没有任何信息,即使是它所在的图层,那么我们如何获得当前所选择的图元所在的图层名称呢?</P><P>2.在使用选择工具时,即使是最简单的miSelectTool,加入我们在选择是按下了Ctrl键时,那么就有可能使得我们所选择的图元并不是同一个图层,那么这时如何将现在所选取的图元集合与先前所选择的图元集合区别开呢?</P><P>3.在我们利用选择工具选择图元时,这些行为应该将它们放在哪一个事件中?</P><P>我是一名老师,在教学生之前,不得不考虑很多问题。希望各位大侠提供解决问题的思路,最好是VC的思路,如果您是使用其它语言的话,讲一讲您是如何解决这些问题,对我肯定也会有帮助的。</P><P>谢谢!</P><P>---------------------------------</P><P>授人以鱼不如授人以渔</P>
|
|
3楼#
发布于:2004-12-26 15:09
<P>我想任何一个选择都是有目的性的,那么你肯定应该知道你所想选择的东西是属于那一个层,我建议是先把所有层的selectable属性设置为false,当你想选那一类元素时就将该类元素的图层设为ture,这样应该就不会选错了吧。</P>
|
|
4楼#
发布于:2005-01-01 19:53
<P>虽然说绝大部分的选择都是基于某一个目的而进行的,但是当我们基于某一点进行周边环境分析的时候,往往需要进行缓冲区分析,这时在缓冲区内的图元很可能属于不同的层,那么这时我们该如何返回缓冲区内的图元呢?</P>
|
|
5楼#
发布于:2005-01-09 15:21
建议在图元属性中加一个字段以表明该图元所处图层,你看如何?
|
|
6楼#
发布于:2005-01-09 15:46
<P>另外有个问题想请教一下楼主</P><P>为什么我用标准工具加入一个点,不能即时更新地图?</P><P>举个例子:某层本来有16个图元,然后我在ToolUsed事件中加入:</P><P>case ToolNum of</P><P>miAddPointTool:showmesaage(inttostr(map1.layers[1].AllFeatures.Count));</P><P>运行的结果出现还是“16”,请问怎么样才能真正得到即时的图元总数。(不要用Count+1这招) </P>
|
|