iOS Mapkit - 如何偏移用户的位置指定数量

时间:2012-11-07 18:48:41

标签: ios location mapkit offset

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

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

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

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

2 个答案:

答案 0 :(得分:1)

我认为你实际想要答案的问题是:

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

这不是一个简单的问题:

  • 偏移特定距离不起作用:
    • 如果方向固定,会发生微不足道的攻击。<​​/ li>
    • 如果方向没有经常变化,那么攻击者只需要等待识别出什么样的道路。
    • 如果方向变化太频繁,那么它们往往会在目标的房屋/工作周围形成一个1英里的圆圈。
  • 通过随机距离/方向偏移不起作用;攻击者只需要收集足够的样本;群集可能会以目标的家/工作为中心。
  • 天真地量化到网格(例如“X在此网格方格内”)将告诉您目标何时越过网格边界。如果目标位于网格边界,这尤其糟糕。

这是一些有效的方法,但仍会(最终)放弃用户的位置:

  • 选择一个(大约)1英里的网格。对于“方形”网格,你可以使用Pierce quincunxal projection(有四个无限失真点,但你可以将它们全部放在海上 - 看起来你可以将地面上的失真限制在2倍)。还有cube上的投影,对于三角形网格,还有icosahedron
  • 当您首先需要报告用户的位置时,请在网格上指定最近的点。同样选择1到2个网格“正方形”之间的阈值距离。
    • 当用户位于网格方块中心的阈值距离内时,继续报告相同的网格方块。否则,请重复。

如果用户碰巧住在网格边界,那么最终还是显而易见的。 尝试有多种方法可以解决此问题(例如,您之前报告的报告网格方格的偏差),但最终会失败。

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

或者在信号处理方面:低信噪比仅仅意味着您需要更长时间来提取信号。

答案 1 :(得分:0)

你是否将其他人都展示为别针?如果你在一个确切的位置显示一个引脚但其他用户不在那里可能会很奇怪。例如,如果有人在距离北方一英里处,并且您将其引脚显示在与当前用户相同的位置。也许你应该用MKOVerlay圆圈显示其他用户,然后在userID上使用一些计算基础稍微偏离中心,这样人们就不会发现它总是向东移动500米,因此很容易看到人们在这里。

无论您是否更改显示,您所寻求的代码都在此处:Get the GPS coordinate given the current location, bearing and distance