西江月
路人甲
路人甲
  • 注册日期2010-03-14
  • 发帖数7
  • QQ
  • 铜币123枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2201回复:1

在鸟瞰程序的制作中,当在TOCControl中改变图层的可视性,移动图层的位置时,如何使鸟瞰控件与主控件保持同步?

楼主#
更多 发布于:2011-09-16 19:53
在鸟瞰程序的制作中,当在TOCControl中改变图层的可视性,移动图层的位置时,如何使鸟瞰控件与主控件保持同步?求高手指教!!!
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15947
  • QQ554730525
  • 铜币25339枚
  • 威望15364点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2011-09-19 12:50
<p>可以参考下面的:</p><p>——————</p><p>怎么在AO中实现PageLayoutControl控件与MapControl联动,下面是AO+vb.NET程序。<br/>1、先写一个CopyFocusMap过程<br/> <wbr>Private
Sub CopyFocusMap()<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> Dim i As
Integer<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> Try
</p><p><br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> If
Me.AxPageLayoutControl1.ActiveView.FocusMap.LayerCount > 0
Then<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Me.AxPageLayoutControl1.ActiveView.FocusMap.ClearLayers()<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
End If<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> For
i = 0 To Me.AxMapControl1.Map.LayerCount -
1<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Me.AxPageLayoutControl1.ActiveView.FocusMap.AddLayer(Me.AxMapControl1.Map.Layer(i))<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Next<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> '获取
IObjectCopy
接口<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> Dim
pObjectCopy As
IObjectCopy<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
pObjectCopy = New ObjectCopy</p><p>
</p><p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> '获取
源“Map”<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> Dim
pToCopyMap As
Object<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
pToCopyMap = Me.AxMapControl1.ActiveView.FocusMap 'm_pPactiveview.FocusMap</p><p>
</p><p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> '获取
参与复制的源“Map”<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Dim pCopiedMap As
Object<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
pCopiedMap = pObjectCopy.Copy(pToCopyMap)</p><p>
</p><p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> '获取
目的“Map”<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Dim pToOverwriteMap As
Object<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
pToOverwriteMap = Me.AxPageLayoutControl1.ActiveView.FocusMap</p><p>
</p><p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> '复制
Map<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
pObjectCopy.Overwrite(pCopiedMap, pToOverwriteMap)</p><p>
</p><p> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
'刷新显示<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
AxPageLayoutControl1.CtlRefresh(esriViewDrawPhase.esriViewGraphics)<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
Catch ex As
Exception<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
MsgBox(ex.ToString)<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> End
Try<br/> <wbr> <wbr> <wbr> End Sub<br/>2、在load事件中<br/>Private Sub Form1_Load(ByVal
sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
'使得layeroutcontrol和mapcontrol一致<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
CopyFocusMap()<br/> <wbr> <wbr> <wbr> End Sub<br/>3、当mapcontrol的extent改变的时候</p><p>
</p><p> <wbr> <wbr> <wbr> Private Sub AxMapControl1_OnExtentUpdated(ByVal sender As
Object, ByVal e As
ESRI.ArcGIS.MapControl.IMapControlEvents2_OnExtentUpdatedEvent) Handles
AxMapControl1.OnExtentUpdated<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
'实现与AxPageLayoutControl1联动<br/> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr> <wbr>
CopyFocusMap()<br/> <wbr> <wbr> <wbr> End Sub</p><p>
</p><p>以上三步就可以实现AxPageLayoutControl1联动。</p>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部