iPhone 3.0 SDK에서 MapKit을 사용하면 MKAnnotation 프로토콜을 준수하는 객체를 만들 수 있습니다. MKMapView에로드하는 것은 매우 쉽습니다. 그러나 사용자가 MKMapView를 스크롤하면 새로운 주석을로드 할 차례입니다. 새 객체를 요청할 가능성이있는 곳은지도 영역이 변경 될 때 호출되는 mapView : regionDidChangeAnimated :입니다. 그런 다음 주석을 새 영역으로 추가/대체합니다.사용자가 MKMapView를 스크롤 할 때 코어 데이터에서 추가 객체로드
특히 코어 데이터를 쿼리하여 현재 MKCoordinateRegion (mapView.region) 내에 존재하는 모든 개체를 검색하여 화면에 표시 될 개체 만로드하도록합니다. 코어 데이터의 객체에는 위도 및 경도 속성이 있으며 CLLocation 속성은 '.m/.h'클래스에 정의되어 있으며 수동으로 채울 수 있습니다.이 속성을 사용하여 NSPredicate에서 근처의 객체를 찾습니다.
코어 데이터베이스에 존재하는 객체의 수에 따라 모든 객체를 주석으로 사전로드 할 수 없기 때문에 메모리가 부족합니다 (너무나 느려질 수 있습니다).
현재지도보기 범위 내 위치가있는 객체 만 검색하려면 어떻게해야합니까?
이 일반적인 개념은 저에게 잘 맞았습니다! 성가신 유일한 것은 직사각형 경계를 넘어서는 객체를로드하기 때문에 사용자가 핀을 삭제하는 것을 보지 못한다는 것입니다. 그것은 대체로 화장 용이므로 문제 해결을 서두르지는 않습니다. 범위를 벗어나는 이유는 무엇입니까? 경계가 더 큰 것으로보고 있다고 가정 할 수 있습니다. 화면에 VISIBLE이 무엇인지 알려줍니다. 생각 하시겠습니까? –
케빈, 당신이 너무 많은 물건을 얻는 이유는 위도와 경도 델타가 먼저 중심에서뿐만 아니라 전체 지역을 가로 지르는 거리를 나타 내기 때문에 둘 다 먼저 잘라야하기 때문입니다. 예를 들면 다음과 같습니다. minLat = currentCenter - (latDelta/2) 등 –