熱門文章

2009年7月30日 星期四

Android 離線地圖系列(三):離線地圖製作器 TrekBuddy Atlas Creator 1.2 beta 1 (android-map.blogspot.com Version 1)


 TrekBuddy Atlas Creator 為抓取線上地圖(例如Google Maps等),供手機離線使用的優秀軟體。此軟體抓下來的地圖圖檔以各種不同目錄結構儲存,以支援不同手機程式,例如選擇輸出 AndNav2 (一款 Android GPS 導航程式,請參考此網頁) 支援的格式,則目錄結構為 Taiwan_2009-07-30_121510\z\x\y.png.andnav,z 代表地圖縮放層級 (Zoom levels),x, y 代表經緯度,而每個 y.png.andnav 都是 256x256 的 PNG 地圖圖檔,如 9\428\219.png.andnav

 而上一篇文章 Android 手機的離線地圖程式 Big Planet TW 1.2.4,Dr. TYT 介紹過名為 Big Planet TW 的 Android 手機離線地圖軟體,使用 SQLite 資料庫作為離線地圖的儲存方式。

 大家有沒有發現什麼? 就是以上兩種軟體只差一步之遙就能串起來使用,也就是說為了將 TrekBuddy Atlas Creator 抓取的地圖圖檔,從目錄結構存入 SQLite 資料庫供 Big Planet TW 使用,Dr. TYT 寫了一支Java程式 MapsToSQLiteDBCreator.java,後來更將此程式的功能直接整合進 TrekBuddy Atlas Creator 1.2 beta 1,以增加使用上的方便性。

 有興趣的朋友請按此下載 TrekBuddy Atlas Creator 1.2 beta 1 (android-map.blogspot.com Version 1) 直接輸出成 SQLite 地圖資料庫(BigPlanet_maps.sqlitedb),再將此檔案放入 Android 手機的 SD 卡目錄(/sdcard/BigPlanet_maps.sqlitedb),供 Big Planet TW 使用,操作步驟如下:
1. 解壓縮 TrekBuddy_Atlas_Creator_1.2 beta 1 (android-map.blogspot.com Version 1).zip
2. 在 Windows 平台請執行 start.cmd (請確認已安裝 JRE 1.6 )
3. 執行程式後,使用滑鼠左鍵圈選下載範圍,右鍵移動地圖。
4. 選擇地圖縮放層級 (Zoom levels) 後,點擊 Add selection 按紐。
5. 確認 Map Source 為 Google Maps (預設值,當然也可以選其他地圖)。
6. 確認 Atlas settings 的 Format 為 Android BigPlanet SQLite DB (預設值)。
7. 點擊 Create atlas 按紐,開始下載地圖。
8. 當看到圖二表示下載已完成,轉存 SQLite 中;看到圖三表示已生成 BigPlanet_maps.sqlitedb
9. 將 BigPlanet_maps.sqlitedb 放入 Android 手機的 SD 卡目錄(/sdcard/BigPlanet_maps.sqlitedb),供 Big Planet TW 使用。
10. 打開手機GPS功能,執行 Big Planet TW 的 My Location,使地圖移動至您所在位置。

補充訊息:
Zoom level 0-15 的 台灣本島地圖,共有 86,981 個檔案,在電腦裡的實際檔案大小是 229 MB,佔磁碟大小是 503 MB (因為叢集大小4KB,造成空間浪費)。
將數萬個檔案擺進手機(通常SD卡預設叢集大小32KB),空間浪費情形會更嚴重,也會造成手機效能低落。
相對而言,這 86,981 個檔案被存進 SQLite 資料庫,在電腦裡的實際檔案大小為 240 MB,佔磁碟大小亦是 240 MB,擺進手機SD卡還是 240 MB,故 Dr. TYT 極力推薦採用 SQLite 資料庫作為儲存離線地圖的此款 Android 程式 Big Planet TW。


圖一:已下載 Zoom level 0-15 的 台灣本島地圖 70%


圖二:已下載100%,共花費9分鐘。


圖三:將地圖圖檔存入 SQLite 資料庫完畢,共花費3分鐘。


圖四:正常來說不會出現此訊息,若是出現此訊息,則請修改檔案 start.cmd,加大 Java VM 的最大可用記憶體如 -Xmx512M 或更大。

2010/2/7 Update:以上為舊資訊,請參考新版教學網頁

2009年7月28日 星期二

Android 離線地圖系列(二):Android 手機的離線地圖程式 Big Planet TW 1.2.4


 上一篇文章Offline Google Maps on Android (HTC Magic),Dr. TYT 介紹了名為 Big Planet 的 Android 手機離線地圖程式,最大的特色是使用 SQLite 資料庫作為離線地圖的儲存方式,避免為數眾多(上萬)的 PNG 圖檔造成手機效能低落。

 而現有的 Big Planet 1.2.4 只能秀出 hl=en 的台灣中英文 Google 地圖,如底下左圖。
Dr. TYT 將其修改為支援 hl=zh-TW 的台灣全中文 Google 地圖,如底下右圖,若進一步將地圖放大至街道層級,會發現 hl=en 的街道很多都標英文,請自行測試體會箇中差異;Dr. TYT 並將程式裡的Google地圖下載連結(註一)更新為最新參數,以及將 SQLite 資料庫從原本的 maps.data 改名為 BigPlanet_maps.sqlitedb,使語意更直接明顯。


Big Planet 1.2.4
(hl=en 的台灣中英文Google地圖)
Big Planet TW 1.2.4
(hl=zh-TW 的台灣全中文Google地圖)


 Dr. TYT 修改後的版本命名為 Big Planet TW 1.2.4,未來打算持續改版,增加如選擇地圖語系(hl參數)、選擇不同 SQLite 地圖資料庫等各式功能,有興趣的請按此下載 Big Planet TW 1.2.4

 下一篇文章 Dr. TYT 將介紹如何從 PC 下載 Google 地圖,並製作成 SQLite 地圖資料庫,供 Big Planet TW 1.2.4 離線使用,敬請期待。

註一:Google地圖下載連結,例如 http://mt1.google.com/vt/v=w2.100&hl=zh-TW&x=0&y=0&z=0

2009年7月22日 星期三

Android 離線地圖系列(一):比較 Offline Google Maps on Android (HTC Magic)


Dr. TYT 試過的離線版 Google Maps 有以下兩種:

(1) Big Planet 1.2.4 支援GPS地圖位置,適合當作隨身離線地圖。
優點:
1. 移動地圖至我的GPS位置(每次都需手動點選,但省電,因為GPS不用一直開著)。
2. 有Source code,改天來trace一下。
3. 使用 SQLite DB 儲存離線地圖,在 SD 卡內只有 maps.data 一個資料庫檔,所有下載的離線地圖都存這裡,檔案太大時是否有效能問題,還待商榷。
4. 預設為 hl=en 的圖資(台灣地圖為中英文並存),自行修改code後可下載 hl=zh-TW 的圖資(台灣地圖僅有中文)。

缺點:
1. 必須在手機裡下載圖檔,而且每次只能下載同一個zoom層級半徑n公里(自行設定)的圖資,下載速度不快,操作也麻煩。






(2) AndNav2 0.8.7.8 支援GPS導航(需配合網路連線)與離線地圖。
優點:
1. 支援導航,地圖跟隨功能,就是地圖會全自動跟著 GPS 位置移動。
2. 可在 PC 安裝其它軟體(TrekBuddy AtlasCreator for AndNav2)下載圖資,再將圖資放入手機。

缺點:
1. 保持 GPS 開啟狀態才能執行該程式,有耗電疑慮。
2. 圖資直接在 SD 卡內以 256x256 PNG 圖檔儲存,故檔案數目太多,會造成手機掛載 SD 卡變慢。
3. TrekBuddy Atlas Creator 1.1 預設為 hl=en 的圖資,無法修改成 hl=zh-TW 的圖資(可設定,但無效)。

其它:
1. 北台灣圖資(至新竹左右)zoom 0-15 共有13407個檔案,放入 SD 卡後,每次掛載 SD 卡會慢個10秒左右吧! (HTC Magic)
2. 北台灣圖資(至新竹左右)zoom 16 共有39840個檔案,還沒放入 SD 卡測試。





2009年7月12日 星期日

Install HTC Magic Android Driver on Windows 2003


Dr. TYT 的系統是Win2003,無法安裝HTC Magic提供的HTCSync_1.0.1.exe (含開發程式用Android driver)。

但 Dr. TYT 又不想為此重裝OS,故自己try很久後,終於成功將 Android driver 裝進Win2003,這樣就能在Win2003下用 Eclipse 和 android-sdk-windows-1.5_r2 開發Android程式了。

1. Win2003 安裝 HTCSync_1.0.1.exe 會失敗,但沒關係,去C:\Documents and Settings\[YourUserName]\Local Settings\Temp\{6D6664A9-3342-4948-9B7E-034EFE366F0F}\androidusb.INF
將有 androidusb.INF 的目錄複製出來。

2. 先用Windows XP(on My VM)安裝過HTCSync_1.0.1.exe,然後Windows XP的system32目錄裡會有"WdfCoInstaller01007.dll",將此DLL檔拿到Windows 2003上。 (或是Program Files目錄裡有HTC Driver)

3. Win2003 到"裝置管理員"找"USB Mass Storage Device",右鍵選"更新驅動程式",然後指到第一步的androidusb.INF

4. 第3步安裝過程中會說找不到"WdfCoInstaller01007.dll",請指到第2步拿到的檔案,如此就能在Win2003成功安裝Android driver。

5. 接下來Win2003的"裝置管理員"就會多出Android USB Devices (MyHTC),這樣Eclipse和android-sdk就能正確識別HTC Magic(手機要開USB debugging)。

Good Luck.