如何不断检查用户是否接近坐标列表中的某个坐标?(为了获得最佳性能)



我在电话数据库中有一个坐标列表(大约100)
我使用核心数据进行数据访问
我使用核心位置来跟踪用户位置(也在后台工作)
didupdatelocation方法中,我获取所有位置,计算所有位置与当前位置之间的距离
,并通知用户是否在1000米之外
问题是,这是缓慢的,有时不起作用

对于这种情况,最好的解决方案是什么?

将空间划分为区域。将带有区域标识符的坐标保存到数据库中。当您检查哪个坐标靠近时,只会获取与您所在位置和您所在位置所在区域周围的其他区域位于同一区域的坐标。

例如,中间区域是00,一个区域右侧的区域是10,两个区域右侧是20。如果你所在位置的区域是00,那么你不需要从区域20获取坐标,因为它们太远了。

希望这能有所帮助。我想说的第一件事是:)

只是一个想法:

减少所需计算量的一个简单方法是,每次X位置更新时只计算距离。例如,丢弃前19个更新并计算第20个更新后的距离,丢弃后面的19个更新,使用第40个。。。

这样的话,你可能会丢弃15个更新,然后用户保持静止,不会触发任何更新,这将是糟糕的。为了防止这种情况,您可以添加一个计时器,在调用上次更新半秒后触发距离计算。每次由于前面描述的策略而实际计算距离时,您都会停止/重置计时器。

最新更新