2014-02-28 1 views
2

현재지도 기능을 사용 중입니다. 대부분의 코드는이 기능에 대해 다른 사람이 개발했습니다.MKMapView 확대/축소 작업 후 오버레이가 급하게 그려지지 않습니다.

mkpolygon 개체의 배열을 설정하여지도에 mkoverlays를 추가합니다. 이 객체는 백엔드에서받은 jSon에 의해 폴리곤 좌표를받습니다. 지금까지 코드를 점검 한 결과, draw 메소드를 오버라이드하지 않았습니다. 객체는 폴리곤으로 초기화되고 mapView에 추가됩니다.

우리는이 방법에 의해지도에 선 및 다각형을 추가하는 지금 좋은하지 않습니다이 개 행동이 있습니다

다각형 오버레이에 접촉 할 경우, 자신의 색을 변경해야합니다

1) ->하지만 아주 아주 slow 2)지도가 확대/축소 된 경우 선이 매우 선명하지 않고 선명하지 않습니다. 매우 시끄럽게 보입니다.

이 사용 사례에 대한 전반적인 접근 방식이 잘못된 것입니까?

+0

이러한 두 가지 문제도 있습니다. 내가 알 수있는 한, 오버레이 렌더러가 필요에 따라 설정되면 전체지도가 다시 표시됩니다. 그리고 렌더러는 경계 밖으로 벗어나도록 요청받습니다. 아직도 조사 중이 야. –

답변

0

지도 기반 앱의 오버레이 렌더링 속도가 너무 빨라서 가장자리 주변의 과도한 흐려짐이 (간헐적으로) 발생합니다.

좋은 소식은 300 % 성능 향상을 가져온 버그에 대한 해결책을 찾았습니다. 나는 렌더러가 오버레이의 바깥 쪽을 그려 내기 위해 반복적으로 요청 받고 있음을 알아 차렸다.

이 변경으로
- (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)context 
{ 
    if (!MKMapRectIntersectsRect([self.overlay boundingMapRect], mapRect)) { 
     return; 
    } 
    [super drawMapRect:mapRect zoomScale:zoomScale inContext:context]; 
} 

, 우리는 초당 2 ~ 3 다시 그리기에 초당 다시 그리기 미만에서 개선 : 그래서 난 그냥 경계가이처럼 내 MKPolygonRenderer 서브 클래스의 그리기 방법을 확인했다.

+0

self.overlay에는 무엇이 포함되어 있습니까? 1 오버레이에 불과합니까? 오버레이 배열은 무엇입니까? 또한 drawMapRect를 호출하는 사람은 누구입니까? 감사! –

+0

@VanDuTran 이들은 Apple의'MKOverlayRenderer' 클래스에있는 API이므로이 질문을 이해할 수 있을지 확신 할 수 없습니다. 'overlay' 속성은'id '유형입니다. 따라서 배열이 아닙니다. 그리고'drawMapRect'는 내부 Apple 코드에 의해 호출됩니다. [예제 프로젝트] (https://dl.dropboxusercontent.com/u/2183704/Map%20Overlay%20Pared%20Down.zip)를 살펴볼 수 있습니다. 도움이된다면 Apple에게 보냈습니다. –

+0

실제로 의미하는 바는 언제입니까? API가 오버레이를 새로 고 칩니 까? "rendererForOverlays"는 언제 호출됩니까? drawMapRect와 rendererForOverlay 사이의 관계를 얻지 못했습니다. –

관련 문제