2012-01-30 2 views
6

지도에 오버레이가 있으며 그 좌표를 변경하고 싶습니다. 이 작업을 원활하게 수행하려면보기가 변경된 후에 setNeedsDisplayInMapRect: 메서드를 호출 할 것입니다.MKOverlayView의 MKOverlay 좌표 변경

이 난 그냥하고 fillColor을 변경하여이를 테스트했는데 그것을 잘 작동 : 그러나

overlayView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.3]; 
[overlayView setNeedsDisplayInMapRect:mapView.visibleMapRect]; 

내가 겉으로 또한 센터 내 오버레이 뷰의 좌표를 변경하려고 벽돌 벽에 충돌했습니다 (인 MKCircleViewMKCircle입니다. MKAnnotation에는 MKCircle이 준수하는 setCoordinate:이라는 메서드가 있습니다.이 메서드는 필자에게 필요한 것 같습니다. 불행히도 MKCircleView의 circle 속성은 읽기 전용입니다. 또한 MKOverlayViewoverlay 속성도 읽기 전용입니다.

실제로 오버레이보기를 제거하고 새로운 것을 추가하지 않고 오버레이의 좌표를 변경하는 방법이 있습니까? (화면에서 눈에 띄는 깜박임이 발생합니다.)?

+0

MKPolyline과 유사한 문제가 발생했습니다. 필자의 경우 항상 선이 더 길어 지므로 항상 두 개의 폴리선을 그리고 더 오래된 선을 제거합니다. 이렇게하면 긴 선이 깜박임을 숨 깁니다. – theaob

답변

0

여기에서 같은 문제가 발생하므로 메서드 집합을 만들고 요구 사항에 따라 호출합니다.

-(void)removeAllAnnotationFromMapView{ 
    if ([[self.tmpMapView annotations] count]) { 
     [self.tmpMapView removeAnnotations:[self.tmpMapView annotations]]; 
    } 
} 
-(void)removeAllOverlays{ 
    if ([[self.tmpMapView overlays] count]) { 
     [self.tmpMapView removeOverlays:[self.tmpMapView overlays]]; 
    } 
} 

-(void)removeOverlayWithTag:(int)tagValue{ 
    for (MKOverlayView *oView in [self.tmpMapView overlays]) { 
     if (oView.tag == tagValue) { 
      [self.tmpMapView removeOverlay:oView]; 
     } 
    } 
} 
관련 문제