OSMDFE計畫也執行了一段時間,程式架構一改再改也終於訂出一個還算滿意的架構,算是蠻值得慶幸的事~ 所以也已經可以正式Coding啦,目前整個計畫我執行到地圖正常顯示且也已經能將使用者的位置標示在地圖上(如果抓不到的話就顯示整個台灣),雖然還是有些小Bug存在但也找到一些解決方案所以不算有太大的阻礙。既然這是開發日誌還是要放一些我遇到的問題與解決方案囉。
1.首先我遇到的問題就是在OSMDROID中Mapcontroller.setCenter()這個的offset問題,這個問題算折騰我還蠻久的,但還是解決啦~
解決方案:將OSMDROID的版本從4.2更新至4.32.接下來我遇到的就是TileSource的問題,TileSource這個算是兩個問題
(1) Zoom Level調到18(最高)卻只有相較於OpenStreetMap官網的Zoom Level 17的效果
解決方案:使用 mapview.setTilesScaledToDpi(true)來讓TileSource可以吻合螢幕解析度
(2)離線TileSource的問題
其實這不算個問題,只是純粹搞不清楚OSMDROID背後在做什麼而已,舊版的OSMDROID4.2他會一直從伺服器抓資料下來,但到了4.3他就會去自動偵測SD卡中有沒有相對應的Tile,如果有就直接建構就不去伺服器拉資料,真的聰明很多。
3. Marker 問題
解決方案:原本OSMDROID內建的Marker不是很好用,但我在網路上找到一個算擴充包的API叫做 OSMBONUSPACK ,他裡面提供的Marker就非常的易於使用(p.s 因為Google Code要關閉了,而OSMBONUSPACK本來就是託管在Google Code上面所以我就把它的程式碼拉到我的Github了)
參考網址:Google Code:https://code.google.com/p/osmbonuspack/
我轉移到我Github:https://github.com/lienching/osmbonuspack
目前一些基本問題都已經有起色了,我最後來說一下我目前使用了哪些API並他們的功用吧
- OSMDROID_4.3 : 提供MapView、MapController等與OSM互動的工具
- OSMBONUSPACK : 提供一些OSMDROID中沒有的工具或寫得比OSMDROID更好的工具
- geojson : 這是用來解析與製作geojson的api, 我們目前是打算使用geojson來作為資料交換的格式