0

我正在开发一个应用程序,它使用用户的位置与其他用户一起显示在地图上。

我想确保所有用户在向其他用户公开显示他们的位置时都有一点隐私,所以我希望只用指定的偏移量(比如说 1 英里)设置他们的位置并显示“已编辑”位置给所有其他用户,同时仍向当前用户显示“确切”位置。

示例 - 如果我正在查看地图,我希望我的“用户位置”(蓝点)稍微准确,而所有其他玩家会看到我的位置与真实位置略有偏移。

实现这一目标的最佳方法是什么?

4

2 回答 2

1

我认为您真正想要回答的问题是:

如何以保护用户隐私的方式将用户的位置转换为“近似位置”?

这不是一个简单的问题:

  • 偏移特定距离不起作用:
    • 如果方向是固定的,那么攻击是微不足道的。
    • 如果方向变化不够频繁,那么攻击者只需等待识别看起来像道路的东西。
    • 如果方向变化太频繁,那么他们往往会围绕目标的房屋/工作形成一个 1 英里的圆圈。
  • 随机距离/方向偏移不起作用;攻击者只需要收集足够的样本;集群可能以目标的家庭/工作为中心。
  • 天真地量化到网格(例如“X 在这个网格正方形内”)会告诉你目标何时穿过网格边界。如果目标位于网格边界上,这尤其糟糕。

这里有一些效果更好的东西,但仍然(最终)会泄露用户的位置:

  • 选择一个(大约)1 英里的网格。对于“方形”网格,您可以使用Pierce 梅花形投影(有四个无限变形点,但您可以将它们全部制作在海上——看起来您可以将陆地上的变形限制为 2 倍)。立方体上也有投影,对于三角形网格,还有二十面体
  • 当您第一次需要报告用户的位置时,请给出网格上最近的点。还要选择 1 到 2 个网格“正方形”之间的阈值距离,左右。
    • 当用户在网格正方形中心的阈值距离内时,继续报告相同的网格正方形。否则,重复。

如果用户碰巧生活在网格边界上,最终仍然会很明显。有多种方法可以尝试解决此问题(例如,偏向于报告您之前报告过的网格方块),但这些方法最终都会失败。

这似乎很像尝试通过使用有损压缩(近似过程)来删除数字水印(用户的实际位置),同时产生听起来/看起来像原始的输出图像/音频(近似位置)。(如果您将“水印”视为用户的日常习惯,则该类比会更好一些,除非您确切知道这些习惯是什么并且可以删除它们,否则它将在输出中可见。)

或者在信号处理方面:低 SNR 仅仅意味着您必须听更长时间才能提取信号。

于 2012-11-07T21:22:21.447 回答
0

您是否将其他所有人都显示为图钉?如果您在确切位置显示图钉但其他用户不在那里,这可能会很奇怪。例如,如果某人在北一英里处,而您将他们的 pin 显示在与当前用户相同的位置。也许你应该用 MKOVerlay 圆圈显示其他用户,然后根据用户 ID 使用一些计算将其稍微偏离中心,这样人们就不会发现它总是向东移动 500m,从而很容易看到这里有人。

无论您是否更改显示,您寻求的代码都在这里:获取当前位置、方位和距离的 GPS 坐标

于 2012-11-07T20:32:04.397 回答