古詩詞大全網 - 成語故事 - 中顯示

中顯示

通過圖中圖的顯示,即逐層細化圖層,它使用戶得以執行逐層細化分析和探測。如果地圖包含逐層細化圖層,用戶就可以通過鼠標指向和單擊地圖的某個區域得到該區域更詳細的信息。逐層細化圖層所提供的直觀、易用的界面使用戶得以通過指定和單擊來探測數據。

逐層細化應用程序需要相當數量的設置以及精心地準備。其主要開發步驟總結如下:

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