特别喜欢刘看山的形象,有没有刘看山贴纸买?想贴满 等!?

「赛博刘看山」:今天天气怎么样?

上周给「赛博刘看山」电子水墨屏做了一个新功能:今日天气。

功能很简单,折腾下来还是有点东西可以聊聊的,于是有了下文~



首选,这个小玩意并没有任何的GPS芯片,所以是不可能拿得到准确的地理位置的。(真好,代码又可以省事了。)这里有且仅有的是,设备联网之后,可以访问kanshan-server 服务,服务端这边能拿到的设备出口公网IP。接着,可以通过IP反查GPS定位,获得一个大概的地理位置。最后,通过地理位置获取天气信息。

IP信息 -> 客户端请求服务器的时候就能拿到,比较好处理。

IP反查GPS信息 -> 某破站一直有一个神奇的接口可以用,半公开的。

GPS信息查天气 -> 和风天气提供不少的免费额度,注册就能用。

道理来说没什么太难的,CodeX大概也就花了几个小时就做完了。

于是上线了~


定位不准?


“虽然还没有定在西湖区,但是我这好像是在西湖和拱墅交界的附近,已经很nice了”。

“然后我的ip竟然跑到了河西,我在塘沽(”

“我的崽怎么跑南京去了, 苏州崽不可能去南京的快回来。”

"没事,我还在西城呢"

“苏州到南京多少公里啊?->差不多两百多”


啊,这...

于是排查了一波发现,某破站的IP信息返回的GPS坐标,对于城市的定位基本没问题,准确路在80%以上,对于区域的定位就不太友好了。然后某些神奇的移动网络下,IP出口是他们的省级网(如苏州 -> 南京)。一切都很离谱,一切也很合理....

行,再去换个能用的IP信息库看看(主要是得免费)。让CodeX又去试了一些可用的线上IP库,发现问题依旧还是挺多的,甚至于有些库的准确率只有40%。

最后折腾了一圈,发现某破站的数据可以和另一个免费库ipapi互补一下。两边都查一遍,如果两家经纬度距离<= 30km,优先用 ipapi;如果两家距离差太远,则回退用 某破站站;如果 ipapi 失败但 某破站成功,用某破站站;两家都失败才报错。

基本就是某破站作为兜底和基准,最终得到了现在的效果~



果然。

从来没有一个东西是可以轻而易举的。

大概如此。

编辑于 2026-06-10 · 著作权归作者所有