Изменить координату MKOverlay для MKOverlayView - PullRequest
7 голосов
/ 30 января 2012

У меня есть наложение на карту, и я хотел бы изменить его координаты. Для этого я буду вызывать метод setNeedsDisplayInMapRect: после внесения изменений в представление.

Я проверил это, просто изменив fillColor, и он отлично работает:

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

Однако, по-видимому, я ударился о кирпичную стену, пытаясь также изменить координаты центра моего вида наложения (это MKCircleView с MKCircle ). Есть метод в MKAnnotation , которому соответствует MKCircle, называется setCoordinate: - что похоже на то, что мне нужно. К сожалению, свойство circle в MKCircleView доступно только для чтения. Кроме того, свойство overlay в MKOverlayView также доступно только для чтения.

Есть ли способ изменить координаты наложения, не прибегая к удалению вида наложения и добавлению нового (что может вызвать очень заметное мерцание на экране)?

1 Ответ

0 голосов
/ 25 августа 2013

Та же проблема возникает здесь, поэтому я создаю набор методов и вызываю его в соответствии с требованием.

-(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];
        }
    }
}
...