iOS Mapkit-如何偏移用户';地址不能指定数量

iOS Mapkit-如何偏移用户';地址不能指定数量,ios,location,mapkit,offset,Ios,Location,Mapkit,Offset,我正在开发一个应用程序,使用用户的位置与其他用户一起显示在地图上 我想确保所有用户在向其他用户公开其位置时都有一点隐私,因此我希望只将其位置设置为指定的偏移量(比如1英里),并向所有其他用户显示“编辑的”位置,同时向当前用户显示“准确的”位置 示例-如果我在看地图,我希望我的“用户位置”(蓝点)稍微精确一些,而所有其他玩家都会看到我的位置稍微偏离真实位置 实现这一点的最佳方法是什么?您是否将其他人作为pin显示?如果您在某个确切位置显示pin,但另一个用户不在,这可能会很奇怪。例如,如果某人在北

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

我想确保所有用户在向其他用户公开其位置时都有一点隐私,因此我希望只将其位置设置为指定的偏移量(比如1英里),并向所有其他用户显示“编辑的”位置,同时向当前用户显示“准确的”位置

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


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

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

无论您是否更改显示,您寻找的代码都在这里:

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

如何以保护用户隐私的方式将用户的位置转换为“近似位置”? 这不是一个容易的问题:

  • 按特定距离进行偏移不起作用:
    • 如果方向是固定的,就有一个小的攻击
    • 如果方向变化不够频繁,那么攻击者只需等待确定道路的外观即可
    • 如果方向变化太频繁,那么他们将倾向于围绕目标的房屋/工作形成一个1英里的圆圈
  • 按随机距离/方向进行偏移不起作用;攻击者只需要收集足够的样本;集群可能以目标家庭/工作为中心
  • 简单地量化网格(例如,“X在这个网格正方形内”)将告诉您目标何时跨越网格边界。如果目标位于栅格边界上,这种情况尤其糟糕
这里有一个更好的方法,但wil仍然(最终)透露了用户的位置:

  • 选择一个(大约)1英里的网格。对于“正方形”网格,您可以使用(有四个无限变形点,但您可以在海上制作这些点-看起来您可以将陆地上的变形限制为2倍)。还有投影到三角形网格上,对于三角形网格,还有投影到三角形网格上
  • 当您第一次需要报告用户的位置时,请给出网格上最近的点。还要拾取介于1和2个栅格“正方形”之间的阈值距离,大约如此。
    • 当用户位于网格正方形中心的阈值距离内时,继续报告相同的网格正方形。否则,重复
如果用户恰好生活在网格边界上,那么最终还是很明显的。有多种方法试图解决此问题(例如,您以前报告过的对报告网格方格的偏见),但这些方法最终会失败

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

或者在信号处理方面:低信噪比意味着你必须听更长的时间才能提取信号