一 地圖的加載與顯示
關于gmap的介紹與使用可以看我以前的文章:
<a href="http://www.cnblogs.com/luxiaoxun/p/3463250.html">gmap.net開發之在winform和wpf中使用gmap.net地圖插件</a>
gmap.net是.net下一個地圖控件,可以基于http協定加載各個公司的地圖,如google,bing,arcgis的,主要原理是通過解析各個公司的地圖服務的url,傳入相應的參數得到對應的切片底圖(tiled map),如一個高德地圖的gmapprovider的實作如下:
如下為高德地圖的顯示:
通過類似的辦法,可以實作加載google、騰訊的地圖,百度的地圖也可以加載,但是因為百度采用自己的加偏算法(bd-09),導緻加載的地圖顯示偏差大,當在不同的地圖間切換時,無法正确顯示。。
二 marker的顯示與操作
gmapmarker為地圖上要顯示的資料元素,繼承gmapmarker可以實作自己想要的地圖元素效果,如下顯示自定義元素的樣式:
三 圖形的顯示與操作
在地圖上手動畫各種多邊形,來實作類似“電子圍欄”的功能,可以使用gmappolygon。
如下為我實作的圓形(circle)、矩形(rectangle)、多邊形(polygon)和折線段(polyline):
實作類似百度地圖“測距”的功能:
通過點、線和提示框可以實作類似百度地圖的“測距”功能,點選紅色的“x”,實作删除這次測距。
四 位址解析與路徑查找
位址解析:gmap中的位址解析主要用到geocodingprovider中的如下方法:
路徑查找:gmap中的路徑查找主要用到routingprovider的如下方法:
接口使用方式:
geocodingprovider和routingprovider都是通過目前的mapprovider轉換得到的,也就是說如果要在加載的地圖上實作位址解析與路徑查找,就需要實作加載地圖的三大接口:
gmapprovider接口:用于顯示地圖。
routingprovider:用于路徑查找。
geocodingprovider:用于位址解析。
五 坐标糾偏
中國國内的地圖都是經過“加偏”處理的,是以被稱為“火星坐标”。
現在主流的坐标系是wgs84坐标系,即地球坐标系,國際上通用的坐标系,經過國家測繪局要求采用gcj02算法加偏後即為“火星坐标”,百度在“火星坐标”的基礎上又采用了自己的加偏算法bd09加偏後,得到“百度坐标”,國内的搜狗坐标系、圖吧坐标系等,估計也是在gcj02基礎上加密而成的。
而現在google中國、騰訊和高德采用的是wgs84經過gcj02算法加偏後的“火星坐标”。
通過gps裝置采集到的坐标一般是沒有經過“加偏”處理的wgs84坐标,是以放到國内地圖上顯示會有誤差,可以把采集到的坐标也通過加偏算法加偏後再放到地圖上顯示,就可以得到對應的地點。
如下是經過加偏算法加偏後處理的情況:
如上使用google中國地圖,現在采用的算法在地圖1-16級可以基本沒有誤差,誤差很小,當然和采集裝置采集的點的準确度也有關系。
當地圖放大超過16級時候,就出現了誤差,但誤差也就在幾米:
六 中國行政區域邊界
有中國各個省市的邊界資料,就可以實作行政區域的顯示:
如下顯示江蘇省和南京市的行政邊界:
ps:現在手上有全國的各個省、市、縣區的行政邊界。
七 地圖下載下傳與緩存
gmap會自動在本地緩存一些通路過的地圖,預設是不删除的,是以當通路的地圖區域越多時,本地的地圖緩存也就越大。
當然你也可以手動下載下傳地圖到本地資料庫(支援sqlite、mysql、mssql、postgresql),如下所示:
緩存到本地的離線地圖資料就可以作為地圖資料包使用。
八 離線方案
離線地圖下載下傳,cs或bs離線地圖使用:
聯系方式:站内信,qq:599965176
參考:
https://greatmaps.codeplex.com/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
http://www.cnblogs.com/luxiaoxun/p/3802559.html