使用 iPhone 3.0 SDK 中的 MapKit,您可以创建符合 MKAnnotation 协议的对象。将这些加载到 MKMapView 上非常容易。然而,当用户滚动 MKMapView 时,是时候加载新的注释了。请求新对象的可能位置在mapView:regionDidChangeAnimated:中,当地图的区域更改时调用它,然后用新的注释添加/替换注释。
具体来说,我想查询 Core Data 以检索当前MKCoordinateRegion (mapView.region) 中存在的所有对象,以便我只加载将在屏幕上显示的对象。Core Data 中的对象具有纬度和经度属性(CLLocation 属性在类' .m/.h 中定义,我可以从中手动填充)并将其用于 NSPredicate 以查找附近的对象。
由于 Core Data 数据库中存在多少对象的性质,我们不能将所有对象预加载为注释,否则我们将耗尽内存(而且速度会非常慢)。
如何仅检索在当前地图视图范围内具有位置的对象?