阅读:2201回复:1
在鸟瞰程序的制作中,当在TOCControl中改变图层的可视性,移动图层的位置时,如何使鸟瞰控件与主控件保持同步?
在鸟瞰程序的制作中,当在TOCControl中改变图层的可视性,移动图层的位置时,如何使鸟瞰控件与主控件保持同步?求高手指教!!!
|
|
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> |
|