查找距离我当前位置 100 米以内的已保存位置
Finding saved locations that are within 100 meters of my current location
对于我的 iPhone 应用程序,我在变量 userLocation
中获得了用户的位置,并且我正在使用 CLLocationManager didUpdateLocations
方法不断更新它。
在我的解析数据库中,我有数千个存储位置。
我的问题是,如果任何这些解析数据库位置是在用户当前位置的 100 米范围内?
我目前的做法是每次用户的位置发生变化时都遍历数据库位置数组;计算与当前位置的距离并判断距离是否小于 100 米但是随着位置不断变化,这将对处理器和电池造成沉重负担。有什么建议吗?
我会发表评论,但没有代表。无论如何,您可以将位置分解为树型结构,以在每次迭代中删除一半的位置 - 根据您的位置,您可以使用军械网格正方形,如果不是,则稍微小一些。这样你只搜索相当接近的位置的子集..?例如 Quad Trees
你可以结合Anna的想法(见评论),根据用户的移动速度不断改变X或N值。
如果用户在走路,那么你只需要花更长的时间来执行下一个查询。但如果用户正在使用自行车,例如,下一个查询应该更快。
对于我的 iPhone 应用程序,我在变量 userLocation
中获得了用户的位置,并且我正在使用 CLLocationManager didUpdateLocations
方法不断更新它。
在我的解析数据库中,我有数千个存储位置。
我的问题是,如果任何这些解析数据库位置是在用户当前位置的 100 米范围内?
我目前的做法是每次用户的位置发生变化时都遍历数据库位置数组;计算与当前位置的距离并判断距离是否小于 100 米但是随着位置不断变化,这将对处理器和电池造成沉重负担。有什么建议吗?
我会发表评论,但没有代表。无论如何,您可以将位置分解为树型结构,以在每次迭代中删除一半的位置 - 根据您的位置,您可以使用军械网格正方形,如果不是,则稍微小一些。这样你只搜索相当接近的位置的子集..?例如 Quad Trees
你可以结合Anna的想法(见评论),根据用户的移动速度不断改变X或N值。
如果用户在走路,那么你只需要花更长的时间来执行下一个查询。但如果用户正在使用自行车,例如,下一个查询应该更快。