最近在读《30 岁人生开挂 7 步法》,其中提到,所有的赚钱活动大致可以归为两种:
- 让对方舒服
- 让对方幸福
解决别人的需求,能让人感到舒服或者幸福。恰巧在上次骑车时,我也发现了一个这样的需求。
我本来想在元旦骑一个 2025 蛇年的路书,最初的尝试是把路书导入码表,但实际骑行时码表不断提示偏航。之后我尝试了行者 APP,但可能由于手机放在骑行服后兜里,导航方向也不准确。而我平时使用的高德地图,不支持导入路书,如果手动在高德地图上重新绘制路线,工作量又太大。这使得我原本充满期待的骑行计划,在画完数字 5 之后便草草结束。
我有点想不通,为什么高德地图没有做这个功能?在我看来,这些功能都是现成的。但转念一想,既然我有这个需求,是不是很多人也都有这个需求?既然高德地图没做,我是不是可以填补这个空缺?
当天晚上回家我就着手实现,最初的想法是这样的,从路书中拿到路径点,导入到高德地图,绘制一条路线。
首先是解决路书 GPX 文件,在此之前,对这方面一点了解都没有,但不用担心,交给 AI,他们能处理得很好
先让 AI 解释 GPX 文件规范
然后再让 AI 给出解析 GPX 文件的代码
自己再稍微修改一下就可以了,GPX 这部分是解决了。
然后是高德地图的接口,打开高德开放平台,接口非常多
查看文档后发现地图小程序 API 里的地图路线满足我的需求,可以添加途径点。在高德地图手动添加途径点时,有数量限制,接口文档中未提及此限制,想着是不是通过接口能突破这个限制。
这个接口是 http 请求,并没有提供 SDK,可以把网页发给 AI ,让 AI 生成调用代码
两头都实现好了,现在要做的就是把 GPX 解析出的数据按照接口的要求做转换。
逻辑都写好之后,调用接口却提示 INSUFFICIENT_PRIVILEGES,不具备权限,当时已经是晚上 10 点多了,就加入了高德地图的用户群,想着第二天再问问。
在群里提问之后,得到的答复是,需要用企业认证的账户,而我是个人认证。这里是我面临的第一道难关。
为了解决认证的问题,我在网上查了下个人成立公司,倒是不难,但是每年各种费用可能要在几千,感觉没必要。朋友也有开公司的,换位想了下,如果我有公司,朋友来找我,可能我还是有点担心的,所以也没打扰。但是没有企业认证,我的想法就无法实现,觉得还没开始就要结束了。
好在后来突然想到了淘宝,搜了一下果然有提供企业认证 Key 的,最后选择了一家 20 元 1 天,接口调用 20w 限额的。
因为接口调用是有时限的,所以在购买之前,我先把代码都写完,这样不浪费时间。
还有一个难题是我一直没有想通的,就算我把路书导入了高德地图,我该如何把绘制好的路线分享给别人呢。
导入好的路线我可以保存,然后再分享出去,这个流程是通的,但是不够自动。我希望实现的是,别人可以自助操作,自己上传 GPX 文件,并能获取结果。如果我把上传的入口放到公众号,还能给自己涨涨粉。
在调试的时候,发现需要 workMapId,我不知道怎么取这个值,看文档的时候不仅看到了新建地图的接口,还发现了生成地图二维码链接的接口,只需要打开链接,就可以自动跳转到高德地图,打开这个路线。
现在程序的流程就变成了
- 创建地图
- 解析 GPX 获取坐标点
- 调用接口创建路线
- 分享地图
将代码都写好后,我就从淘宝上买了企业认证的 Key,开始测试
第一次生成出来的路线是这样的
差距非常大,点的位置有点偏移。之前看文档,偶然间扫到过好像有多个坐标系,找了找文档,的确找到了一个坐标转换接口,能够将用户输入的非高德坐标(GPS 坐标、mapbar 坐标、baidu 坐标)转换成高德坐标。
转换坐标之后,效果如下
路线还是不太对,而且可以发现,很多途径点其实是不需要的,比如一条直线中的多个点
在行者 APP 中,虽然显示的位置点数量和我解析出来的是一致的,但是他分成了 53 个导航段,这个才是我需要的
自然又是问 AI,AI 提供了多种算法,比如 Ramer-Douglas-Peucker 算法,拐点检测算法等等,后面我选择了拐点检测,实现也是 AI 提供的。原理就是当路径的转弯幅度超过某个阈值时,就认为这是一个新的导航段的开始。
修改之后,虽然将坐标数从 260 降低到了 112,但看上去还是不太对。
比如途径点 1 这里,明明可以直接左拐,但不知道为啥生成的路线非要多走一段,然后再掉头。
但其实这里不是我真正的问题,在第一次生成完地图后,我就发现实际上我的想法无法实现,路线可以创建,但无法使用导航。后两次的修改都是出于自己的兴趣了。
虽然这次尝试失败了,但我觉得挺有意义的。正如之前网上很火的一个帖子,用8000块半年赚了130万,其实就是很准确的发现了一个需求并解决了,帮助别人的同时,自己也能得到回报。另一个体验是,AI 大模型的发展大大降低了技术门槛。以前可能需要大量学习和调试的工作,借助 AI,我能迅速掌握复杂的技术细节,从而让想法的实现变得更加高效。