熱門文章

2010年2月10日 星期三

RMaps 0.7.5.0


RMaps 是一套好用的 Android 離線地圖程式,功能齊全且地圖操作流暢,可以至作者 robert 的 Google Code 網頁下載或直接從 Android Market 下載。

RMaps 0.7.5.0 重要功能條列如下:
  • 瀏覽離線地圖:需要先從 PC 下載地圖並儲存進資料庫後,放置於 SD 卡,然後到 RMaps 的設定裡啟用新增加的資料庫 (*.sqlitedb)。
  • 瀏覽線上地圖 (需要網路連線,地圖會暫存於手機內建記憶體,不建議使用)。
  • 搜尋地點功能 (需要網路連線)。
  • 可在地圖上秀出 Compass (指南針)。
  • 具備 Driving direction up (旋轉地圖使得行進方向永遠向上) 的功能。
  • 具備 POI (Point of Interest,景點、興趣點) 及 POI 類別之管理功能,包含新增、編輯、隱藏單一 POI 或整個 POI 類別。


RMaps 0.7.5.0 支援 SQLite 格式的離線地圖資料庫,製作方法請參考本網站教學:
新版離線地圖製作軟體 Mobile Atlas Creator 1.7

2010年2月7日 星期日

PC 端離線地圖製作軟體 Mobile Atlas Creator 1.7


[離線地圖製作軟體]
專業的離線地圖製作軟體 TrekBuddy Atlas Creator (TAC) 從 2010 年起釋出全新版本,重要更新條列如下:
  • 改名為 Mobile Atlas Creator (MOBAC),以反映該程式能下載各種線上地圖,並儲存為不同格式的離線檔,讓不同的手機程式與 GPS 裝置使用的特性。
  • 下載的離線圖檔 (tiles) 不再暫存於硬碟中,而是儲存於資料庫 (BerkelyDB),節省了相當多的硬碟空間。 (註)
  • 舊版 tilestore 目錄內的圖檔 (tiles) 無法直接存入新的資料庫,故請將 Mobile Atlas Creator 解壓縮至新目錄。
  • 舊版的設定檔 (tac-profile*.xml) 可以沿用,直接複製至 Mobile Atlas Creator 目錄內即可。
註:如果您是 Windows 用戶,建議用 MOBAC 取代舊的 TAC,因為 PC 下載地圖時的暫存圖檔(PNG)可能會超級多(數十萬),TAC 直接將這些暫存圖檔放在 "tilestore\Google Maps" 目錄下,當您不小心點進那個目錄,Windows 檔案總管會被咬住,將來要刪除那個目錄時也會等超級久;相較之下,新版 MOBAC 將暫存圖檔存進了資料庫,則沒有上述問題。


圖:Mobile Atlas Creator 1.7


[Mobile Atlas Creator 使用教學]
以下為製作離線地圖資料庫 BigPlanet_maps.sqlitedb,供 Android 手機程式 Big Planet TracksRMaps 使用的詳細步驟:
  1. 安裝 Java 執行環境 (JRE 或 JDK,至少為 JRE v1.6.0_14 或更高版本)。
  2. 下載並解壓縮 Mobile_Atlas_Creator_1.7_SQLite.zip (Official Edition + SQLite Libs + Settings for "Big Planet SQLite" format)。
  3. 將對應您 OS 平台的 libsqlite_jni 複製至程式根目錄 (Mobile_Atlas_Creator.jar 所在目錄)。
  4. 在 Windows 平台請執行 Mobile Atlas Creator.exe (Linux 平台請執行 start.sh)。
  5. 執行程式後,使用滑鼠左鍵圈選下載範圍,右鍵移動地圖。
  6. 選擇地圖縮放層級 (Zoom Levels) 後,點擊 Add selection 按鈕。
  7. 確認 Map Source 為 Google Maps (預設值,也可以選其他種類地圖)。
  8. 確認 Atlas settings 的 Format 為 BigPlanet SQLite (預設值)。
  9. 點擊 Create atlas 按鈕,開始下載地圖。
  10. 下載完成點擊 Open Atlas Folder 按鈕,將看到 BigPlanet_maps.sqlitedb 地圖資料庫。
  11. 將 BigPlanet_maps.sqlitedb 複製至 Android 手機的 SD 卡目錄 "/sdcard/RMaps/maps/Big Planet Tracks.sqlitedb" (可以用其它檔名,只要副檔名正確即可)。
  12. 打開手機 GPS 功能,執行 Big Planet Tracks 或 RMaps 後,地圖將移動至您所在位置 (假如您已成功從網路或 GPS 衛星接收到經緯度座標)。

[問題集錦] 8/21 update
  • RMaps 需要手動至設定裡"啟用"新增的離線地圖資料庫,方能選擇該離線地圖。
    • More => Settings => User defined maps => [choose a map] => Enabled map
  • RMaps 開啟後持續看到 loading 底圖時。
    • 首次使用新的離線地圖,會花一段時間建立索引,時間長短取決於資料庫大小。
    • 若很久之後還是持續看到 loading 表示該"縮放層級"的"區域"沒有離線圖資,並非真的在讀取。
      • 很多新手這裡卡關,特別舉例說明。
      • Q:我人在台灣,做的是義大利的離線地圖,手機 RMaps 一直出現 loading 的小圈圈,一個小時過去了還是沒顥示,但之前用台灣離線地圖測試時是可以的??
      • A:RMaps 顯示離線地圖是根據經緯度座標來定位地圖的。
        假設您人在台北測試,GPS 抓到的經緯度是台北,所以 RMaps 可以顯示台灣離線地圖;同理,人在台北不會抓到義大利經緯度,自然無法顯示義大利離線地圖。
      • 解決方法:
        1. 增加 Zoom Levels (縮放層級) 0-7 的世界地圖至義大利離線地圖資料庫裡,在台灣測試時就可以先縮小至 level 1 的世界地圖,將地圖手動移至歐洲義大利,再放大至您抓取的義大利地圖,檢查地圖是否正確。
        2. 假設義大利離線地圖資料庫檔名為 Google.Maps.Italy.sqlitedb,請改名為 BigPlanet_maps.sqlitedb 並移回 \atlases\ 目錄裡,再次圈選 0-7 的世界地圖並執行 Create atlas,世界地圖就會合併至 BigPlanet_maps.sqlitedb,需要的話再改名回 Google.Maps.Italy.sqlitedb,這份資料庫就包含義大利與世界地圖了。
        3. 一般來說,不管您下載哪個區域的地圖,建議您同時下載 0-7 的世界地圖,這個範圍圖資小於 50 MB,佔不了太多空間,卻可以避免很多奇怪問題,特別是您使用 Big Plant Tracks 的話,請照辦。
  • Mobile Atlas Creator 點擊 Create atlas 按鈕,發生 SQLite not available 的錯誤訊息時:
  • Mobile Atlas Creator 發生記憶體不足 (Out of memory) 時:
    • Linux 平台,請修改檔案 start.sh,加大 Java VM 的最大可用記憶體如 -Xmx1536M 或更大,然後執行 start.sh
    • Windows 平台,請新增檔案 start.cmd,加入以下內容至同一行後執行 start.cmd
      start javaw -Xms64M -Xmx1536M -jar Mobile_Atlas_Creator.jar
    • 如果加大記憶體依舊無效,請選擇較小地圖範圍或較少縮放層級,然後分次下載。
  • Mobile Atlas Creator 下載發生 "Error - tiles are missing - do you want to continue anyway?" 時:
    • 請選擇 yes,然後勾選 Ignore download errors and continue automatically 即可。

[Mobile Atlas Creator 運作原理] 8/21 add
  1. 每次執行 Create atlas 時,下載的地圖都會放一份至 "\tilestore\db-Google Maps\" 目錄下的 BerkelyDB 資料庫中。(此例為下載Google地圖)
  2. 之後分階段將圖檔從 BerkelyDB 儲存到路徑為 "\atlases\BigPlanet_maps.sqlitedb" 的 SQLite 資料庫中。(因為 Android 手機預設只認得 SQLite 資料庫格式)
  3. 下一次重新執行 MOBAC 程式,圈選好地圖範圍並執行 Create atlas 時,MOBAC 會先檢查 BerkelyDB 內是否已有同樣地圖區塊: (例如第一次圈選台北,第二次圈選台灣,則部份範圍重複)
    3.1 若地圖區塊沒有重複的話,就直接下載該地圖區塊 (*.png)。
    3.2 若地圖區塊重複的話,再檢查日期,若網站的較新,則下載地圖區塊並存入 BerkelyDB,日期一樣則不會下載地圖。(即不會浪費網路流量的意思)
  4. 同第2步驟,分階段將圖檔從 BerkelyDB 儲存到 SQLite 資料庫。
  5. (之後第3、4步驟一直重複)

[延伸閱讀]