[交通导航] 造福全人类,制作brut google maps离线地图(更新ZIP压缩挂载)10-11-19 更新: ------------------------------------------------------------------------------------- 新版本的 brut google maps 已直接支持ZIP格式地图,但似乎对容量非常大的ZIP地图支持不好 而且比较郁闷的是增加新地图需要重新压缩ZIP文件,这个比较麻烦,但使用起来比较简单 新版本的 brut google maps 的默认地图格式已经更改,将下载下来的地图压缩成ZIP格式 (压缩方式改为 ”不压缩“ 或者 ”存储“),存到下面的路径: 如果用新的 andnav 格式,ZIP文件为: /sdcard/brut.googlemaps/tiles/map-zh_CN-andnav.zip 如果用老的地图格式,ZIP文件为: /sdcard/brut.googlemaps/tiles/map-zh_CN.zip 其中,zh_CN 为手机的 locale 地区的名称,如果手机ROM是英文的可以改成:en_US,如果是其它国家或地区, 则需要改成相应的 locale 名称 新本 brut google maps 下载链接: http://bbs./viewthread.php?tid=300658 下载新地图格式的 gmapmaker 也需要更新,新的 gmapmaker 已经放到 115 网盘: http://u./file/f16cdbe6f2 ------------------------------------------------------------------------------------- 前几天看到机锋上的这个google maps离线地图包下载帖子: http://bbs./viewthread.php?tid=255353 下载下来后,发现这个离线地图包有几个缺点: 1、文件太大,有些不需要的地方也加进去了 2、缩放级别太少,无法对需要的位置进行比较好的放大缩小处理 3、无法自己制作 因此,google并亲自实验了N天之后,终于掌握自己制作 brut Google maps 离线地图包的方法。 可以做到完全在电脑上制作,不受手机网络限制,并能根据自己的需要选择范围进行制作,可以任意选择放大缩小级别范围。 注意:此离线地图包是在 Google.Maps.v4.4.0.4414-brut16 版本上测试通过的, 请先安装 brut 版 google maps 以支持保存和调阅离线地图文件,安装方法请自己搜索论坛,谢谢。。 下面描述步骤: 1、首先下载修改过的支持 brut google maps 的 gmapmaker 工具,由于刚开始实验时产生的地图为中英文混杂的, 因此我对这个工具又做了点修改,改为调用 Google maps china 纯中文地图,下载链接,解压缩,里面会有 gmapmaker.exe 文件和相关的文件: http://u./file/f1b11d8b6e 注:如果哪位机油想用原版的中英文混杂的 google maps 地图,可以将压缩包中的 gMapMaker.exe.config.bak 改为 gMapMaker.exe.config 有的机油不想用 google maps china,而需要使用其它的地图源,可以自己修改 gMapMaker.exe.config 配置文件中的 “<setting name="GoogleMapURL" serializeAs="String">” 这一块里的 value 值来实现。 现贴上使用 google 卫星地图的配置文件: gMapMakerConfig-GoogleStat.rar (1.43 KB) 需要注意的如果使用这个配置文件产生的卫星地图文件,需要放到 “SD卡\离线地图目录\tiles\satellite-zh_CN" 目录中,而不是 map-zh_CN 了。 2、访问这个网站:http:///,图示如下: 鼠标点击选择你要制作的地图范围,zoom level 设置缩放的级别范围,一般最大到20,level of details 可以选择为 slow and detailed, type of maps 选择为 google road maps (china),然后点击 “Generate !” 按钮,稍等片刻,下载产生的 map 文件。 3、使用文本编辑器打开下载的 map 文件,将第一行改为:BrutMap,保存,例如我的 map 文件内容为:
4、运行支持 brut google maps 的 gmapmaker,截图如下: cache folder 中选择离线地图保存的目录,max parallel downloads 设置下载最大并发线程,网络好的话可以设置为 10, 选中 group by zoom,最重要的 operating mode 改为最后一项:burtmaps mode, download tiles using a .map file, hash size 和 tiles per file 都设置为 1,然后点击“GO”按钮,会让你选择 map 文件,选择刚才下载并修改过的 map 文件, 然后就会开始自动下载离线地图文件了,剩下就是等待了。。。。 5、全部下载完毕之后,你所选择的地图保存目录下会产生一个 MGMapsCache 文件夹,目录结果如下: 删除这个 MGMapsCache 文件夹下的 cache.conf 文件(其实不删也无所谓),将 MGMapsCache 下的所有文件夹移动到 手机SD卡的 brut google maps 的离线地图目录中。 如果是 google maps 4.4 brut 版本,目录应该是:\brut.googlemaps,如果是 google maps 原版 4.5.0 版本,应该是:\com.google.android.apps.maps 拷贝到 “SD卡\上面的离线地图目录\tiles\map-zh_CN” 目录中,目录结构如下: 6、打开 android 设置 - 应用程序 - 管理应用程序,选择 地图或者 maps,清除缓存,然后重新打开 brut google maps, 确保在设置 - 更多 - 高级设置 里启用了 brut 的“从缓存读取地图“ 和 “保存地图缓存“, 这样就可以在没有网络的情况下离线定位浏览 google maps 了。。。 感谢各位机油支持,已用 Google.Maps.v4.4.0.4414-brut16 版本在 GPS 开启的情况下加这个离线地图包测试, 选中了 brut 的漂移修正,几乎完美,HOHO。。。 关于地图的大小需要注意: 如果选择的区域较大,或者缩放级别较多的话(经过实际测试,到19级就已经非常详细了),产生的文件会非常零散,拷贝时间也会比较长, 请各位机油自己权衡哦。。。 下载拷贝完之后可以对存储地图的分区和SD卡分区做下碎片整理,哈哈 以下ZIP压缩挂载的操作需要root权限,而且比较复杂,如果怕麻烦或者不好root操作,大可略过,请酌情考虑,HOHO。。。 2010-10-21 更新: =============================================================== =============================================================== 已经实验成功通过ZIP压缩文件挂载地图,这样不但可以减少空间占用,而且会减少SD卡分区的碎片,同时各位机油方便共享各省市的离线地图数据 下面以我所在的常熟市地图为例,简单介绍步骤如下 (下面新创建的城市目录名请自己更换,我是以我现在所在的常熟 - ChangShu 为例子的) (下面的都是以交通地图为例的:map-zh_CN,如果要卫星地图,将目录换为:satellite-zh_CN) (此部分操作需要对linux、adb等使用等有一定了解,同时你所用的android需要fuse文件系统支持,这个一般都已经有了): 1、将 map-zh_CN 目录下的所有数字分组的目录压缩成一个ZIP文件,直接压缩所有数字目录,不能对上一层目录进行压缩 (建议通过7zip或者winzip进行压缩,winrar文件太大处理不了),效果如下: 压缩前的0~19级的20个数字分组大小: 压缩后的ChangShu.zip大小: 2、下载我自己静态编译的两个 fuse 文件系统程序(fuse-zip 和 unionfs), 上传到手机的 /system/xbin 目录中,并增加可执行权限(建议,运行起来方便,也可以放在别处): fuse-progs.rar (573.21 KB) 3、将SD卡的 brut.googlemaps 目录结构通过 adb shell 或者其它终端修改如下: --- 准备存放ZIP压缩地图文件的目录: mkdir /sdcard/brut.googlemaps/datas --- 将ZIP压缩文件(例如:ChangShu.zip)拷贝到上面的目录中 --- 创建ZIP地图文件的挂载目录: mkdir /sdcard/brut.googlemaps/mnts mkdir /sdcard/brut.googlemaps/mnts/ChangShu --- 创建在线浏览地图时的缓存地图存放目录: 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、创建一个脚本,方便以后挂载,有条件的机油可以自己修改 boot image 中的 init.rc 脚本来自动挂载(不建议,哈哈) 脚本内容如下: 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压缩文件挂载到相应的城市目录,第二句是将在线缓存地图目录与ZIP缓存目录合并到真正的离线地图目录 为方便各位,将示例脚本上传如下: maps.rar (206 Bytes) 5、运行脚本,测试挂载是否成功: ls /sdcard/brut.googlemaps/tiles/map-zh_CN 如果能看到原来的数字分组目录,说明挂载成功,然后开启地图测试能否使用就行了哈。。。 希望 brut google maps 以后可以直接支持ZIP地图格式,HOHO~~~~ 使用这种压缩挂载方法之后,如果需要增加新的城市地图,下载压缩之后放到 /sdcard/brut.googlemaps/datas 目录, 然后在 /sdcard/brut.googlemaps/mnts 下创建一个新的挂载目录,接着修改脚本,增加新的城市目录,以北京为例: --- 将北京的地图 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/ChangShu fuse-zip -o ro /sdcard/brut.googlemaps/datas/BeiJing.zip /sdcard/brut.googlemaps/mnts/BeiJing unionfs -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 =============================================================== =============================================================== |
|