MapKit:更新MKCircle覆盖的半径属性而不闪烁

时间:2012-07-04 10:10:54

标签: objective-c mapkit

我有一个 MKMapView (self.mapView),我在其中添加了一个具有特定半径的 MKCircle 覆盖(self.radiusOverlay)(self.location.radius)。

MKMapView 正下方有一个 UISlider (self.radiusSlider),用于更改 Value Changed 上的叠加半径:

- (void)viewWillAppear:(BOOL)animated {

    self.radiusOverlay = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([self.location.latitude floatValue], [self.location.longitude floatValue]) radius:[self.location.radius floatValue]];

    [self.mapView addOverlay:self.radiusOverlay];

    self.radiusSlider.value = [self.location.radius floatValue];
}

这是进行半径更新的方法:

- (IBAction)updateLocationRadius:(UISlider *)sender {

    [self.mapView removeOverlay:self.radiusOverlay];

    self.location.radius = [NSNumber numberWithFloat:sender.value];

    self.radiusOverlay = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([self.location.latitude floatValue], [self.location.longitude floatValue]) radius:[self.location.radius floatValue]];
    [self.mapView addOverlay:self.radiusOverlay];
}

这种方法很好,但看起来不太好:通过删除并重新添加 self.radiusOverlay ,我会使叠加层闪烁。

我该怎么做才能避免这种闪烁?

0 个答案:

没有答案