控制地圖顯示有幾個重要參數(shù):1,Zoom;2,Center;3,CurrentRange,下面我們詳細介紹這幾個參數(shù)的概念,關(guān)系以及如何控制地圖顯示的。

         什么是Zoom?Zoom就是當(dāng)前視窗顯示的地理范圍的寬度,也就是橫向跨度。

         什么是Center?顧名思義,Center就是當(dāng)前視窗的地理中心點。

         什么是CurrentRange?就是當(dāng)前視窗顯示的地理范圍。

         這三個概念之間有什么關(guān)系呢?下面通過一個題目,來說明這個問題。

         已知中心點坐標(biāo)(X,Y),Zoom,地圖畫布Size的大小,求CurrentRange.Xmin, CurrentRange.Ymin, CurrentRange.Xmax, CurrentRange.Ymax?

解:

CurrentRange.Width = Zoom;

CurrentRange.Xmin = X—Zoom/2;

CurrentRange.Xmax = X+Zoom/2;

CurrentRange.Ymin CurrentRange.Ymax該如何求呢?如果知道 CurrentRange.Height,即地理范圍的縱向跨度,就可以求出CurrentRange.Ymin和CurrentRange.Ymax.

要求CurrentRange.Height,即要求每個象素在縱向上所代表的實際距離PixelHeight(為了保持圖元不變形,設(shè)定象素在橫向和縱向上代表實際距離是一樣的,即PixelWidth=PixelHeight),因為

CurrentRange.Height = PixelHeight * Size.Height

而PixelHeight又該如何得到呢?

PixelHeight=PixelWidht=Zoom/Size.Width;

其實,在PixelWidth=PixelHeight前提下,

CurrentRange.Width/CurrentRange.Height = Size.Width/Size.Height;

這樣就可以求得CurrentRange.Height,則

CurrentRange.Ymin = Y—CurrentRange.Height/2;

CurrentRange.Ymax = Y+ CurrentRange.Height/2

         通過這道題目,使我們了解了這三個概念之間的關(guān)系,所以我們只要改變?nèi)我庖粋參數(shù),就改變了其他兩個參數(shù),即改變了地圖的視圖范圍。所以,我們在二次開發(fā)的時候經(jīng)常需要設(shè)置中心點,來定位到某些圖元等等。

         我們在使用放大工具對地圖進行放大的時候,如果放大矩形是一個很狹長的矩形時,以上參數(shù)發(fā)生了怎樣的改變呢?

         根據(jù)人的視覺和心理習(xí)慣:如果是橫向狹長放大矩形,放大后的視圖,橫向跨度就是把剛才矩形橫向所包含的,而縱向跨度,需要按照 CurrentRange.Width/CurrentRange.Height = Size.Width/Size.Height;來計算CurrentRange.Height;同理,縱向狹長放大矩形,放大后的視圖,縱向跨度是剛才矩形縱向所包含的,而橫向跨度,同樣需要按照CurrentRange.Width/CurrentRange.Height = Size.Width/Size.Height;來計算得到。

         以上都是在沒有改變顯示屏幕畫布的情況下討論的,如果我們改變一下顯示屏幕的畫布大小,地理范圍又該如何變化呢?

         也是分別從橫向和縱向兩個方向上來討論,前提是屏幕畫布的改變,始終不改變Zoom的值:1,橫向上拉伸或者縮小,橫向跨度Zoom依然沒有變,而改變的是PixelWidth(每個象素所代表的實際距離的大。,拉伸Size.Width變大,則PixelWidth變小,縱向上,由于 Size.Height沒變,又由于PixelHeight=PixelWidth,所以Size.Height*PixelHeight變小,縱向跨度變小,顯示的內(nèi)容也就少了;同理,橫向縮小,PixelWidth變大,縱向上Size.Height沒變,Size.Height*PixelHeight變大,縱向跨度變大,顯示的內(nèi)容也就多了。2,縱向上拉伸或者壓扁,由于橫向上Zoom的值沒有改變,橫向的Size.Width的值也沒改變,橫向上PixelWidth就不會改變,縱向上的拉伸,Size.Height*PixelHeight變大,導(dǎo)致縱向上顯示內(nèi)容變多,反之,變少。

          以上分析了控制地圖方面的幾個參數(shù),以及對畫布顯示的影響幾種情況,在GIS二次開發(fā)中經(jīng)常會遇到,這些考慮都是按照人的視覺和心理習(xí)慣來設(shè)計的,讀者也可以完全不這樣做,可以有自己的設(shè)計,這個主動權(quán)在您自己手里。