2012-05-01 4 views
0

MKPolygonView를 서브 클래 싱하고 drawMapRect를 오버 라이딩하여 MKMapView에 이미지 (2.5 MB, PNG 이미지 데이터, 1240 x 1240, 8 비트/컬러 RGBA, 비 인터레이스)를 그립니다. zoomScale : inContext는 : -method으로는 다음과OverlayView 드로잉 속도 향상

-(void) drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context { 

CGRect theRect   = [self rectForMapRect:overlayRect]; 
CGRect clipRect  = [self rectForMapRect:mapRect]; 


CGContextClipToRect(context, clipRect); 

CGContextDrawImage(context, theRect, imageReference); 

}가

overlayRect지도 (하드 initWithOverlay: 부호화 초기화) imageReference의 참조를 보유의 이미지의 위치 및 크기를 정의하는 MKMapRect 인 UIImage에로드되고을 호출하여 가져온 이미지 (또한 initWithOverlay: 단위) UIImage 예를

내 MKMapView 더 나은 해상도로 타일을 다시 그려야 확대 할 때 같은시기에 다시 복용지도에 처음으로 이미지를 그리는 8~14초 정도 걸립니다에. 정말 길어 보이고 MapKit을 처음 사용하는 것처럼 근본적으로 잘못된 일을하는지 궁금합니다.

+0

그것은 1024 × 1024의 8 비트/컬러 이미지의 2.5 MB 이미지 아니다. 큰 이미지를 압축하는 데는 시간이 걸립니다. Bill Dudney가 iBookStore에서 이미지를로드하는 짧은 ibook을 읽으시기 바랍니다. –

답변

1

타일 이미지를 사용하여 성능을 향상시킬 수 있습니다. Apple은 WWDC 2010에서이 기술을 사용했습니다.이 예제는 https://github.com/klokantech/Apple-WWDC10-TileMap에서 볼 수 있습니다.

또한이 블로그의 과정을 설명 : http://shawnsbits.com/blog/2010/12/23/mapkit-overlays-session-1-overlay-map/

+0

감사합니다. 이미지가 이미 타일처럼 보이게 렌더링 된 것처럼 이것을 고려하지 않았습니다. 그래도 한 번 해보고 돌아올거야 :) – SmokeDispenser