YouTube | Facebook | X(Twitter) | RSS

指定した XY 座標値を中心にマップを移動する方法

2016/9/1 (木)

'******************************************************************************
' 定義 :fncMapMove(X As Double, Y As Double)
' 概要 :指定したXY座標を中心にマップを移動
' 第1引数 :Double
' 第2引数 :Double
' 戻り値 :なし
'
' 製品 :ArcGIS Desktop 9.1 ArcView
' ライブラリ :ArcMapUI, Carto, Display, Geometry,
' クラス :MxDocument, Map, ScreenDisplay, Envelope, DisplayTransformation
' インタフェース:IMxDocument, IActiveView, IScreenDisplay, IEnvelope, IDisplayTrnsformaiton
' メンバ :IMxDocument::ActiveView, IActiveView::ScreenDisplay, IScreenDisplay::DsplayTransformation
'
' 更新履歴 :2005/12/06 新規作成
'******************************************************************************
Private Function fncMapMove(X As Double, Y As Double)
 
'現在のDocumentを取得
Dim pMxDocument As IMxDocument
Set pMxDocument = ThisDocument
 
'ActiveViewの取得
Dim pActiveView As IActiveView
Set pActiveView = pMxDocument.ActiveView
 
'ScreenDisplayの取得
Dim pScreenDisplay As IScreenDisplay
Set pScreenDisplay = pActiveView.ScreenDisplay
 
'ActiveViewからEnvelopeを作成
Dim pEnvelope As IEnvelope
Set pEnvelope = pActiveView.Extent
 
'画面移動後のEnvelopeを新規作成
Dim pNewEnvelope As IEnvelope
Set pNewEnvelope = New Envelope
 
pNewEnvelope.XMin = X - pEnvelope.Width / 2
pNewEnvelope.YMin = Y - pEnvelope.Height / 2
pNewEnvelope.XMax = X + pEnvelope.Width / 2
pNewEnvelope.YMax = Y + pEnvelope.Height / 2
 
'移動後のEnvelopeを画面に設定
Dim pDisplayTransformation As IDisplayTransformation
Set pDisplayTransformation = pScreenDisplay.DisplayTransformation
 
pDisplayTransformation.VisibleBounds = pNewEnvelope
 
'マップの再描画
pActiveView.Refresh
 
End Function
 
'参考
' http://edndoc.esri.com/arcobjects/8.3/ComponentHelp/esriCore/ZoomInCenter.htm
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-,