gpt4 book ai didi

ios - 在 MKMapView 上调整 MKCircle 的大小闪烁

转载 作者:行者123 更新时间:2023-11-29 12:41:28 25 4
gpt4 key购买 nike

几天来我一直在尝试解决一个问题,但没有得到好的结果。我在 MKMapView 上有一个点和一个圆。我有 UISlider 并想更改 MKCircle 的大小。大小已更改,但在调整大小时,此圆圈会闪烁。

这是我的代码:

@implementation ViewController {
Annotation *_annotation;
}

- (void)viewDidLoad
{
[super viewDidLoad];
_annotation = [[Annotation alloc] init];
[_annotation setCoordinate: CLLocationCoordinate2DMake(0, 0)];
[self.mapView addAnnotation:_annotation];
[self.mapView setCenterCoordinate:_annotation.coordinate animated:YES];

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(_annotation.coordinate, 1000, 1000);
[self.mapView setRegion:region];

[self _addCircleOnCurrentLocationWithRadius:_slider.value];
}

- (IBAction)onSliderChanged:(UISlider *)sender {
[self.mapView removeOverlays:self.mapView.overlays];
[self _addCircleOnCurrentLocationWithRadius:sender.value];
}

- (void)_addCircleOnCurrentLocationWithRadius:(CGFloat)radius {
MKCircle *circle = [MKCircle circleWithCenterCoordinate:_annotation.coordinate radius:radius];
[self.mapView addOverlay:circle level:MKOverlayLevelAboveRoads];
}

#pragma mark - MKMapViewDelegate
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
MKPinAnnotationView *view = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"Annotation"];
return view;
}

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay {
MKCircleView *view = [[MKCircleView alloc] initWithCircle:overlay];
view.fillColor = [UIColor redColor];
view.strokeColor = [UIColor blueColor];
view.alpha = 0.3;
return view;
}

@end

我试过:

  • 删除旧的覆盖层并添加新的覆盖层,
  • 使用 NSOperationQueue 执行上述操作

这里是 a screen recording how it looks like .

我看到这是可能的,Apple 在 Reminders 应用程序中做到了这一点。

我还熟悉以下主题:

提前谢谢你。

编辑我做到了。我将在支持今天或明天调整大小的类(class)中添加一个答案。

最佳答案

我通过创建 MKCircleView 的子类并覆盖 - (void)drawMapRect:(MKMapRect)mapRect zoomScale:(MKZoomScale)zoomScale inContext:(CGContextRef)ctx 方法来实现。 TSCircleView class is shared on github here. .

关于ios - 在 MKMapView 上调整 MKCircle 的大小闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24766327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com