Android地圖開發之地圖的選擇

來源:互聯網
上載者:User

標籤:

  做lbs開發差不多快2年了,地圖相關的產品也差不多做了3個了,用到過的地圖包括google地圖、高德地圖、百度地圖、圖吧、Osmdroid,今天總結下,方便大家開發時選擇合適的地圖。

  首先說定位模組選擇,高德地圖、百度地圖現在都有了單獨的地位sdk,且都支援全球定位,都是非常不錯的選擇。我現在做的項目對定位要求很高,現在的選擇是gps定位使用系統定位方式,基站定位使用百度定位,gps串連成功使用系統定位介面,gps斷開切換到百度基站定位。

  gps定位,百度和高德都用過,但是測試發現沒有同類產品統計的精度高,而且經常在有些機型出現問題,例如有些手機定位時,狀態列定位狀態總是一閃一閃的,經常掉線,記錄軌跡飄移較大,後來換成系統介面後,穩定很多,使用者也反饋記錄的軌跡精確很多。還有百度地圖現在使用的定位sdk,返回的資料沒有海拔資料,這也是不使用百度gps定位的一個原因,不知道現在有沒修複。

  基站定位,感覺百度比高德資料返回的更快速點,位址解析或是搜尋也是,不知道是不是百度的資料檢索及大資料處理能力強點,不過也沒仔細的對比測試,可能感覺不準確。

  其次說下地圖的選擇,我現在的產品使用的是百度向量地圖和Osmdroid柵格地圖,因為主要是做戶外地圖,所以衛星地圖和等高線圖是必備,然後考慮到向量地圖資料量很小,所以也加上了,現在可以做到百度向量、google衛星地圖和OpenCycleMap一鍵切換,使用了2個地圖架構,介面封裝挺痛苦的。

  如果僅是做中國的地圖產品,百度、高德都是不錯的選擇,這2個現在的介面都基本和googel的介面一樣了,所以3者之間可以非常快速的切換。穩定性方面,我使用後的感受是google地圖>高德>百度,我自己有開發一個應用,最開始採用google地圖,後來google被牆了,換成高德,以前在google上使用沒問題的地方,切換後就報異常了,多了一些限制,比如向地圖添加一段軌跡,軌跡點必須大於2,並且必須設定表徵圖,不然就報異常,然而google就可以先添加,再設定資料(記錄軌跡時,剛開始沒軌跡點,所以會先向地圖添加一個軌跡,然後定位到了再不斷更新軌跡點資料)。百度最近一段時間迭代非常快,有時2-3星期就更新一個版本,經常更新後有一些問題,而且有幾次介面改動非常大(這個最坑爹了,給開發帶來了不少額外工作量),基本就是將以前百度的介面否定了,然後改成了google得介面,在介面方面,google還是牛一點,介面都成了參考標準。另外,有一個同事最近在使用高德地圖時,發現居然沒有MapViewLayoutParams,我找了下高德的介面也好像確實沒有,官方參考例子也沒有相關例子,這樣在地圖某一個座標添加一個較複雜的View就很麻煩了,不知道是不是有其他方式。

  如果要做面向全球服務的產品,在Android上現在好像還沒有特別好的選擇。google被牆,而且必須手機要有Google Service Framework,百度和高德等國內地圖都只有中國的資料,似乎只有OpenStreetMap支援全球資料了。OpenStreetMap本身支援很多圖源,資料全球都有,不過主要是面向戶外的,城市地圖沒有其他地圖那麼精細(當然也可以添加google的普通和衛星瓦片地圖的圖源),然後可以自訂一些其他圖源,有興趣的朋友可以看下github上面的一個開源架構osmdroid,這個架構網上有一些介紹的文章。

  圖吧地圖,以前公司的幾個產品用的是圖吧的地圖,做過一段時間的維護,和其他地圖沒什麼有特色的地方,現在好像還沒向量地圖,sdk很久沒更新了。

  最後,這幾個地圖做一個總結:

  googel地圖:gps座標系,最穩定,衛星地圖精細,但是在中國服務被牆,且手機必須要有Google Service Framework,在中國基本不FQ不root不可用;

  高德地圖:火星座標系(gcj),穩定性不錯,支援全球定位,衛星地圖不精細(很多戶外地區放大沒衛星資料),不過最近有同事反饋沒有MapViewLayoutParams,可能在地圖某個座標添加較複雜視圖比較麻煩,不知道是否有更新或者其他實現方式,大家選擇時可以先研究下。還有預設UI感覺沒百度精細漂亮。

  高德地圖我在github上面有一個開源小項目TheSceneryAlong:https://github.com/John-Chen/TheSceneryAlong,大家可以參考下;

  百度地圖:百度座標系,衛星地圖不精細(很多戶外地區放大沒衛星資料),版本迭代較頻繁,不過最新版本已經很穩定了,支援全球定位,功能迭代較快,地圖資料載入很快。

  Osmdroid:柵格地圖,gps座標系,可以自訂添加其他圖源(可能其他圖源得先轉換座標系,例如google地圖圖源得先將gps座標轉換成火星座標,再在地圖顯示),有開源架構。

  除了使用sdk載入顯示地圖外,應該也可以通過webView載入map,通過js控制地圖,對於地圖圖層較為簡單的可以考慮下。

  嗯,先總結到這裡,後面想到其他的再添加。如果寫的有什麼問題,歡迎交流指教。

 

Android地圖開發之地圖的選擇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.