通過圖中圖的顯示,即逐層細化圖層,它使用戶得以執行逐層細化分析和探測。如果地圖包含逐層細化圖層,用戶就可以通過鼠標指向和單擊地圖的某個區域得到該區域更詳細的信息。逐層細化圖層所提供的直觀、易用的界面使用戶得以通過指定和單擊來探測數據。
逐層細化應用程序需要相當數量的設置以及精心地準備。其主要開發步驟總結如下:
1) 獲取用來建立多層次逐層細化圖層的多種表。可以使用 MapInfo Professional 創建表,或者從 MapInfo 公司或第三方供應商處購買表 ( Raman et al. ,2003) 。
2) 使用特殊的列和特殊的元數據創建新的空逐層細化表 ( tab 文件) 。元數據為每壹張成員表分配層次名,並且標識成員表中的重要列: ID 列和標題列。
3) 把逐層細化表加入地圖 ( 例如,把逐層細化表加入所使用的 Geoset ( s) 中,或者通過像 Layers. Add 這樣的方法,把逐層細化表添加到地圖中) 。
4) 添加用戶接口元素 ( 例如工具欄按鈕) 到應用程序中,以便用戶選擇逐層細化工具並單擊地圖來進行細化。
向應用程序添加代碼來響應用戶對逐層細化工具的使用 ( 即: 編寫層次結構管理器) 。此代碼需要檢測用戶所選擇的圖元; 確定替換圖元的子圖元; 並調用壹些方法( DrilldownRemoveFeatures,DrilldownAddFeatures) 來展開或者收縮地圖圖元。
要創建逐層細化圖層,需要提供由兩個或更多 MapInfo 表組成的表集合。特別地需要: 逐層細化圖層的每壹層次的詳細信息都需要壹張 MapInfo 表,這些被稱為成員表; 額外會有包含特殊元數據的空表來描述成員表,它被稱為逐層細化表。
例如,“逐層細化表示例”包含如 “\ DDMap \ ComponentMaps \ One \ LevelID”和“\ DDMap \ ComponentMaps \ Twox \ LevelID”這樣的關鍵字層次結構。請註意 DDMap、ComponentMaps 和 LevelID 是關鍵字層次結構標準的、必需的部分,而 One 和 Twox 是可自定義的。可使用任何喜歡的關鍵字名代替 One、Twox、Twoxx 等; 那些關鍵字名只是用來區分每個成員表的關鍵字集。如圖 6. 21 即為圖中圖顯示。
圖 6. 21 圖中圖窗口
具體實現參考下面詳細代碼:
Dim m_Layer As Layer
Dim m_Fea As MapXLib. Feature
Private Sub form_Load( )
Set m_Layer = Map2. Layers. CreateLayer( " Rectlayer" )
End Sub
Private Sub Map1_MapViewChanged( )
Dim tempFea As MapXLib. Feature
Dim tempPnts As MapXLib. Points
Dim tempStyle As MapXLib. Style
If m_Layer. AllFeatures. Count = 0 Then
Set tempStyle = New MapXLib. Style
tempStyle. RegionPattern = miPatternNoFill
tempStyle. RegionBorderColor = 255
tempStyle. RegionBorderWidth = 2
Set tempFea = Map2. FeatureFactory. CreateRegion( Map1. Bounds,tempStyle)
Set m_Fea = m_Layer. AddFeature( tempFea)
Else
With m_Fea. Parts. Item( 1)
. RemoveAll
. AddXY Map1. Bounds. XMin,Map1. Bounds. YMin
. AddXY Map1. Bounds. XMax,Map1. Bounds. YMin
. AddXY Map1. Bounds. XMax,Map1. Bounds. YMax
. AddXY Map1. Bounds. XMin,Map1. Bounds. YMax
End With
m_Fea. Update
End If
End Sub
Private Sub Map2_MouseDown( Button As Integer,Shift As Integer,X As Single,Y As Single)
Dim MapX As Double
Dim MapY As Double
Map2. ConvertCoord X,Y,MapX,MapY,miScreenToMap
Map1. CenterX = MapX
Map1. CenterY = MapY
End Sub