f/通讯与导航 2013-02-01 03:07

离线地图,Mobile Atlas Creator 1.9.10才是抓图利器啊!

大家都知道Mobile Atlas Creator可以非常方便抓取各种地图,但是在1.9版后改版了,官方取消了很多地图资源(包括Google Maps和Google Ditu),以前也玩过一段离线地图(当时为了川藏还制作了一份G318离线地图,上路才知道,这条道哪要得着图啊...呵呵~)

说正题,1.9版后虽然取消很多地图,但是提供了自定义,也就是你只要能提供各个地图图源的地址(貌似都是通用标准的),就可以“挂”上去,可以任意抓取后制作离线地图(虽然OruxMaps手机版也可以抓离线了,但是速度很慢,而且会丢失瓦片残缺好像..)
最开始我也不知道,是Google到对岸的帖子发现,原帖地址http://tomliu888.blogspot.com/2012/09/mobile-atlas-creator.html感谢原作者(需要fan-qiang),这里分享一下。

原理其实就是利用工具检测浏览器缓存,去拿到你正在浏览的在线地图的url,然后“拼装”成符合Mobile Atlas Creator的配置文件,这样就可以抓取你添加的离线地图了...
我用的是chrome浏览器

然后用chromecacheview查看图源地址

看到Google Ditu的地址为
http://mt0.google.cn/vt/lyrs=m@207000000&hl=zh-CN&gl=CN&src=app&x=416&y=222&z=9&s=Galile
"封装"成Mobile Atlas Creator的格式
http://mt0.google.cn/vt/lyrs=m@207000000&hl=zh-CN&gl=CN&src=app&x={$x}&y={$y}&z={$z}&s=Galile
所有的"&"替换成"&",x、y、z的坐标数据部分替换成{$x}、{$y}、{$z}
其他地图图源照此类推
按照官方格式保存成xxx.xml放到Mobile Atlas Creator的mapsources下就可以
官方格式
<?xml version="1.0" encoding="UTF-8"?>

<customMapSource>

<name>google maps cn</name>

<minZoom>0</minZoom>

<maxZoom>19</maxZoom>

<tileType>png</tileType>

<tileUpdate>None</tileUpdate>

<url>http://你修改好的图源地址</url>

<backgroundColor>#000000</backgroundColor>

</customMapSource>
昨晚试着抓取了MapABC的离线,非常的快,深圳宝安-肇庆市0-16级地图,满速抓取!

截图上速度统计错了,没那么快,大概是100~300K的速度抓取,也没有一个瓦片错误!

Mobile Atlas Creator的用法不熟悉的可以Google,这个方法完全可以抓取Google 地形、Google 卫星...等地图的离线。
如果需要其他地图地址,可发上来一起讨论,分享一下;

Google卫星

Google地形

已归档
点赞 53
107 评论
共 107 条评论
帖子已归档
Avatar
Etrock OP 2013-02-01 03:17

附上弄好的地图配置文件,分别保存成xml文件,放到mapsources下就行
Google卫星可以到20级,但Google地形只有14级的图源,可惜了...
(如果在卫星和地形间连续抓取的话,记得清除一下浏览器缓存,不然会读取浏览器缓存里的同位置图源,也就是可能你选了卫星,但抓出来的是地形..)

Google地图


<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
<name>Google Ditu</name>
<minZoom>0</minZoom>
<maxZoom>18</maxZoom>
<tileType>png</tileType>
<tileUpdate>None</tileUpdate>
<url>http://mt0.google.cn/vt/lyrs=m@207000000&amp;hl=zh-CN&amp;gl=CN&amp;src=app&amp;x={$x}&amp;y={$y}&amp;z={$z}&amp;s=Galile</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>


Google卫星+地名


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>

<name>Google 卫星</name>

<tileType>PNG</tileType>

<layers>

<customMapSource>

<name>Google 卫星图</name>

<minZoom>0</minZoom>

<maxZoom>20</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url>http://mt0.google.cn/vt/lyrs=s@124&amp;hl=zh-CN&amp;gl=CN&amp;src=app&amp;x={$x}&amp;s=&amp;y={$y}&amp;z={$z}&amp;s=Galileo</url>

<backgroundColor>#000000</backgroundColor>

</customMapSource>

<customMapSource>

<name>Google 地名图</name>

<minZoom>0</minZoom>

<maxZoom>20</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url>http://mt0.google.cn/vt/imgtp=png32&amp;lyrs=h@207000000&amp;hl=zh-CN&amp;gl=CN&amp;src=app&amp;x={$x}&amp;y={$y}&amp;z={$z}&amp;s=Galil</url>

</customMapSource>

</layers>
</customMultiLayerMapSource>


Google地形+地名


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>

<name>Google 地形</name>

<tileType>PNG</tileType>

<layers>

<customMapSource>

<name>Google 地形图</name>

<minZoom>0</minZoom>

<maxZoom>14</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url>http://mt3.google.cn/vt/lyrs=t@130,r@207000000&amp;hl=zh-CN&amp;gl=CN&amp;src=app&amp;expIds=201363&amp;x={$x}&amp;s=&amp;y={$y}&amp;z={$z}&amp;s=Galil</url>

<backgroundColor>#000000</backgroundColor>

</customMapSource>

<customMapSource>

<name>Google 地名图</name>

<minZoom>0</minZoom>

<maxZoom>20</maxZoom>

<tileType>PNG</tileType>

<tileUpdate>None</tileUpdate>

<url>http://mt0.google.cn/vt/imgtp=png32&amp;lyrs=h@207000000&amp;hl=zh-CN&amp;gl=CN&amp;src=app&amp;x={$x}&amp;y={$y}&amp;z={$z}&amp;s=Galil</url>

</customMapSource>

</layers>
</customMultiLayerMapSource>


Avatar
笨笨猪1111 Etrock 2013-02-21 07:47

附上弄好的地图配置文件,分别保存成xml文件,放到mapsources下就行

Google卫星+地名
-----------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customMultiLayerMapSource>
<name>Google 卫星</name>
<tileType>PNG</tileType>
<layers>
<customMapSource>
<name>Google 卫星图</name>
<minZoom>0</minZoom>
<maxZoom>20</maxZoom>
<tileType>PNG</tileType>
<tileUpdate>None</tileUpdate>
<url>http://mt0.google.cn/vt/lyrs=s@124&hl=zh-CN&gl=CN&src=app&x={$x}&s=&y={$y}&z={$z}&s=Galileo</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>
<customMapSource>
<name>Google 地名图</name>
<minZoom>0</minZoom>
<maxZoom>20</maxZoom>
<tileType>PNG</tileType>
<tileUpdate>None</tileUpdate>
<url>http://mt0.google.cn/vt/imgtp=png32&lyrs=h@207000000&hl=zh-CN&gl=CN&src=app&x={$x}&y={$y}&z={$z}&s=Galil</url>
</customMapSource>
</layers>
</customMultiLayerMapSource>
-----------------------------------------------------------------------------------

这个卫星图有偏移,而且这两个图层合并之后的文件非常大,比1+1远远的大多了,不推荐。用Oruxmaps自带的Google Hybrid图源非常好,非常快!而且大小就是一个图层。设置如下:
<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
<name>Google Hybrid</name>
<minZoom>0</minZoom>
<maxZoom>20</maxZoom>
<tileType>png</tileType>
<tileUpdate>None</tileUpdate>
<url>http://mt0.google.com/vt/lyrs=s,m&amp;hl=iw&amp;x={$x}&amp;y={$y}&amp;z={$z}</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>

Avatar
小楼一夜闻春雨 笨笨猪1111 2013-12-13 14:27

这个卫星图有偏移,而且这两个图层合并之后的文件非常大,比1+1远远的大多了,不推荐。用Oruxmaps自带的Google Hybrid图源非常好,非常快!而且大小就是一个图层。设置如下:
<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
<name>Google Hybrid</name>
<minZoom>0</minZoom>
<maxZoom>20</maxZoom>
<tileType>png</tileType>
<tileUpdate>None</tileUpdate>
<url>http://mt0.google.com/vt/lyrs=s,m&hl=iw&x={$x}&y={$y}&z={$z}</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>

这个速度飞快,很好用!~
可惜就是国内没有POI信息啊—对面香港的就有。

Avatar
我是大米 Etrock 2014-07-24 03:02

楼主你好,我是个新手,请指教一下,我把你弄好的地图配置文件保存成了一个文件叫abcd.xml,放到了mapsources下,但是打开mobile ac后,从图原选项中却找不到abcd的图啊,请问楼主是什么原因啊。文件名有特殊的要求吗?

Avatar
Etrock OP 2013-02-01 03:18

MapABC


<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>
<name>MAPABC</name>
<minZoom>0</minZoom>
<maxZoom>18</maxZoom>
<tileType>png</tileType>
<tileUpdate>None</tileUpdate>
<url>http://webrd03.is.autonavi.com/appmaptile?x={$x}&amp;y={$y}&amp;z={$z}&amp;lang=zh_cn&amp;size=1&amp;scale=1&amp;style=7</url>
<backgroundColor>#000000</backgroundColor>
</customMapSource>


原帖作者抓的Nokia地图图源


<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>

<name>Nokia Here Map</name>

<minZoom>0</minZoom>

<maxZoom>20</maxZoom>

<tileType>png</tileType>

<tileUpdate>IfNoneMatch</tileUpdate>

<url>http://1.maps.nlp.nokia.com/maptile/2.1/maptile/b9e8949142/normal.day/{$z}/{$x}/{$y}/256/png8?app_id=SqE1xcSngCd3m4a1zEGb&token=r0sR1DzqDkS6sDnh902FWQ&lg=CHI</url>

<backgroundColor>#000000</backgroundColor>
</customMapSource>


Avatar
深圳浪子 2013-02-01 06:44

很不错啊,谢谢无私分享!

Avatar
东北老哥 2013-02-01 09:48

根据楼主的指引,添加了几个图源。
有几个问题:

1、我的win7系统不支持中文的地图名,可能是系统的设置总;
2、图源的脚本有几处小的错误,参考楼主的指引修改后才正常;
3、想加天地图,还没整明白,加不上;
4、其他不知道还有没有可用?

Avatar
Etrock OP 东北老哥 2013-02-01 13:52

xml文件名必须英文名,里面的</name>标签随便
汗,全都错的,已修正..xx(
你说的天地图的我刚才试了下,很奇怪,地址分别是
(地名)
http://tile0.tianditu.com/DataServer?T=tdt_vec_anno_dong_11_18_dyd&X=3344&Y=765&L=12&INDATE=9999-01-01%2000%3A00%3A00

(地图)
http://tile0.tianditu.com/DataServer?T=tdt_vec_dong_11_18_dyd&X=3344&Y=765&L=12&INDATE=9999-01-01%2000%3A00%3A00

填到MOBAC后就是不行,不管是用XML方式,还是官方另一种方式Bean Shell的脚本去加载,都是空白,不知道天地图是什么原因...

Avatar
ssyl Etrock 2013-11-15 04:01

做了几个图确实不错,可惜有个图我做不了,能帮忙搞定吗http://map.enclive.cn/

Avatar
epic ssyl 2013-11-15 16:51

这个海图很有趣. 可惜所用的投影不是web mercator, 而是跟天地图一样的经纬坐标.

Avatar
阿勝 2013-02-01 12:10

感谢楼主无私分享。
菜鸟想问一下如何打开、编辑和保存为官方的xml文件,还请不吝指教。

Avatar
peter-mtbhk 2013-02-01 13:21

用 notepad 儲成文字便可.

有點點小問題, Nokia 是 ok 的.

修正後便可以了 ... :D
把所有 "&" 修正為 "&amp;"
謝謝樓主 :)

Avatar
Etrock OP peter-mtbhk 2013-02-01 14:04

嘿,我也是借花献佛的..
其实只是想简单的做个离线,然后放到OruxMaps,就非常完美了。。(就这样而已)
但我们的郭嘉...唉~
兄弟有什么最简单的方式,将MOBAC抓到的地图(任意格式),简单的一步纠偏吗?
实在非常喜欢OruxMaps...(在折多山垭口第一次拿来测海拔,跟队友1千多块的海拔表一样显示4000多海拔,误差个位数...对这软件无以言表的爱啊...)

目前用RMaps Ext挂着...(感觉这个国人移植的也是超赞,自带纠偏秒杀一切了,还带搜索路线,几乎完美...)
但还是期待OruxMaps....:D

Avatar
神舟0号 2013-02-01 15:21

:D谢谢分享,努力学习中。。。
能帮忙做个香港地政署地图的图源吗?;)
http://www1.map.gov.hk/gih3/view/index.jsp

Avatar
weyawu 2013-02-02 00:41

搜狗地图按此方法怎么写呢?

Avatar
东北老哥 weyawu 2013-02-02 01:57

尝试写了搜狗、百度和天地图的脚本,都不行,也许是没整明白。

Avatar
东北老哥 2013-02-02 02:07

Open Cycle Map ,已测试,可用:
=================================
<?xml version="1.0" encoding="UTF-8"?>
<customMapSource>

<name>Open Cycle Map</name>

<minZoom>1</minZoom>

<maxZoom>18</maxZoom>

<tileType>png</tileType>

<tileUpdate>IfNoneMatch</tileUpdate>

<url>http://tile.opencyclemap.org/cycle/{$z}/{$x}/{$y}.png</url>

<backgroundColor>#000000</backgroundColor>
</customMapSource>

Avatar
seatosky 2013-02-02 02:43

soso卫星图不错,楼主帮测试一下,谢谢

Avatar
东北老哥 2013-02-02 02:57

经测试,OpenCycle Map 和 Google hybrid 做成图源生成ozi 离线地图后无偏移,直接可用。
谷歌地形(Google Terrian)、谷歌卫星图和谷歌地图(Google Ditu)都有偏移,需要校准后才能使用。

Avatar
Etrock OP 东北老哥 2013-02-02 12:39

兄弟给力啊!
这个OpenCycle好像是50米的等高线吧...
比谷歌地形强多了..8D

Avatar
红尘鹤影 2013-02-02 03:39

不得不说,好东西啊,楼主辛苦了:D:D

Avatar
yifou2006 2013-02-02 04:36

好资料
谢谢

Avatar
peter-mtbhk 2013-02-02 05:07

加天地圖 "tianditu.bsh" 就可以了. (檔是某高人的)

/**
Tianditu
**/

name = "TianDiTu";

tileType = "png"; // required; valid values: "jpg" "png" or "gif"

// Default size of each tile is 256x256 pixel
tileSize = 256; // optional
minZoom = 3; // optional
maxZoom = 18; // optional
//tileUpdate = TileUpdate.IfNoneMatch; //
Linear = 1;
tileUpdate = TileUpdate.IfModifiedSince; // optional
backgroundColor = "#ffffff"; // optional - supported since MOBAC 1.9.1

/**
This method is called for each tile: input parameters for this script: "zoom", "x" and "y"
**/
String getTileUrl( int zoom, int x, int y ) {

String url = "http://tile1.tianditu.com/DataServer?T=";

if(zoom > 12)

url += "siwei0608";

else

{

if(zoom > 10)

url +="B0627_EMap1112";

else

url += "A0512_EMap";

}

return url+"&X=" + x + "&Y=" + y + "&L=" + zoom;

//return "http://tile4.tianditu.com/DataServer?T=A0512_EMap&X=92&Y=17&L=7";
}

/**
This method is called also for each tile (implementation optional)
It allows to set HTTP headers like "Referer" or cookies the server
wants to see.
**/
void addHeaders( java.net.HttpURLConnection conn) {

//conn.addRequestProperty("Cookie","test=12345";);

//conn.addRequestProperty("Referer","http://www.openstreetmap.org";);
}

Avatar
东北老哥 peter-mtbhk 2013-02-02 05:48

加天地圖 "tianditu.bsh" 就可以了. (檔是某高人的)
........

脚本确实可用,可以在mobac中打开,但生成的 ozi 地图确实严重偏移的。

Avatar
Etrock OP peter-mtbhk 2013-02-02 12:44

加天地圖 "tianditu.bsh" 就可以了. (檔是某高人的)

String getTileUrl( int zoom, int x, int y ) {
String url = "http://tile1.tianditu.com/DataServer?T=";
if(zoom > 12)
url += "siwei0608";
else
{
if(zoom > 10)
url +="B0627_EMap1112";
else
url += "A0512_EMap";
}
return url+"&X=" + x + "&Y=" + y + "&L=" + zoom;
//return "http://tile4.tianditu.com/DataServer?T=A0512_EMap&X=92&Y=17&L=7";
}
}

我开始也试着用bsh的脚本弄,可惜没参透天地图的“规律”
想问一下写这个脚本的朋友怎么找到规则的啊?
比如上面>12、>10级时,怎么知道url会是B0627_EMap1112、A0512_EMap?
要是能告知就好了:)

Avatar
白马 Etrock 2013-02-02 14:09


这个BSH的脚本是他写的,可以发悄悄问他:),不过我乱猜测,就是去发现图源中图号的编码规律再实测一下,是件体力活,否则不会只放10与12。
http://www.doyouhike.net/forum/comm_nav//585383,0,0,1.html#88965095

Avatar
zhhxq 2013-02-02 16:26

几个情况解释下:
1、MOBAC抓图的时候离线包的名字只能用英文,等离线包生成以后,你就可以随便改英文名了;
2、不知道你们用OruxMaps的哪个版本,反正5.02版的支持任意地图校准,所以纠偏不是问题,最新5.04的肯定也可以;
3、天地图的其实也可以用,但是必须得把MOBAC的启动JAR文件替换成工兵版的(改了投影模式的好像),在湖北省路测,完美无飘移。但是替换以后这个MOBAC就是天地图专用的了,生成其它mapabc、google的就会偏出地球了。所以我是准备两套MOBAC,一个天地图图源专用,一个其它地图用……

Avatar
八虫山 2013-02-04 20:40

搜狗地图非常好,楼主能否编辑一个搜狗地图的xml文件。自己尝试着做了,可是搜狗地图的地址看起来有些怪异,让人摸不着头脑。

Avatar
pirch 2013-02-10 06:48

谢谢,强帖啊!!^_^

Avatar
主机板 2013-02-14 14:21

soso卫星图不错,楼主帮一下,谢谢

Avatar
rzexin 2013-02-14 14:34

感谢分享,学习了

Avatar
artwen 2013-02-16 15:34

楼主,缘分啊!我也是看的你说的那个链接学会的抓谷歌图源,最近成功试了好几个软件,包括oruxmaps、rmaps ext、osmand等等等等,在我的三星9300机器上均成功!

不过有几个问题和楼主以及其他成功的朋友们交流一下:

1.由于google maps是加偏图源,因此除了rmaps ext(国内rmaps的纠偏改版)外,其他国外的读图器读自己做的sqlite图均有偏移,如何在制作原图的时候就预加偏?

2.用mobac制作的google maps图源离线图,和安卓上的正宗谷歌地图软件中的图显示不一样(感觉后者是矢量图),哪里有后者的图源?

3.该问题是从2中引申过来的新问题,就是这些sqlite数据库图都无法在读图器上搜索,我感觉是不是矢量图就可以?或者,sqlite数据库图文件再加一个什么辅助文件就可以解决搜索问题?