geocaching地图偏移

geocaching是一项全球性的户外寻宝活动,结合了科技、探险和乐趣。参与者使用 GPS 设备或智能手机应用程序,根据提供的坐标(经纬度)去寻找隐藏的“宝藏”(称为 geocache)。这些宝藏通常是一个小容器,里面可能包含日志本、小玩具或其他物品。

我是iOS受害者,用起来有两个坑。

语言

首先碰到的坑是语言。可能是使用了日本代理的缘故,第一次启应用后,显示语言为日文。

费了老鼻子劲,一个一个菜单点进去,也没找到语言设置。

最后才发现geocaching在iOS上的语言设置,并不在应用里面,而是在系统设置里。

路径是设置 -> App -> GeoCaching -> 语言

地图偏移

中国对公众开放的地图服务中,使用的坐标格式是GCJ-02,坐标系所采用的混淆算法会在经纬度中加入看似随机的偏移。而geocaching使用的是通用的WGS 84,所以地图会存在偏移。

解决办法有很多种,我们一个个来。

显示当前WGS 84坐标

既然WGS 84到地图的映射出了问题,那么我们直接在手机上显示当前WGS 84坐标,然后比对坐标而不是地图不就解决了么?

在iOS 15.1之前,苹果手机的指南针应用是直接显示经纬度和海拔的。后来根据国内隐私法要求,苹果在大陆版指南针应用中删掉这个显示。

但既然只是删除显示,而不是删除功能,我们可以轻松恢复显示。

伪装成非大陆用户

既然这项功能只针对大陆用户,那么我们伪装成非大陆用户就行了,这样在指南针应用中就会重新显示经纬度和海拔。

苹果对大陆用户的判断有两个依据:IP地址和SIM卡运营商。我们分别搞定这两点。

首先是IP地址,挂上全局代理,使用海外节点,就可以搞定IP。

然后是SIM卡运营商,只需要打开飞行模式即可。

最后在地图中搜索一个海外地址,来激活非大陆地区版本。看到地图提供商从高德地图变成了OpenStreetMap,就代表激活成功。

但这两个结合起来的话,我们就需要另一台设备来提供Wi-Fi连接,而且还要翻墙,非常不方便。

来看看苹果提供的杀手级应用:捷径。

使用快捷指令

快捷指令是苹果提供的一款自动化工具,可以用来实现各种自动化操作。我们可以通过快捷指令来显示经纬度和海拔。

创建一个快捷指令,先获取当前位置,然后,从当前位置中获取经度纬度海拔,最后,在文本中显示。

可以参考网友分享的快捷指令经纬度海拔

使用PC版

geocaching的PC网站,可以直接在大陆地区使用WGS 84坐标显示标记。比如世纪公园的这个水晶骷髅头宝藏

在浏览器上访问而不是使用app就可以。

坐标转换

我们可以把WGS 84转换成GCJ-02,再输入到谷歌地图中查看。谷歌地图支持直接搜索经纬度,格式为纬度,经度

也可以把WGS 84转换成BD-09,再使用百度提供的根据经纬度定位网页查看。

开源项目coordtransform实现了算法,我写了一个项目coordx-webui实现了网页