在我的应用中,用户在地图上搜索一个位置,并在该特定位置放置一个引脚(MKPinAnnotationView)。我使用核心数据存储有关该位置的信息(例如城市名称,纬度,经度等)
我想保留MKAnnotationViews,以便当用户重新打开应用程序时,"引脚"还在那里。
处理此问题的正确方法是什么?我已经在CoreData中存储了纬度和经度,但我真的希望将整个MKAnnotation的标题,副标题和其他属性直接存储在CoreData中,然后在应用程序打开时将它们重新绘制在地图上。 / p>
我使用的是Objective-C而不是Swift。
答案 0 :(得分:0)
不确定您的问题是什么。我在Swift not ObjC中这样做,但实质上你只是:
鉴于添加的数据,我对Waypoint对象的设置是一个更复杂的init方法,因此我没有显示,但您的设置应该与第一次加载注释值时相同。这里是Swift 3.0版本的MapView加载版本,在Swift中很简单 - 但它在ObjC中应该没有什么不同,因为它只是调用API:
// Display a set of Waypoints for a Track
private func handleWaypoints(_ waypoints: [MKAnnotation])
{
mapView.addAnnotations(waypoints)
mapView.showAnnotations(waypoints, animated: false)
}
由于我循环浏览地图,我还使用调用来确保地图是干净的,然后再执行上面的加载,这只是:
private func clearAnnotations()
{
if mapView?.annotations != nil { mapView.removeAnnotations(mapView.annotations ) }
if mapView?.overlays != nil {mapView.removeOverlays(mapView.overlays)}
}
这有帮助还是我错过了您的顾虑?