作者:
施偉,原文出處:
http://m.tkk7.com/crespo9907/archive/2007/03/05/mapeasy_answer4.html,轉載請保留。??
??? yzhrain在看完我的
MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】這篇答疑文章后在論壇里又提出了如下兩個問題:
??? 1. 當level=1變為level=2時,瓦片(就是頁面上包含img的div)的長與寬是不是不變,比例說:level=1時,瓦片的width和height為256,256,那么level=2時,它的width和height是否還是256,256呢?
??? 2.在MapEasy中的地圖縮放(放大與縮小),是不是這樣:放大與縮小,頁面上img的width和height都是不變的(假定width=256,height=256).放大時,從服務器請求的圖片的實際尺寸為(128*128),簡單說,就是用一個256*256的img標簽來顯示一張實際大小是128*128的圖片;相對地,縮小時就是用一個256*256的img標簽來顯示一張實際大小是512*512的圖片.
??? Tim Wu給了如下答復:
1、是,tile大小始終不變
2、不是,會取另一堆256*256的img,這些img比原來的放大或縮小了。tile的img圖片是實時或預先根據矢量算法算好的,這樣圖片才不會變形。
??? 在此對這兩個問題做一些的補充。
1. 當地圖放大或縮小,即level改變的時候,在瀏覽器中顯示的瓦片(DIV以及包含的IMG)的大小是不會變化的,如果初始化定義為256×256那么變化后仍然是256×256的大小。在
MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】一文中也舉例說明過,假設當前地圖由四個瓦片顯示:
?????
A1A2?????
?B1 B2
???? (圖一)
放大地圖,此時瓦片變成如下排列:
??
C1C2C3 C4???
D1 D2D3 D4???E1 E2 E3 E4
?
??F1 F2 F3 F4
??? (圖二)
注:圖中相同顏色表示相同的地圖范圍??? 兩個圖中由大寫英文字母和下標代表的瓦片的大小是一樣大的。地圖放大而瓦片尺寸不變,顯然就會需要更多的瓦片來顯示。上面的例子就顯示當地圖的長寬均變為原來的2倍時,地圖放大了2×2=4倍,此時瓦片數也變為原來的4倍。
2. 在地圖放大和縮小過程中瀏覽器中的IMG確實是大小不變的,同樣從數據源取得的地圖圖片同樣也應該是大小不變的。當地圖縮放時,應該是向數據源請求縮放過的地圖,而不是簡單的把圖片進行在IMG標簽中強制定義一個尺寸。
??? 如上面例子中A1顯示的地圖范圍在放大后由C1 C2 D1 D2四個圖片共同顯示,A1顯示圖片的大小為256×256,那么C1 C2 D1 D2顯示圖片的大小仍然均為256×256,合起來為512×512,假設把他們看成一個整體,這個級別上同樣范圍的地圖應該從數據源得到512×512的圖片(請注意實際并非如此,便于理解而這樣認為)。而
不是仍然為256×256的圖片,分成四塊后為四個128×128,然后放在四個尺寸為256×256的IMG標簽中。
??? 如果對柵格地圖的WebGIS相關概念比較熟悉的話,應該很好理解地圖縮放后請求圖片的放大和縮小是怎么一回事情。而不是簡單的圖片的放大和縮小。
??? 對于類似于MapEasy的WebGIS客戶端顯示程序,GIS知識是關鍵理論和基礎,JavaScript是關鍵技術。兩者都要同步學習,我在GIS上就是菜鳥,所以碰到很多頭疼的問題,做很多無用功。
??? 希望這篇文章對你理解這兩個問題有些幫助!
??? 也祝愿MapEasy在2007年有更大的發展!
posted on 2007-03-05 11:23
cresposhi 閱讀(3917)
評論(14) 編輯 收藏