2016-12-09 9 views
0

내 앱에서 사용자가지도에서 위치를 검색하면 특정 위치에 핀 (MKPinAnnotationView)이 삭제됩니다. 코어 데이터를 사용하여 해당 위치에 대한 정보 (예 : 도시 이름, 위도, 경도 등)를 저장합니다.CoreData를 사용하여 MKPinAnnotationViews 유지

사용자가 앱을 다시 열 때 "핀"이 계속 표시되도록 MKAnnotationViews를 유지하려고합니다. .

이 문제를 해결하는 적절한 방법은 무엇입니까? 이미 CoreData에 위도와 경도를 저장하고 있지만, CoreData에 제목, 부제목 및 기타 특성을 직접 전체 MKAnnotation을 저장 한 다음 앱이 열릴 때 맵에 다시 그리기 만하면됩니다.

저는 Swift가 아닌 Objective-C를 사용하고 있습니다.

답변

0

문제점이 확실하지 않습니다. 나는 실제로 더있어 (

  • 는 CoreData의 점에 대한 데이터, 주석 인스턴스의 배열에
  • 로드를 가져 오기 : 나는 스위프트하지 ObjC이 일을 해요,하지만 본질적으로 당신은 단지 (예 : 맞춤 핀 및 폴리 라인 그리기 등의 정보가 필요하지만 MapView 프로세스를 변경하면 안 됨) 및
  • NSObject에서 하위 클래스로 분류 된 복잡한 클래스 인 Waypoint는 추가/내가 Mapview에서 주석을 처음 보여 주었다고 가정합니다.

추가 된 데이터가 있으면 Waypoint 객체를 설정하는 것이 더 복잡한 init 메소드이므로 표시하지는 않지만 설정은 처음으로 주석 값을로드 한 것과 동일해야합니다. 여기 스위프트의 간단지도보기로 부하의 스위프트 3.0 버전 -하지만 그냥 API를 호출이기 때문에 그것은 ObjC에 큰 차이 안 :

// Display a set of Waypoints for a Track 

private func handleWaypoints(_ waypoints: [MKAnnotation]) 
{ 
    mapView.addAnnotations(waypoints) 
    mapView.showAnnotations(waypoints, animated: false) 
} 

지도 순환 I 때문에, 나는 또한 전화를 사용을 위의 작업을 수행하기 전에 맵이 깨끗한 지 확인하려면 다음을 수행하십시오.

private func clearAnnotations() 
{ 
    if mapView?.annotations != nil { mapView.removeAnnotations(mapView.annotations) } 
    if mapView?.overlays != nil {mapView.removeOverlays(mapView.overlays)} 
} 

이 정보가 도움이 되었습니까?

+0

감사합니다. 내가하고있는 일을 확인하고 커스텀 Annotations 클래스를 사용하여 촬영할 것입니다. 내 주요 문제는 내가 응용 프로그램에서 일할 때 모든 것이 잘 작동한다는 것입니다 (도시 검색,지도에서 주석 삭제, CoreData에 위치 데이터 저장).하지만 앱을 닫고 다시 열면 곧바로 지도에 있던 주석은 더 이상 존재하지 않으므로 핵심 데이터에 저장된 데이터에서 해당 핀을 다시 만들고보기가로드 될 때 맵에 놓을 수있는 방법을 생각하고있었습니다. 항상 거기에 있었다). – Alex

+0

좋은 소리가 들리지만, 처음에는 일종의 레코드로 생성 된대로 각 핀의 데이터를 저장 한 다음 다음에 표시 할 때 수동으로 핀을 재생성하면됩니다. –