隨筆 - 81  文章 - 1033  trackbacks - 0
          <2007年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          在浮躁的年代里,我們進取心太切,患得患失;虛榮心太強,戰戰兢兢。一心爭強好勝,惟恐榜上無名。
          I think I can fly , and flying like a bird !
          程序員一名,已售出,缺貨中!

          我的郵件聯系方式

          用且僅用于MSN

          博客點擊率
          free web counter
          free web counter

          常用鏈接

          留言簿(36)

          隨筆檔案

          搜索

          •  

          積分與排名

          • 積分 - 187343
          • 排名 - 309

          最新評論

          閱讀排行榜

          評論排行榜

          ?????作者:施偉,原文出處: http://www.aygfsteel.com/crespo9907/archive/2007/03/02/mapeasy_answer3_level_row_column.html,轉載請保留。
          ??????
          ???????cyg_gis在我的博里留言,問到如下三個問題:

          ??????1.請問level不同時如何分割圖片,是否根據坐標來??
          ??????2.level變動時,function NewMapType() {}函數如何實現??
          ??????3.可否說說MapEasy的執行流程。
          ?

          ??????這也是很多的朋友在群里和論壇里經常問到的問題,也因為最近比較忙都只是做了簡單的交流,今天抽空在這里把這個問題分析一下,我想上面三個問題也就自己解開了。

          ??????首先需要搞清楚row,column,level分別是什么意思,我想大家英文對付它們應該綽綽有余,呵呵。row表示行、column表示列而level表示級別,在MapEasy中row表示瓦片(tile)所在的行數、column表示瓦片所在的列數而level表示地圖縮放的級別。

          ??????下面我們來理解幾個更為重要的概念,主要是MapModel這個地圖核心對象的幾個屬性:

          ??????1. MapModel.bound 表示地圖的坐標范圍
          ??????它為地圖指定了一個參考坐標范圍,其他一些帶有坐標信息的概念都是以它作為參考,如點(Point)、地物標注(Marker)等。如設置當前坐標范圍為(-180e16, 180e16, -90e16, 90e16),即MapModel.bound = new Bound(-180e16, 180e16, -90e16, 90e16)(在這里默認你已經了解Bound對象的含義),有一個標注的坐標為(-180e16, 90e16),即new Marker(new Point(-180, 90)) ,很容易看出在這個地圖坐標系范圍中此標注在地圖的最左上角。自然這個標注在顯示時位置也就在地圖的最左上角。

          ??????2. MapModel.firstZoomTileNum 表示地圖在客戶端顯示時在第一個級別所分成的瓦片數。
          ??????這個值一般是一個平方數,因為默認地圖為正方形。如MapModel.firstZoomTileNum = 121表示在第一個級別會分成121和瓦片來顯示,即11行11列的瓦片組成的二元矩陣。

          ??????3. MapModel.scalePara 表示地圖每一層縮放之間的縮放比例
          ??????這個比較容易理解,如果MapModel.scalePara=2,那么每個級別之間就以2倍的比例放大或者縮小。

          ??????4. MapModel.tileSize 表示每個瓦片的尺寸大小,單位為象素
          ??????如MapModel.tileSize=256,那么瓦片即為256*256的DIV,地圖圖片相應也為256*256。注意此處單位為象素。

          ??????5. MapModel.maxZoomLevel 表示地圖能放大的最大級別
          ??????如MapModel.maxZoomLevel=5,那么地圖能放大的最大級別為5,相應在滑塊工具上你也只能看到放大到5。

          ??????
          ??????我想理解了上面幾個概念要回答那三個甚至是相關的問題都不會太難,首先我們來分析問題一:請問level不同時如何分割圖片,是否根據坐標來? MapEasy這種地圖顯示方式就是把地圖分成一個個大小相等小的瓦片,我們可以把的地圖看作是又我們生成的這些瓦片所拼接起來,其實一個瓦片在瀏覽器中就是一個DIV,里面包含一個圖片。我們舉一個比較典型的例子來說明。
          ?????
          ??????如果地圖坐標范圍為(-100,100,-100,100),我們把它看左一個長寬均為200的大圖片,我們設置MapModel.firstZoomTileNum=4,即在第一級用4個瓦片來顯示,顯示如下:

          ??????A1 A2
          ??????B1 B2

          ??????A1,A2,B1,B2即為4個瓦片,顯然A1顯示(-100,0,0,100)范圍的地圖,A2顯示(0,100,0,100)范圍,B1顯示(-100,0,-100,0)范圍,B2顯示(0,100,-100,0)范圍。這個時候我們可以結合理解row,column的概念,其實這四個代號中A,B即代表row,下標1,2即代表column。

          ??????為方便閱讀把圖片與地圖范圍列表如下:

          ??????A1-(-100,0,0,100)
          ??????A2-(0,100,0,100)

          ??????B1-(-100,0,-100,0)
          ??????B2-(0,100,-100,0)

          ??????同樣舉最典型的例子當地圖由level=1變為level=2時,并MapModel.scalePara=2即放大比例為2時,顯然圖片的長和寬都變為原來的一倍,而整個地圖的面積就變成了原來的四倍。這個時候MapEasy會用四倍的瓦片數量來顯示地圖,如上面舉的例子就變成如下顯示:

          ???C1 C2 C3 C4
          ???D1 D2 D3 D4
          ???E1? E2 E3 E4
          ???F1? F2 F3 F4

          ??????注:這里的ABCDEF并沒有任何含義,只是代號而已。

          ??????這個時候C1顯示(-100,-50,50,100)范圍地圖,而C2顯示(-50,0,50,100),依次類推,見下表:

          ??????C1-(-100,-50,50,100)
          ??????C2-(-50,0,50,100)
          ??????C3-(0,50,50,100)
          ??????C4-(50,100,50,100)

          ??????D1-(-100,-50,0,50)
          ??????D2-(-50,0,0,50)
          ??????D3-(0,50,0,50)
          ??????D4-(50,100,0,50)

          ??????E1-(-100,-50,-50,0)
          ??????E2-(-50,0,-50,0)
          ??????E3-(0,50,-50,0)
          ??????E4-(50,100,-50,0)

          ??????F1-(-100,-50,-100,-50)
          ??????F2-(-50,0,-100,-50)
          ??????F3-(0,50,-100,-50)
          ??????F4-(50,100,-100,-50)

          ??????可以看出原來由一個瓦片A1顯示的部分,現在由C1,C2,D1,D2四個瓦片共同顯示,其他類推。

          ??????當level不同時MapEasy就是這樣分割圖片來形成瓦片顯示的,我想第一個問題應該解決了吧。下面我們來看第二個問題:level變動時,function NewMapType() {}函數如何實現?在自定義一個新的地圖類型時,主要就是需要重載getSrc()方法來跟特定的地圖服務器配合取得對應瓦片的圖片數據。這個在以前也討論過,getSrc方法通過level, row, column三個參數來確定現在需要請求哪個瓦片的圖片數據。即表示在level級別下第row行第column列的瓦片地圖數據的地址(在MapEasy中row,column的索引是從0開始的)。再結合第一個問題的解釋第二個問題也就自然不成問題了。如上面的例子當level為1第二行第二列的瓦片圖片數據為B2即(0,100,-100,0)范圍的圖片數據,二當level為2時同樣第二行第二列的瓦片圖片數據為D2即(-50,0,0,50)的圖片數據。

          ??????不管你的地圖服務器(或者稱為數據源)是使用按圖片名稱編好號碼的靜態圖片還是動態的WMS服務等,都沒有任何關系,按照上面的規律實現getSrc方法按對應的level,row,column取得對應的地圖數據就可以享受MapEasy帶來的樂趣了。如果你知道了這些還問我怎么去取圖片呢,那我只能說仁者見仁,智者見智。呵呵

          ??????對于第三個問題,我能說的就是在開源項目文檔不全的客觀條件下,靜下心來研讀一遍代碼是最好的方法。MapEasy的代碼即使在JavaScript基礎不是太好的情況下我想抽一個星期的空余時間應該可以完整的讀一遍了。不知道我這樣回答cyg_gis兄是否能滿意,不過這確實是肺腑直言,讀源代碼才是王道,強烈推薦!

          ??????確實有好多好多的朋友提到這幾個相關的問題,希望這篇文章能幫大家一解困惑,共同享受MapEasy!
          posted on 2007-03-02 02:04 cresposhi 閱讀(5312) 評論(18)  編輯  收藏

          FeedBack:
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-02 08:50 Tom Xu
          目前ME系統針對數據源的缺點是:只能顯示定范圍的地圖數據,定范圍的數據雖然容易切圖,但往往會錯過一些重要的比例尺,因此定范圍的數據層與層之間是有線性關系的。但如果要按固定比例尺切圖,那現在ME系統就無法滿足需求,需要做一些調整,目前正在測試,基本實現。

          不過好在目前大部分WMS及像Google, Yahoo, Mapbar, 51ditu等都是采用固定范圍的方式顯示數據,因而系統開發難度降低不少。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-02 10:54 cyg_gis
          寫的很詳細,我正在詳讀。我現在卡在了“level不同如何切割服務器端地圖”等問題。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-02 10:57 cyg_gis
          看了上面Tom Xu的回復,我想“用比例尺切圖”的方法現階段應該不可行,但“定范圍”切圖的方法現在還不是很清楚。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】[未登錄] 2007-03-02 11:18 SIN
          當前MapEasy可不可以跟你的博客地圖中那樣,在上面加一些能顯示動態數據的標注??  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-02 11:51 施偉
          @SIN
          當然可以,需要自己建立自己的標注數據庫,在客戶端JS中生成標注對象Marker或者擴展覆蓋物Overlay對象來生成自己的標注即可。
            回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-02 11:54 施偉
          @cyg_gis
          有什么具體問題你可以詳細的給我mail list,我抽時間幫你解決。
          最近確實被事忙暈了,ME也一段時間沒碰了,呵呵
          找時間看看tom兄說的幾個問題。
          看來我又落后了啊,tom等等我啊 ^_^  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-12 12:04 穎穎
          呵呵,怎么這么快就落后了啊。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-12 21:38 施偉
          呵呵,日新月異啊。。。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-13 09:07 穎穎
          造也,呵呵,這個世界有沒有天才啊,就是那種不用學都知道的,還有啊,過目不忘的那種。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-13 22:20 施偉
          有天才,所謂的天才并不是不用學都知道,而是拼命學并且掌握學習方法的人。  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-14 10:14 穎穎
          哦,那每個人都可以成為天才列,呵呵看來又跟:這個世界沒有丑女人,只有懶女人的道理一樣,呵呵  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-14 11:52 cresposhi
          這句話說的有見地,美女越來越有深度了,呵呵  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-14 12:41 穎穎
          呵呵,那我是美女所以我不懶,這個對不對啊?  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-03-15 09:16 cresposhi
          呵呵,也有道理哦  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-08-30 15:05 bwrobert
          瞎扯!答疑成了談論天才美女和懶人了!  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-08-30 15:27 bwrobert
          最近剛弄 MapEasyx想問個初學者的問題:
          自定義類型來讀取地圖圖片數據如何形成瓦片顯示在頁面上?  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】 2007-11-13 14:49 hyowner
          看了上面的問題我還是感到很迷惑,我現在的唯一的問題就是不知道如何把地圖把地圖切割,我在瀏覽器上看時一些簡單的功能是可以實現的,但就是里面的瓦片顯示部分不知道怎樣換成我的圖例,還請能詳細講解,怎樣把我的N多的圖片多顯示出來呢,我用了一張圖片測試,結果在
          A1 B1
          A2 B2
          都出現了同樣的圖片,我怎么才能把所頭的圖片按一個完整的地圖顯示出來啊
          QQ:57191841  回復  更多評論
            
          # re: MapEasy答疑(三) row,column,level與瓦片顯示的關系【很多朋友反復問到的問題】[未登錄] 2009-06-30 14:31 lu
          我也有同上的問題。而且之前下的ME,運行demo2_google.html這些例子的時候,googlemap的圖片都讀不出來啊,全都是x。是不是讀取googlemap數據的url有問題啊?急切求教  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 河池市| 河西区| 辽阳市| 伽师县| 铁岭县| 宣汉县| 慈溪市| 阳东县| 荆州市| 黄山市| 潢川县| 宜章县| 台东县| 库车县| 大同市| 石渠县| 金阳县| 陇南市| 类乌齐县| 东乡族自治县| 白银市| 大厂| 安宁市| 长宁县| 南澳县| 洮南市| 姚安县| 元阳县| 仁化县| 红桥区| 夏邑县| 宁蒗| 垦利县| 林周县| 土默特左旗| 湖南省| 嘉兴市| 咸丰县| 高州市| 射洪县| 金沙县|