从天地图的服务器下载时,有时某个区块没有地图,服务器会返回404错误,而不是像其他地图服务器返回一个空图片或者透明图片。导致下载时会频繁出错,一会就弹出错误对话框导致下载暂停,而如果选择忽略错误,又会把真正的错误忽略掉,因为天地图用多线程频繁下载时,过一会儿服务器会屏蔽你几分钟,导致产生大量错误而弹出对话框,下载停止。大量下载时必须时刻去看一下,无法无人值守下载,非常麻烦。
本人主要修改了对404错误的处理,以及增加了出错自动重试和重试延迟的选项,同时把弹出的错误对话框的条件改为永久错误数目达到某一值而不是临时错误数。
经测试下来一晚上下载没有暂停,能够无人值守下载了。
另外对地图册的功能做了增强,可以修改地图源以及选择性下载等。
基于官方1.9.16版本修改,详细更改:
地图册树节点右键菜单加入“更改地图源”的功能。
地图册树节点会显示地图源和缩放等级
增加地图册选择性下载功能,地图册树节点左侧增加复选框,选中的地图才会下载。
新建,重命名地图册树节点名称时可使用中文;配置文件名可使用中文。
解决部分菜单无中文问题。
网络设置页面增加全局HTTP User-Agent设置(某些图源会屏蔽MOBAC,比如Thunderforest的OpenCycleMap,可通过设置UserAgent来绕过屏蔽 )。
自定义地图源XML文件中增加userAgent参数,地图源XML文件中的参数优先使用,如地图源未设置,则使用全局设置。
地图下载增加出错自动重试次数和出错重试延迟功能,可在设置界面网络设置页面进行设置。
网络设置增加最大下载线程数到20
特殊处理地图下载时的HTTP 404错误(比如天地图,如当前区块无地图时,不是返回空图片,而是返回404错误),
如遇到404错误则默认用一个全透明PNG文件替代当前区块,文件为名为empty_tile.png,可自行替换,目前改功能只适合地图块大小为256*256的地图源(大部分都是)。
编译后用launch4j把jar文件打包生成exe文件。
通过launch4j设置jvm参数-Djava.net.preferIPv4Stack=true,可解决某些情况连接服务器时频繁产生的socket permission denied错误
通过launch4j设置jvm内存为256M-1024M。
既然有人觉得我的修改是多余的,原程序都有有这些功能了,我就不公开放上来了,想要的私信我吧。
非常感谢!
标准的 mobac 1.9.16 的功能包括:
- 瓦片缺失: 在图源设置 ignoreErrors, 参考
http://mobac.sourceforge.net/wiki/index.php/Custom_XML_Map_Sources#ignoreErrors
- User-Agent: 原作者 r_x 觉得这应是一个高级选项. 没有直接在设置或 xml 中实现. 解决方法:
1. settings.xml
2. bsh 图源 addHeaders
- 下载错误: 跳过错误 (ignore download errors and continue automatically)
- 多线程: 还是保守些. 轻则你的IP会被屏蔽. 严重时大家都不能用. (就像 OruxMaps 不能下载微软卫星图)
楼上跟本没有仔细看我写的内容。。。
设置ignoreErrors或者在设置里选择跳过错误,会把真正的错误也跳过。。。这个修改就是解决只跳过404,其他错误比如网络错误,被服务器暂时屏蔽等仍然可以自动进行多次重试。。。原程序出错后只重试一次,如果选择了跳过错误,则一次都不重试,下载天地图,一晚上下来将近一半瓦片缺失。。。
正需要这些功能啊 http://mobac.sourceforge.net/ 上的版在win8 上退出时 会报错,虽然不影响使用,但是很恶心;不知道楼主这一版本有木有这问题
非常有用的改进
非常人性的改进,很多时候就是对一些空白地方的重试,拖慢了整体速度,而且对于一些客户端的限制也做了改进。感谢
很好,想用。
还是放上来吧,感觉还是不错的。
求发一个给我啊,raymanllh@163.com
如何解决 选取图片数目的限制, 500000个图片块 太少了 如果搞卫星图基本局限在非常狭小的区域
楼主麻烦发一个[email="35513407@qq.com"]35513407@qq.com[/email]。另外能否给个能用的谷歌卫星地图源。还有如楼上说的如何解决 选取图片数目的限制, 500000个图片是有点少。
有哪位能够增加一下,天地图的MOBAC图源,天地图里面有个功能非常的强大,需要有《省市服务》那个功能图层,有房屋,以及非常小的水塘,和小路。这个估计是目前官方公布的最NX的地图了。感激不尽
有哪位能够增加一下,天地图的MOBAC图源
我的邮箱为1940808789@qq.com 谢谢楼主分享
非常感谢! :devil: