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

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

楼主#
更多 发布于:2011-09-16 19:53
在鸟瞰程序的制作中,当在TOCControl中改变图层的可视性,移动图层的位置时,如何使鸟瞰控件与主控件保持同步?求高手指教!!!
喜欢0 评分0
默认头像
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2011-09-19 12:50

可以参考下面的:

——————

怎么在AO中实现PageLayoutControl控件与MapControl联动,下面是AO+vb.NET程序。
1、先写一个CopyFocusMap过程
Private Sub CopyFocusMap()
Dim i As Integer
Try


If Me.AxPageLayoutControl1.ActiveView.FocusMap.LayerCount > 0 Then
Me.AxPageLayoutControl1.ActiveView.FocusMap.ClearLayers()
End If
For i = 0 To Me.AxMapControl1.Map.LayerCount - 1
Me.AxPageLayoutControl1.ActiveView.FocusMap.AddLayer(Me.AxMapControl1.Map.Layer(i))
Next
'获取 IObjectCopy 接口
Dim pObjectCopy As IObjectCopy
pObjectCopy = New ObjectCopy

'获取 源“Map”
Dim pToCopyMap As Object
pToCopyMap = Me.AxMapControl1.ActiveView.FocusMap 'm_pPactiveview.FocusMap

'获取 参与复制的源“Map”
Dim pCopiedMap As Object
pCopiedMap = pObjectCopy.Copy(pToCopyMap)

'获取 目的“Map”
Dim pToOverwriteMap As Object
pToOverwriteMap = Me.AxPageLayoutControl1.ActiveView.FocusMap

'复制 Map
pObjectCopy.Overwrite(pCopiedMap, pToOverwriteMap)

'刷新显示
AxPageLayoutControl1.CtlRefresh(esriViewDrawPhase.esriViewGraphics)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
2、在load事件中
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'使得layeroutcontrol和mapcontrol一致
CopyFocusMap()
End Sub
3、当mapcontrol的extent改变的时候

Private Sub AxMapControl1_OnExtentUpdated(ByVal sender As Object, ByVal e As ESRI.ArcGIS.MapControl.IMapControlEvents2_OnExtentUpdatedEvent) Handles AxMapControl1.OnExtentUpdated
'实现与AxPageLayoutControl1联动
CopyFocusMap()
End Sub

以上三步就可以实现AxPageLayoutControl1联动。

GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部