跑步不一定只能追逐配速和里程。它也可以是一场发生在真实街道里的探索游戏。

我一直觉得,跑步应用里的数字已经足够多了。

配速、心率、步频、里程、训练负荷……它们当然重要,但当跑步只剩下一组组不断刷新的数据时,一次原本轻松的出门,有时也会变成另一场需要完成的考试。

我想做一点不太一样的东西。

如果不要求跑得更快,也不要求跑得更远,只是邀请你去看看家门口那条从未拐进去的小路,会怎么样?

于是,我给自己开发的「快乐跑团」小程序加入了一个新功能:城市点亮计划

它的规则很简单:

跑过一格,点亮一城。

把熟悉的街区变成一张待探索的地图

打开城市点亮计划后,发起人可以在地图上选择一个中心点,圈定一片真实区域,再设置挑战名称、覆盖范围和持续时间。

系统会把这片区域切分成许多六边形网格。一场挑战就这样生成了。

跑友到达挑战区域后,点击「开始探索点亮」,小程序会根据实时位置判断当前所在的网格。每经过一个新区域,对应的格子就会从雾蓝灰变成暖橙色,并伴随一次轻微震动。

地图不再只是一张用来导航的底图,而像是一块等待被填满的拼图。

你可以选择:

  • 在周末慢慢点亮一座公园;
  • 沿着江边探索一条从未完整跑过的路线;
  • 和跑友分头行动,共同覆盖一片街区;
  • 在排行榜里看看谁发现了更多角落。

我很喜欢这种反馈带来的心理变化。

平时跑步时,我们很容易沿着最熟悉的路线不断重复。但当地图上还有一格没有亮起时,人会自然地产生一点好奇:那边到底是什么?要不要顺路去看看?

它没有要求我提高配速,却给了我继续向前跑的理由。

为什么是六边形?

城市点亮计划使用了 Uber 开源的地理空间索引库 H3

简单来说,H3 可以把地球表面划分成不同精度的六边形网格,并给每个网格分配一个唯一编号。只要把当前位置的经纬度交给 H3,就能知道用户正位于哪一格。

相比自己保存大量地图多边形,再判断定位点是否落在其中,这种方式更加直接:

获取当前位置
    ↓
转换为 H3 网格编号
    ↓
判断该网格是否属于挑战区域
    ↓
记录并点亮网格

六边形也很适合表现“探索”。它不像行政区划那么生硬,又比普通方格更接近自然扩散的感觉。多个网格连接起来后,会形成一种很像游戏战争迷雾的视觉效果。

创建挑战时,系统还会根据覆盖范围自动调整网格精度:小范围使用更细的格子,大范围则适当降低精度,同时把单次挑战控制在不超过约 300 个网格,兼顾探索体验和地图渲染性能。

真正麻烦的不是网格,而是坐标偏移

开发这个功能时,最让我头疼的问题并不是 H3,而是国内地图常见的坐标系差异。

H3 使用 WGS84 坐标系,而腾讯地图展示使用 GCJ-02。如果直接把 H3 计算出的六边形绘制到腾讯地图上,整片网格会与真实道路发生偏移。

更麻烦的是,不同运行环境返回的位置坐标也不完全相同。例如 H5 原生定位可能返回 WGS84,小程序端则通常请求 GCJ-02。

最后,我把坐标处理拆成两条明确的路径:

网格计算:统一转换为 WGS84 → 交给 H3

地图展示:H3 边界 → 转换为 GCJ-02 → 绘制到腾讯地图

客户端上传定位时会标记原始坐标类型,服务端只做一次标准化转换,尽量避免重复纠偏。

这是用户几乎感知不到的一层工作,但它决定了屏幕上的六边形能不能真正对准脚下的道路。

点亮不能完全由手机自己说了算

如果点亮结果只由客户端决定,修改请求或重复提交就可能让挑战失去意义。因此,客户端只负责获取位置和展示结果,最终是否点亮由 uniCloud 云函数判断。

服务端会完成几项基础检查:

  • 经纬度和坐标类型是否合法;
  • 当前定位精度是否可用;
  • 移动速度是否存在明显异常;
  • 用户所在网格是否属于当前挑战;
  • 同一个网格是否已经点亮过。

每条点亮记录都由“挑战 ID、用户 ID、网格 ID”共同确定。同一个人在同一场挑战里反复经过同一格,也只会记录一次。

这套机制目前只能算基础异常过滤,还不是严格意义上的运动反作弊系统。GPS 漂移、模拟定位和多设备协同仍然是很难彻底解决的问题。不过对于轻量、偏社交的城市探索活动,它已经能够挡住大多数无意的重复记录和明显异常数据。

我希望它不是另一张数据报表

在城市点亮计划里,我没有把重点放在增加更多运动指标,而是尽量围绕几个简单动作展开:

  1. 圈定一个值得探索的地方;
  2. 邀请朋友加入;
  3. 真实地跑到那里;
  4. 看着地图一点点亮起来。

目前功能已经包含挑战创建、地图预览、实时点亮、在线参与者提示、探索进度、排行榜和分享。

下一步,我更想继续完善“探索之后留下了什么”。比如个人点亮地图、长期城市版图、主题路线,以及不以速度为唯一标准的跑团协作玩法。

跑步已经有很多衡量成绩的方式。我希望城市点亮计划提供的是另一种东西:用脚步重新认识生活半径的机会。

如何体验

小程序名称:快乐跑团渝你同行

扫描二维码,立即体验!

如果你也喜欢跑步、地图或带有一点游戏感的户外探索,欢迎体验后告诉我感受。

我尤其想知道:

  • 你更想点亮家附近的街区,还是一整座公园?
  • 你会选择独自探索,还是和跑友共同完成?
  • 对这种基于真实位置的玩法,你最在意体验、隐私还是防作弊?

这些答案,也许会决定这张地图接下来长成什么样子。

1
0