我正在研究使用Core Location。 我想通过Core Data保存位置信息。 到目前为止,似乎我可以简单地保存CLLocation信息(这实际上是最小的位置信息)。 这个CLLocation是否需要稍后恢复数据并确定用户是否在该特定位置/附近?
答案 0 :(得分:1)
由于CLLocation
符合NSCoding
,因此可以像使用" transformable"创建核心数据属性一样简单。类型。然后,您可以将CLLocation
个对象分配给此属性并将其读回。
但是,您无法使用此值过滤或排序数据 - 例如,如果要查找具有特定区域中某个位置的所有实例。为此,您需要添加属性以与CLLocation
本身分开表示CLLocation
纬度和经度值。您可能还需要高度和/或准确度信息,具体取决于您希望进行的提取类型。
答案 1 :(得分:1)
我通过在CoreData数据库中的航点记录中将纬度,经度和高程信息保存为双打(NSNumbers),然后每当我从数据库加载它们时使用它们创建CLLocationCoordinate2D点来执行此操作。
你想要在路上进行一些过滤以验证你有一个好点(水平精度低于阈值 - 并且高于0,因为他们可以用负值标记坏点)。我还看到了无序数据存在问题,因此我会跟踪最新加载值的时间戳,并在该值之前丢弃带有时间戳的任何新点。
处理后台模式和LocationManager设置时需要解决一些问题,但是将位置捕获到CoreData中的结构可以很好地工作 - 我已经在数小时内捕获到数据库的轨道超过20,000个航点而没有问题