南京地铁建设集团:造福全人类,制作brut google maps离线地图(更新ZIP压缩挂载)

来源:百度文库 编辑:中财网 时间:2024/05/07 18:57:11

[交通导航] 造福全人类,制作brut google maps离线地图(更新ZIP压缩挂载)

google, maps, 电脑, 离线 本帖最后由 qexing 于 2011-1-19 20:51 编辑

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.gfan.com/viewthread.php?tid=300658

下载新地图格式的 gmapmaker 也需要更新,新的 gmapmaker 已经放到 115 网盘:
http://u.115.com/file/f16cdbe6f2
-------------------------------------------------------------------------------------



前几天看到机锋上的这个google maps离线地图包下载帖子:
http://bbs.gfan.com/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.115.com/file/f1b11d8b6e

注:如果哪位机油想用原版的中英文混杂的 google maps 地图,可以将压缩包中的 gMapMaker.exe.config.bak 改为 gMapMaker.exe.config

有的机油不想用 google maps china,而需要使用其它的地图源,可以自己修改 gMapMaker.exe.config 配置文件中的
” 这一块里的 value 值来实现。

现贴上使用 google 卫星地图的配置文件:
gMapMakerConfig-GoogleStat.rar (1.43 KB)
需要注意的如果使用这个配置文件产生的卫星地图文件,需要放到 “SD卡\离线地图目录\tiles\satellite-zh_CN" 目录中,而不是 map-zh_CN 了。

2、访问这个网站:http://mapcacher.com/,图示如下:


鼠标点击选择你要制作的地图范围,zoom level 设置缩放的级别范围,一般最大到20,level of details 可以选择为 slow and detailed,
type of maps 选择为 google road maps (china),然后点击 “Generate !” 按钮,稍等片刻,下载产生的 map 文件。

3、使用文本编辑器打开下载的 map 文件,将第一行改为:BrutMap,保存,例如我的 map 文件内容为:
  1. BrutMap
  2. 15-20: 31.59867813336546, 120.78472137451172 : 31.606280782822488, 120.78643798828125
  3. 15-20: 31.59867813336546, 120.78643798828125 : 31.605988373227984, 120.7888412475586
  4. 15-20: 31.59897054295996, 120.7888412475586 : 31.605988373227984, 120.79570770263672
  5. 15-20: 31.59897054295996, 120.79570770263672 : 31.60481873484998, 120.79605102539062
  6. 15-20: 31.59897054295996, 120.79605102539062 : 31.59926295255446, 120.79639434814453
复制代码

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

===============================================================
===============================================================