隨筆 - 81  文章 - 1033  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

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

          我的郵件聯系方式

          用且僅用于MSN

          博客點擊率
          free web counter
          free web counter

          常用鏈接

          留言簿(36)

          隨筆檔案

          搜索

          •  

          積分與排名

          • 積分 - 187038
          • 排名 - 309

          最新評論

          閱讀排行榜

          評論排行榜

          ??? MapEasy群里面很多新朋友都不停的問到同一個問題,既然MapEasy是一個純粹的JavaScript地圖顯示客戶端那么她是如何與客戶自己的后臺地圖程序進行整合,共同工作?這在MapEasy的設計之初就給了完美的解答,在MapEasy上實現與不同的地圖服務的對接是一件非常輕松而且靈活的事情。大家都可以看到在MapEasy的Sample里就給出了諸如Google、edushi、WOW、custom等多種后臺地圖服務的接口。

          ??? 但是由于各種歷史的原因Sample里只有edushi的地圖現在還可以正常工作,其他的可能已經看不到圖片。很多朋友都以為是MapEasy的代碼的原因,其實不然,可以解釋為是MapEasy很久沒有更新的原因,那些地圖服務已經不能取得地圖數據了。

          ??? 在這里特別感謝BeanSoft兄提出的建議,做一個在取本地圖片的的Sample,這樣就不會出現上述的地圖服務不能工作后Sample不能正常工作。最值得我敬佩的是他馬上動手做了一個Demo,再次感謝分享!

          ??? 下面告訴大家實現與自己的地圖服務配合是一件多么Easy的事情(我們的目的就是讓Map更加Easy ^_^)。請大家注意MapType這個類,她就是MapEasy提供給大家擴展自定義地圖服務類型的組件(我覺得在這里用組件這個詞更加貼切,因為她雖然夠簡單,但同樣夠強大和完整)。下面給出MapType類:

          ?1?function?MapType()?{
          ?2?????
          ?3?????this.enablePic;
          ?4?
          ?5?????this.disablePic;
          ?6?????
          ?7?????//~?Method
          ?8?????{
          ?9?????????this.enablePic?=?imgBaseDir?+?"maptype_0b.gif";
          10?????????this.disablePic?=?imgBaseDir?+?"maptype_0a.gif";
          11?????}
          12?
          13?????this.getSrc?=?function(level,?row,?column)?{
          14?????????return?imgBaseDir?+?'zoom_'?+?level?+?'/'?+?level?+?'_'?+?column?+?'_'?+?row?+?'.jpg';
          15?????}
          16?
          17?????this.getEnablePic?=?function()?{
          18?????????return?this.enablePic;
          19?????}
          20?
          21?????this.getDisablePic?=?function()?{
          22?????????return?this.disablePic;
          23?????}
          24?}

          ??? enablePic、disablePic即顯示在左上角(當然如果你愿意可以把她放在任何位置)的變換地圖類型的按鈕的圖片,分別為選中和非選中時的圖片。而getSrc方法就是實現與不同地圖服務對接的最重要直接的方法,默認提供的方法是取本地圖片。getSrc方法提供了與不同數據源的接口,在getSrc中發揮你的聰明才智以最簡單的方式取得對應瓦片的圖片就可以了。

          ??? MapEasy推薦的最佳實踐是編寫一個屬于自己的MapType,如WMSMapType,繼承MapEasy提供的MapType重寫getSrc方法實現自己的數據源接口。

          ??? WMS(Web Map Service)是OPENGIS的規范,應用非常廣泛。下面給出一個以WMS服務為地圖數據源的簡單實現作為參考。

          ?1?/**
          ?2??*?自定義一個WMS數據源
          ?3??*?@author?crespo
          ?4??*/
          ?5?function?WMSMapType()?{
          ?6?
          ?7?????MapType.apply(this);
          ?8?
          ?9?????this.getSrc?=?function(level,?row,?column)?{
          10?????????var?xMin?=?(MapModel.bound.getMinX()?+?((MapModel.bound.getWidth())?/?(new?Zoom(level).getBorderTilesNum()))*(column))/1e16;
          11?????????var?yMin?=?(MapModel.bound.getMaxY()?-?((MapModel.bound.getHeight())?/?(new?Zoom(level).getBorderTilesNum()))*(row+1))/1e16;
          12?????????var?xMax?=?(MapModel.bound.getMinX()?+?((MapModel.bound.getWidth())?/?(new?Zoom(level).getBorderTilesNum()))*(column+1))/1e16;
          13?????????var?yMax?=?(MapModel.bound.getMaxY()?-?((MapModel.bound.getHeight())?/?(new?Zoom(level).getBorderTilesNum()))*(row))/1e16;
          14?????????//alert("row?and?column"+row+","+column);
          15?????????//alert(xMin+","+yMin+","+xMax+","+yMax);
          16?????????return?"http://localhost:8080/geoserver/wms?bbox="+xMin+","+yMin+","+xMax+","+yMax+"&styles=population&Format=image/png&request=GetMap&layers=states&width=256&height=256&srs=EPSG:4326";
          17?????}
          18?}

          ??? 使用本機的geoserver服務器提供的WMS服務測試通過。

          ??? 趕快去擴展你的地圖類型吧!
          posted on 2007-02-07 10:59 cresposhi 閱讀(3427) 評論(9)  編輯  收藏

          FeedBack:
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-02-07 12:03 梅穎
          你自己寫的啊?  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-02-07 12:31 施偉
          ???你覺得是誰寫的呢?  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-02-07 14:49 梅穎
          哦,真的是你寫的啊,呵呵,你好厲害哦,好崇拜你哦,呵呵,教哈我列  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-02-08 08:10 睿不可當
          mark
          看來 我來blogjava不能不來的只有
          crespo9907和ilovezmh了
          呵呵  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-02-08 08:52 施偉
          @睿不可當
          呵呵,睿G把你的blog也留一下,也好讓我們過去景仰一下!  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-09-14 09:40 向超
          老大,能不能把你連接geoserver的例子給我發一份xiangchao76@sohu.com  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-09-17 17:48 向超
          看了你wms的例子,我直接也通過geoserver提供的wms做了一個測試,現在問題是,geoserver提供的wms是沒有切片的,其中那個bbox也只是確定地圖的顯示位置,所以我現在的情況是如果row,cou,lev都是1的情況,地圖顯示是正確的,如果這些都是2,也就是地圖顯示是分片的時候,就會出現顯示不正常,要不就是圖片沒有完全拼接在一起,要不就是圖片拼接的位置錯開,重疊等,不知道是怎么回事,望博主指點  回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2007-09-17 18:47 cresposhi
          你的理解可能有點偏差,我們通過wms取的是某一張瓦片,而不是整張地圖。而到底是哪張瓦片就是有MapType.getSrc的三個參數來確定的---行、列、級別。
          上面例子中的xMin、yMin、xMax、yMax分別代表當前指定參數那個位置的瓦片的最小x坐標、最小y坐標、最大x坐標、最大y坐標。
            回復  更多評論
            
          # re: MapEasy答疑(二) 如何讓MapEasy與WMS共同工作 2008-01-22 15:02 longlong
          我有兩個MapType,一個是WMSMapType,一個是RSMapType,分別是矢量地圖和影像地圖,單獨的情況下都能顯示,現在我想做他們的疊加,怎么做呢?  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 澎湖县| 株洲市| 兖州市| 台南市| 石门县| 冷水江市| 广水市| 琼结县| 泾川县| 于田县| 长阳| 嘉兴市| 古田县| 宁国市| 枝江市| 阜阳市| 辽源市| 库尔勒市| 临沧市| 晋宁县| 泰来县| 仁化县| 喀什市| 河曲县| 邹平县| 炉霍县| 丹巴县| 乌兰县| 海宁市| 德安县| 深水埗区| 平顶山市| 郓城县| 涟水县| 新郑市| 邵阳县| 万盛区| 阜南县| 临西县| 台安县| 永登县|