驻场外包前端日记(二):如何正确下载天地图瓦片

本文只分享相当强烈屌丝的解决过程,主要表达年近三十准中年男人陷入职业黄昏的落寞心境,并非技术向文章。

最近现场又遇到个地图相关需求,客户想要在我们的项目上对接天地图,不管其他应用实际上是放在互联网还是什么网,反正他们就是要看见我们的项目呈现的天地图,而中国天地图是放在互联网,项目部署的环境在内网,关他们什么事,他们就是要看天地图。这对于东莞团队地图能力天花板——边缘开发小黄来说,又是一个挑战,嘤嘤嘤。

作为一个前端选手,自我增值意义不大,毕竟这极低概率是互联网大厂的面试题。但我明白到自己的定位,远距离去看,就是一只平凡的社畜,近距离看,就是一个外包仔,服务客户是第一位,用什么手段不重要,代码写得再清秀也不一定是我的KPI,前端工程师是最不重要的身份。

实际上驻场差不多两年,基本上隔一段时间都有这方面的需求,对在全国各地项目里对接(leaflet通用api对接,之前一篇文章已经提过)各种奇奇怪怪的地图,手法层出不穷,手段可以总结两类:
1、在不确定坐标系和地图服务符合标准的情况下,通过修改配置参数直接蒙对的,当然不是瞎蒙,看看他们地图示例的参数,再瞎几把猜。
2、在知道地图服务经过魔改的地图服务的情况下,反编译地图厂商的jssdk,抽出关键逻辑重写(幸好他们用也是leaflet)成功蒙对的。

而这次,是内网连地图服务都没有的情况下,用离线瓦片造一个“地图服务”实现的。

在接到这个需求时,其实我没有第一时间选择这个如此“民科”的解决方向,而是通过从外网到内网经过一系列转发机制(所谓的摆渡?)来实现需求。但又想到,我只是个前端,怎么能在服务器上大动干戈——当然我也不怎么会搞这个,可行性太低。那只能继续走这条土味前端民间科学路线,最大原则是千万别浪费时间通过极客手段去解决问题。

所以一切问题就转移到寻找下载工具去搞到天地图的离线瓦片。

首先,尝试公司前端团队以前提供的下载工具,发现这团队打击盗版做得太好,已经用不了,大概百度了2小时,依然找不到可用的破解版,正版的话要好几千快,干成了这个相当于差不多白干一个月,想到这里,眼泪都快要出来。在心态快要崩掉的时候,脑海浮现出马化腾的表情包,附上文案“不充钱怎么变强”。但一旦充钱,性质就变了,一块厕纸,一条内裤,都应该有不屈的时候。所以接下来的一个小时,我继续通过百度寻找其他下载工具,事实就是,想要达到目的,好像还是要充钱。在这个过程中还被骗进了这些工具的客户交流QQ群。

然后,我扩展了一下思路,在github上面找,确实有不少网友提供了相关代码——但都是以练习为主,下载下来后基本跑不通,我没有耐心帮他们调试代码,好事是了解到理论上写代码可实现,不失为一个nodejs或者pyhton的场景化练手项目。

最后,我向人生导师\报社地图战力天花板\莞城区TOP3 PHPer选手\前端工程化爱好者\前同事阿英求助:如果他说没有方案,不是令我最崩溃的,最崩溃的是,他说直接帮我下载。那么一刻,我仿佛受到了高维生物的残酷打击。在他帮我下载测试瓦片的几十分钟过程中,我进行了深刻的自我反省,归根究底,是百度搜素关键词打的不对。

用他介绍的工具——moblie atlas creator去搜,一下子就能搜出解决方案:https://www.jianshu.com/p/f5b82494f333
当时令我有点生气,又觉得这个工具名字有问题,太不民科了,正常的文盲怎么能搜得出来。而命名这么geek的工具,居然支持中文且可视化操作,非常迷幻。
那么下载步骤就如同上述地址,不过亲测地图源配置似乎有问题,可用我如下配置:

地图源配置项

主要是域名和图层配得有问题,像我这样整就可以在本地环境下完整呈现选定区域天地图,不要细究地图源得配置,我也是在天地图官网打开网络调试器抓包蒙出来的。

在获得离线瓦片后,我大概花了5分钟编码兼容这堆瓦片,在已知坐标系情况下,百度一搜就能搜出来,毫无技术含量。就不贴代码了,没什么好贴的。

至此整个过程到了尾声,分享结束。对大部分同行没什么卵用,因为他们根本不需要做这种需求。但可能对某些迷失在内网环境的外包仔有点用。在此再次祝愿世间每一个外包仔都能被温柔以待。

你可能感兴趣的:(驻场外包前端日记(二):如何正确下载天地图瓦片)