2011-02-04 3 views
1

MKMapView에서 현재 보이지 않는 MKAnnotation을 제거하기 위해 메모리 관리, 배터리 수명 및 프로세서 사용면에서 더 좋습니까?MKAnnotations를 제거하는 것이 더 나은가요?

저는 주어진 시간에 현재 영역에서 약 20 개의 가시적 인 주석 (대략 1000 개 정도)에 대해 이야기하고 있습니다. MapKit이 핀을 숨겨서 자신의 업무를 수행하도록해야합니까? 아니면 보이는 영역에 따라 주석을 추가/제거해야합니까?

답변

2

화면에 표시되지 않는 주석은 큰 메모리 사용을 유발하지 않습니다. MKAnnotation은 매우 가볍도록 설계되었으므로 작게 유지해야합니다. 메모리 돼지는 관련 뷰 (MKAnnotationView)입니다. 몇 백 개가 보이면 이전 장치에서 충돌이 발생할 수있는 속도 저하 및 대용량 메모리 사용이 발생합니다. 1000은 모든 장치의 속도를 저하 시키지만 충돌을 일으키지는 않습니다.

요약하면 오프 스크린 주석은 중요하지 않습니다. 문제는 화면이 너무 많을 때 발생합니다. 이를 위해 성능 향상을 위해 특수 효과를 제거해야합니다. 주석을 제거하고 대체하는 방법은 훨씬 더 어려운 질문입니다.

+0

감사합니다. 주석 제거 및 바꾸기에 대한 설명 - 클러스터링 절차에 대한 작업을하고 있는데, 그 이유는 내가이 질문을했기 때문입니다. 그룹화 된 오프 스크린 마커는 어떻게해야합니까? 이제는 제거하지 않고 그룹을 해제하는 것이 좋을 것이라고 생각합니다. – WASD42

+0

그룹화가 너무 오래 걸리지 않는다면 모든 그룹을 그룹화하기 만하면됩니다 (오프 스크린 파티도 포함). 그렇게하면 화면 모서리에서 잘린 그룹을 다루는 방법을 처리 할 필요가 없습니다. 또한지도를 이동할 때 더 많은 그룹을 만들 필요가 없음을 의미합니다. –

1

나는 동시에 100 개 이상의 주석을 표시하지 않을 것입니다. MKMapView에서 처리하도록 허용하면 사용자가 전 세계를 축소하여 mapView에서 1000 개의 주석을 모두 표시하지 못하도록하는 방법은 무엇입니까?

+0

그게 내가 실제로 노력하고있는 문제입니다. 네이티브 포토 응용 프로그램과 같이 축소하여 주석을 그룹화하려고합니다. 사실, 이미 예쁜 애니메이션으로 그룹화하고 그룹 해제 할 수 있지만 무엇을해야할지 생각하고 있습니다. 오프 스크린 그룹화 된 주석으로 처리 ... – WASD42

+0

@ WASD42 : 흥미 롭습니다. 그냥 궁금 해서요 : 어떤 그룹화 알고리즘을 사용하고 있습니까? –

관련 문제