美章網 資料文庫 電子地圖API的設計和實現范文

電子地圖API的設計和實現范文

本站小編為你精心準備了電子地圖API的設計和實現參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

電子地圖API的設計和實現

電子地圖是利用地理信息系統、計算機網絡技術和計算機存儲技術等相結合而實現的一種新的地圖展現方式,已廣泛的應用于各行各業。當前的大部分電子地圖應用都是采用瓦片地圖技術,也有一小部分企業應用仍然基于矢量地圖,兩種技術各有優勢和缺點。但在當下,前者的應用應該是略勝一籌,通過特定的地圖投影模型,把通過遙測技術而生成的矢量地圖,按固定的縮放比例和固定尺寸進行切分,生成一張張幾KB至幾十KB大小的圖片,就容納大量的地理信息,無論是使用客戶端或者瀏覽器程序,地圖都能在短短幾秒內顯示在用戶面前,如此性能優越的用戶體驗,是動則需要讀取幾百兆的矢量地圖客戶端技術所望塵莫及的。在國內企業中,地理信息系統多為使用ArcGis等企業級GIS平臺或開源的GeoServer平臺,其矢量圖客戶端對終端計算機的硬件性能要求高,嚴重制約了GIS在國內企業的應用推廣,所以基于瓦片地圖技術的電子地圖api設計,有著廣闊的應用場景。

1電子瓦片地圖技術的基本概念

由于地球是球體,而我們日常所使用的地圖為方形,所以地圖就涉及到一個從經緯度到平面的轉換過程,俗稱地圖投影方法。而在不同的場合和用途下使用不同的地圖投影,不同的投影方法有不同的經緯度到方形坐標系的轉換公式,大多數互聯網地圖服務基本使用墨卡托投影。地面分辨率概念:地面分辨率類似地圖中的比例尺,是像素與地面距離(米)的比例。以谷歌地圖為例,其地圖瓦片每個均為256×256像素,當縮放級別為1時,全球地圖大小為512×512像素,即有4個地圖瓦片,赤道的分辨率=赤道周長距離(米)/512(像素)。當縮放級別為2時,赤道的分辨率為赤道周長距離/1024,即地圖長度=地圖寬度=256×2縮放等級像素。由此可見,地面分辨率取決于兩方面,地圖縮放級別和緯度,縮放級別決定像素即地圖瓦片的數量,緯度決定該地圖等級下的地表距離。地面分辨率(米/像素)=(cos(緯度×pi/180)×2×pi×赤道半徑/米)/(256×2×縮放級別像素)。根據墨卡托投影,因為在每個縮放級別下,地圖所含的像素都不同,因此地圖瓦片的數量也不同。每個瓦片都有一個坐標值,從左上角的(0,0)到右下角的(2縮放等級–1,2縮放等級–1)。對一個已知像素的XY坐標值,其所在的瓦片坐標值為,tileX=floor(pixelX/256),tileY=floor(pixelY/256)。

2電子地圖API的總體設計

2.1電子地圖API基本功能電子地圖API是一套由編程語言編寫的應用程序接口,能夠構建功能豐富、交互性強的地圖應用,包含了電子地圖各項基本功能的接口。基本地圖功能:展示平面地圖、衛星地圖等,拖拽、移動、縮放地圖等。地圖圖層功能:支持重設地圖底圖、地圖上疊加實時交通圖層或自定義圖層功能。覆蓋物功能:支持在電子地圖上顯示點、線、面、熱區、行政區劃、用戶自定義覆蓋物等;地圖控件展示功能:支持地圖縮放控件、工具條、比例尺等。

2.2電子地圖API邏輯架構地圖API界面容器是用戶所看到的界面,是其他所有層的容器。地圖層容器負責存放各種類型的地圖,如衛星圖、2D平面圖等,這些圖可以按上一節所說的方法,把地圖按256×256像素預先切割好,并存放在文件服務器或者CDN上,以供電子地圖API讀取并顯示。該容器會隨鼠標拖拽或者觸摸移動事件而平移,地圖也跟隨容器而平移。覆蓋物層容器負責顯示點、線、多邊形、標注等自定義圖形,如顯示導航路線、用戶自定義的矢量標注物。動作響應層負責處理界面事件,如鼠標點擊、鼠標滾輪、鼠標拖拽、手指觸摸移動、雙手放大縮小等,地圖API根據該層響應的事件來做相應操作,如移動地圖圖層、放大縮小地圖、顯示導航路線圖等。控件層容器負責顯示地圖的工具控件,如鷹眼、工具條、比例尺、地圖縮放控件。

2.3事件流程設計整個電子地圖API由地圖層容器、覆蓋物層容器、動作響應層、控件層容器組成,除動作響應層以外,其他層都能會包含多個對象,這些對象都可能會對鼠標、觸摸事件做出響應,事件發生后,每層的該事件發生位置的對象都會被響應該事件,處理完后會把事件傳給下一層。如用戶在地圖上點擊鼠標,控件層容器層先的相關對象先響應該事件,處理完成后再把事件傳遞給覆蓋物層容器,最后是傳遞給地圖層容器,逐層傳遞。但有些對象會屏蔽下一層容器的對象對上述事件的響應(如拖動地圖縮放控件時候,地圖、地圖上的標注不會跟隨移動),使用觀察者模型作設計能有效解耦地圖API的各個模塊。觀察者模式定義了對象之間依賴關系,發生改變的對象稱之為觀察目標,而被通知的對象稱之為觀察者,當一個對象改變其狀態時,它的所有觀察者都會收到通知,并按既定的策略做出反映。一個觀察目標可以對應多個觀察者,而且這些觀察者之間沒有相互聯系,所以可以根據需要增加和刪除觀察者,使得系統更易于擴展,觀察者模式又稱為-訂閱模式。

3電子地圖API的實現

電子地圖API最關鍵是顯示服務器上的瓦片地圖,所以動作響應層和地圖層是整個API的重點,而整個動作響應層的中心點和動作響應層的長寬是決定加載哪些瓦片地圖的關鍵所在。由于地圖是經緯度球面坐標系統映射到墨卡托平面坐標系統的結果,地圖層容器存放的正是墨卡托平面坐標系統的瓦片地圖,通過地圖投影類中的公式,能計算出某縮放等級下電子地圖中心點經緯度對應墨卡托平面坐標系的坐標,然后把該坐標作為地圖層和動作響應層的中心點,地圖層容器根據動作響應層的中心點在墨卡托平面坐標系統的位置和地圖窗口的長度、寬度,計算出地圖層應該加載哪些瓦片地圖并加載。當地圖拖動時,地圖API根據動作響應層的XY軸平移量,根據上述辦法判斷出加載的瓦片地圖,哪些在地圖緩存隊列的圖片不再需要。地圖緩存隊列大小固定,有助控制內存消耗量,當需加載的瓦片地圖不在緩存隊列中,則按LRU策略刪除不在地圖窗口中的地圖瓦片,并加載新的。為改善用戶體驗,地圖層容器面積稍微比動作響應層大,地圖緩存隊列的大小也設成比地圖層容器稍大,以免用戶拖動地圖時候出現白邊。

4結語

本文通過提出新的基于瓦片地圖技術的電子地圖API設計,實現了高性能的瓦片地圖展示辦法。通過采用分層技術和觀察者模式的設計方法,地圖層容器、覆蓋物層容器、動作響應層、控件層容器能做到各司其責,在其實現中均能及時響應各種用戶動作,根據此設計,作者分別用Javascript和Actionscript3分別編寫地圖API,由于采取了單線程設計并結合最新的JavascriptWEBGL技術和Flashstage3D技術,性能較現有的商用、開源地圖API有大幅度提高,在性能較差的設備也能表現良好,增強了地理信息系統在企業中的使用度。

作者:簡瑋俠 單位:廣東電網有限責任公司中山供電局信息中心

主站蜘蛛池模板: 狠狠干2019| 老司机亚洲精品| 日本三级韩国三级香港三的极不 | 免费人成无码大片在线观看| 色婷婷久久综合中文久久一本`| 国产成人精品自线拍| 2022福利视频| 在线视频国产一区| zoom和okzoom在线视频| 把极品白丝班长啪到腿软| 久久电影网午夜鲁丝片免费| 樱桃黄高清完整版在线观看| 亚洲日本乱码在线观看| 热带雨电影无删减在线播放| 免费绿巨人草莓秋葵黄瓜丝瓜芭乐| 色一情一乱一伦色一情一乱一伦| 国产大片b站免费观看直播| japonensisjava野外vt| 国内一级纶理片免费| v11av18| 成人综合久久综合| 久久久久久a亚洲欧洲AV| 日韩午夜视频在线观看| 亚洲av中文无码乱人伦在线视色| 欧美性大战久久久久久久| 亚洲综合无码一区二区| 男女猛烈无遮挡午夜视频| 十七岁免费观看高清| 美妇与子伦亲小说| 国产一区二区三区在线看片| 试看120秒做受小视频免费| 国产吃奶摸下激烈视频无遮挡| 999影院成人在线影院| 国产狂喷潮在线观看| 男女拍拍拍免费视频网站| 国产精品第44页| 91精品久久久久久久久久小网站| 在线观看欧美国产| av片在线观看永久免费| 天天操天天射天天插| jizz中国免费|