本帖最后由 qexing 于 2011-1-19 20:51 編輯 10-11-19 更新:
-------------------------------------------------------------------------------------
新版本的 brut google maps 已直接支持ZIP格式地圖,但似乎對容量非常大的ZIP地圖支持不好
而且比較郁悶的是增加新地圖需要重新壓縮ZIP文件,這個比較麻煩,但使用起來比較簡單
新版本的 brut google maps 的默認(rèn)地圖格式已經(jīng)更改,將
下載下來的地圖壓縮成ZIP格式
(壓縮方式改為 ”不壓縮“ 或者 ”存儲“),存到下面的路徑:
如果用新的 andnav 格式,ZIP文件為:
/sdcard/brut.googlemaps/tiles/map-zh_CN-andnav.zip
如果用老的地圖格式,ZIP文件為:
/sdcard/brut.googlemaps/tiles/map-zh_CN.zip
其中,zh_CN 為
手機的 locale 地區(qū)的名稱,如果手機
ROM是英文的可以改成:en_US,如果是其它國家或地區(qū),
則需要改成相應(yīng)的 locale 名稱
新本 brut google maps 下載鏈接:
http://bbs.gfan.com/viewthread.php?tid=300658下載新地圖格式的 gmapmaker 也需要更新,新的 gmapmaker 已經(jīng)放到 115 網(wǎng)盤:
http://u.115.com/file/f16cdbe6f2-------------------------------------------------------------------------------------
前幾天看到機鋒上的這個google maps
離線地圖包下載帖子:
http://bbs.gfan.com/viewthread.php?tid=255353下載下來后,發(fā)現(xiàn)這個
離線地圖包有幾個缺點:
1、文件太大,有些不需要的地方也加進(jìn)去了
2、縮放級別太少,無法對需要的位置進(jìn)行比較好的放大縮小處理
3、無法自己制作
因此,google并親自實驗了N天之后,終于掌握自己制作 brut Google maps
離線地圖包的方法。
可以做到完全在電腦上制作,不受手機網(wǎng)絡(luò)限制,并能根據(jù)自己的需要選擇范圍進(jìn)行制作,可以任意選擇放大縮小級別范圍。注意:此離線地圖包是在 Google.Maps.v4.4.0.4414-brut16 版本上測試通過的,請先安裝 brut 版 google maps 以支持保存和調(diào)閱離線地圖文件,安裝方法請自己搜索論壇,謝謝。。下面描述步驟:
1、首先下載修改過的支持 brut google maps 的 gmapmaker 工具,由于剛開始實驗時產(chǎn)生的地圖為中英文混雜的,
因此我對這個工具又做了點修改,改為調(diào)用 Google maps china 純中文地圖,下載鏈接,解壓縮,里面會有 gmapmaker.exe 文件和相關(guān)的文件:
http://u.115.com/file/f1b11d8b6e注:如果哪位機油想用原版的中英文混雜的 google maps 地圖,可以將壓縮包中的 gMapMaker.exe.config.bak 改為 gMapMaker.exe.config有的機油不想用 google maps china,而需要使用其它的地圖源,可以自己修改
gMapMaker.exe.config 配置文件中的
“<setting name="GoogleMapURL" serializeAs="String">” 這一塊里的 value 值來實現(xiàn)。
現(xiàn)貼上使用 google 衛(wèi)星地圖的配置文件:
gMapMakerConfig-GoogleStat.rar (1.43 KB)
需要注意的如果使用這個配置文件產(chǎn)生的衛(wèi)星地圖文件,需要放到 “SD卡\
離線地圖目錄\tiles\satellite-zh_CN" 目錄中,而不是 map-zh_CN 了。
2、訪問這個網(wǎng)站:
http://mapcacher.com/,圖示如下:
鼠標(biāo)點擊選擇你要制作的地圖范圍,zoom level 設(shè)置縮放的級別范圍,一般最大到20,level of details 可以選擇為 slow and detailed,
type of maps 選擇為 google road maps (china),然后點擊 “Generate !” 按鈕,稍等片刻,下載產(chǎn)生的 map 文件。
3、使用文本編輯器打開下載的 map 文件,將第一行改為:
BrutMap,保存,例如我的 map 文件內(nèi)容為:
- BrutMap
- 15-20: 31.59867813336546, 120.78472137451172 : 31.606280782822488, 120.78643798828125
- 15-20: 31.59867813336546, 120.78643798828125 : 31.605988373227984, 120.7888412475586
- 15-20: 31.59897054295996, 120.7888412475586 : 31.605988373227984, 120.79570770263672
- 15-20: 31.59897054295996, 120.79570770263672 : 31.60481873484998, 120.79605102539062
- 15-20: 31.59897054295996, 120.79605102539062 : 31.59926295255446, 120.79639434814453
復(fù)制代碼4、運行支持 brut google maps 的 gmapmaker,截圖如下:
cache folder 中選擇
離線地圖保存的目錄,max parallel downloads 設(shè)置下載最大并發(fā)線程,網(wǎng)絡(luò)好的話可以設(shè)置為 10,
選中 group by zoom,最重要的 operating mode 改為最后一項:burtmaps mode, download tiles using a .map file,
hash size 和 tiles per file 都設(shè)置為 1,然后點擊“GO”按鈕,會讓你選擇 map 文件,選擇剛才下載
并修改過的 map 文件,
然后就會開始自動下載
離線地圖文件了,剩下就是等待了。。。。
5、全部下載完畢之后,你所選擇的地圖保存目錄下會產(chǎn)生一個
MGMapsCache 文件夾,目錄結(jié)果如下:
刪除這個 MGMapsCache 文件夾下的 cache.conf 文件(其實不刪也無所謂),將 MGMapsCache 下的所有文件夾移動到
手機SD卡的 brut google maps 的
離線地圖目錄中。
如果是 google maps 4.4 brut 版本,目錄應(yīng)該是:
\brut.googlemaps,如果是 google maps 原版 4.5.0 版本,應(yīng)該是:
\com.google.android.apps.maps拷貝到 “SD卡\
上面的離線地圖目錄\tiles\map-zh_CN” 目錄中,目錄結(jié)構(gòu)如下:
6、打開 android 設(shè)置 - 應(yīng)用程序 - 管理應(yīng)用程序,選擇 地圖或者 maps,清除緩存,然后重新打開 brut google maps,
確保在設(shè)置 - 更
多 - 高級設(shè)置 里啟用了 brut 的“從緩存讀取地圖“ 和 “保存地圖緩存“,
這樣就可以在沒有網(wǎng)絡(luò)的情況下離線定位瀏覽 google maps 了。。。
感謝各位機油支持,已用 Google.Maps.v4.4.0.4414-brut16 版本在 GPS 開啟的情況下加這個離線地圖包測試,選中了 brut 的漂移修正,幾乎完美,HOHO。。。
關(guān)于地圖的大小需要注意:
如果選擇的區(qū)域較大,或者縮放級別較多的話(經(jīng)過實際測試,到19級就已經(jīng)非常詳細(xì)了),產(chǎn)生的文件會非常零散,拷貝時間也會比較長,請各位機油自己權(quán)衡哦。。。下載拷貝完之后可以對存儲地圖的分區(qū)和SD卡分區(qū)做下碎片整理,哈哈以下ZIP壓縮掛載的操作需要root權(quán)限,而且比較復(fù)雜,如果怕麻煩或者不好root操作,大可略過,請酌情考慮,HOHO。。。2010-10-21 更新:==============================================================================================================================已經(jīng)實驗成功通過ZIP壓縮文件掛載地圖,這樣不但可以減少空間占用,而且會減少SD卡分區(qū)的碎片,同時各位機油方便共享各省市的離線地圖數(shù)據(jù)下面以我所在的常熟市地圖為例,簡單介紹步驟如下
(下面新創(chuàng)建的城市目錄名請自己更換,我是以我現(xiàn)在所在的常熟 - ChangShu 為例子的)
(下面的都是以交通地圖為例的:map-zh_CN
,如果要衛(wèi)星地圖,將目錄換為:satellite-zh_CN
)
(此部分操作需要對linux、adb等使用等有一定了解,同時你所用的android需要fuse文件系統(tǒng)支持,這個一般都已經(jīng)有了):1、將 map-zh_CN 目錄下的所有數(shù)字分組的目錄壓縮成一個ZIP文件,
直接壓縮所有數(shù)字目錄,不能對上一層目錄進(jìn)行壓縮(建議通過7zip或者winzip進(jìn)行壓縮,winrar文件太大處理不了),效果如下:
壓縮前的0~19級的20個數(shù)字分組大?。?br>
壓縮后的ChangShu.zip大?。?br>
2、下載我自己靜態(tài)編譯的兩個 fuse 文件系統(tǒng)程序(fuse-zip 和 unionfs),
上傳到手機的 /system/xbin 目錄中,并增加可執(zhí)行權(quán)限(建議,運行起來方便,也可以放在別處):
fuse-progs.rar (573.21 KB)
3、將SD卡的
brut.googlemaps 目錄結(jié)構(gòu)通過 adb shell 或者其它終端修改如下
:--- 準(zhǔn)備存放ZIP壓縮地圖文件的目錄:
mkdir /sdcard/brut.googlemaps/datas
--- 將ZIP壓縮文件(例如:ChangShu.zip)拷貝到上面的目錄中
--- 創(chuàng)建ZIP地圖文件的掛載目錄:
mkdir /sdcard/brut.googlemaps/mnts
mkdir /sdcard/brut.googlemaps/mnts/ChangShu
--- 創(chuàng)建
在線瀏覽地圖時的緩存地圖存放目錄:
mkdir /sdcard/brut.googlemaps/real
mkdir /sdcard/brut.googlemaps/real/map-zh_CN
--- 將地圖目錄中的所有其它緩存文件移動到上面的目錄
busybox mv /sdcard/brut.googlemaps/tiles/map-zh_CN/* /sdcard/brut.googlemaps/real/map-zh_CN
4、創(chuàng)建一個腳本,方便以后掛載,有條件的機油可以自己修改 boot image 中的 init.rc 腳本來自動掛載(不建議,哈哈)
腳本內(nèi)容如下:
fuse-zip -o ro /sdcard/brut.googlemaps/datas/ChangShu.zip /sdcard/brut.googlemaps/mnts/ChangShu
unionfs -o allow_other,nonempty /sdcard/brut.googlemaps/real/map-zh_CN=rw:/sdcard/brut.googlemaps/mnts/ChangShu=ro /sdcard/brut.googlemaps/tiles/map-zh_CN
第一句是將ZIP壓縮文件掛載到相應(yīng)的城市目錄,第二句是將在線緩存地圖目錄與ZIP緩存目錄合并到真正的
離線地圖目錄
為方便各位,將示例腳本上傳如下:
maps.rar (206 Bytes)
5、運行腳本,測試掛載是否成功:
ls /sdcard/brut.googlemaps/tiles/map-zh_CN
如果能看到原來的數(shù)字分組目錄,說明掛載成功,然后開啟地圖測試能否使用就行了哈。。。希望 brut google maps 以后可以直接支持ZIP地圖格式,HOHO~~~~使用這種壓縮掛載方法之后,如果需要增加新的城市地圖,下載壓縮之后放到 /sdcard/brut.googlemaps/datas 目錄,然后在 /sdcard/brut.googlemaps/mnts 下創(chuàng)建一個新的掛載目錄,接著修改腳本,增加新的城市目錄,以北京為例:--- 將北京的地圖 BeiJing.zip 拷貝到 /sdcard/brut.googlemaps/datas 下mkdir /sdcard/brut.googlemaps/mnts/BeiJing將腳本改為(需要注意命令格式):fuse-zip -o ro /sdcard/brut.googlemaps/datas/ChangShu.zip /sdcard/brut.googlemaps/mnts/ChangShufuse-zip -o ro /sdcard/brut.googlemaps/datas/BeiJing.zip /sdcard/brut.googlemaps/mnts/BeiJingunionfs -o allow_other,nonempty /sdcard/brut.googlemaps/real/map-zh_CN=rw:/sdcard/brut.googlemaps/mnts/ChangShu=ro:/sdcard/brut.googlemaps/mnts/BeiJing=ro /sdcard/brut.googlemaps/tiles/map-zh_CN==============================================================================================================================