2010-11-29 6 views
3

상황은 다음과 같습니다. 사용자 지정 주석을 사용하여지도에 이미지를 표시하고 있습니다. 모든 것은 잘 작동하지만지도가 축소되면 축소되도록 AnnotationView 크기를 크기로 시각적으로 향상시키고 싶습니다.. 분명히 더 많은 주석이 화면을 채우고 서로 겹치지 않도록 사용자가 더 많은 주석을 볼 수 있도록 축소해야하기 때문에이 작업을 수행하려고합니다. (물론지도가 다시 확대 될 때 AnnotationViews를 확대하고 싶습니다.)MapKit 확대/축소 수준에 따라 사용자 지정 MKAnnotationView 크기 조정

저는 regionDidChangeAnimated가 호출 될 때마다지도에서 모든 주석을 제거하고 다시 추가함으로써이 작업을 수행했습니다. 그러나 이러한 이미지는 인터넷에서로드되므로 주석을 제거했기 때문에 이미지를 다시 다운로드하는 것이 의미가없는 것처럼 보입니다.

나는 상황을 잘 설명해 주었고, 앞으로도 그렇게 할 수 있기를 바랍니다.

미리 감사드립니다.

P. iOS 4.0으로 개발 중입니다.

답변

1

iOS 4.0을 사용하고 있으므로 MKAnnotationView 대신 MKOverlay 프로토콜을 준수하는 클래스를 사용하는 것이 좋습니다. 오버레이는지도로 확대하고 적절하게 조정됩니다. 아마도 모든 오버 헤드를 처리하기 위해 1 개의 오버레이를 사용할 수 있습니다. 2010 WWDC 협상에서 제공된 HazardMap 데모보기 http://developer.apple.com

또는 k 근접 이웃 알고리즘과 같은 것을 사용하여 확대/축소 눈금 당 주석을 그룹화 할 수 있습니다. 그러나 많은 주석이 있으면 다소 느려질 수 있습니다. 나는 수천 개의 주석으로 한 번 시도해 보았고 성능이 저하되는 것을 좋아하지 않았습니다. 나는 < 1000 개의 주석이이 방법으로 성능이 좋을 수도 있다고 생각한다.

+0

감사합니다. MKOverlay 방식에 대해서는 생각해 본 적이 없었습니다. 나는 MKOverlay 프로토콜과 HazardMap을 점검했다. 그리고 나는 약간의 비틀기와 함께 그것을 나의 문제에 적용 할 수있을 것이라고 생각한다. 한 가지 : MKOverlay가 영역이므로 (지도상의 점인 MKAnnotation과 비교할 때)지도가 축소 될 때 이미지가 너무 작아지지 않습니까? 프로젝트를 명확하게하기 :지도에는 flickr의 지리적 태그가 지정된 사진이 표시되므로 정확한 미리보기가 있으며 이웃 한 사진도 많이있을 수 있습니다. 내가 너를 혼란스럽게하지 않았 으면 좋겠다. 다시 한번 감사드립니다. – kiblee

+0

예,보기에 너무 작아 질 수 있습니다. 그러나 오버레이를 사용하면 현재 MKZoomScale에 액세스 할 수 있습니다 (MKOverlayView drawMapRect : zoomScale : inContext 참조). 따라서 zoomScale을 기반으로 그릴 이미지의 픽셀 크기를 조정할 수 있습니다. – afarnham

1

당신이 이미 올바른 길을 가고있는 것처럼 들리며 유일한 문제는 이미지 다운로드입니다. 문서 디렉토리 (또는 앱을 종료 할 때 캐시 디렉토리에 저장하려면 캐시 디렉토리)에 파일을 작성하고 캐시 파일을받을 때 먼저 캐시 디렉토리를 작성하여 캐쉬 할 수없는 특별한 이유가 있습니까?

+0

흠, 캐시 디렉토리에 이러한 이미지를 캐시하기위한 메모리 제한이 있습니까? 캐시에서 이러한 모든 이미지를 관리하는 것이 어려울지라도 이것은 간단하지만 효과적인 솔루션 일 수 있습니다. 이미지는 Flickr 이미지의 축소판입니다. – kiblee

+0

구체적인 제한이 있는지는 분명하지 않지만 실용적인 제한이 있습니다. 많은 사람들이 불행한 공간을 먹는다면, 그것이 자신이 반드시 당신이라는 것을 알지는 못합니다. 최신 200 개의 이미지 또는 500 개를 제외하고 모두를 삭제하는 가벼운 관리 캐시 또는 합리적인 것이 무엇이든간에. –

관련 문제