我正在使用MapKit进行一个项目,我想更新当前用户位置中心的圆圈位置。我可以通过实现此方法来做到这一点。问题是用户位置在更改其坐标时会动画化,并且不会每次都调用方法 DidUpdateUserLocation。
我想做的是更快地使用这些方法平滑地更改位置,并像用户位置(蓝点)更改一样对圆圈进行动画处理(调度不会更快地完成任何这些任务)
-(void)viewDidLoad
{
[super viewDidLoad];
[self UpdateCirclePosition];
}
当用户位置更改时,将执行此方法。
- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation1
{
[self UpdateCirclePosition];
}
此方法是为圆设置新坐标
-(void)UpdateCirclePosition
{
//Removing past layouts from MapView
[self.mapView removeOverlays: [self.mapView overlays]];
//Set the circle in the middle of the current user location
MKCircle *circle = [MKCircle circleWithCenterCoordinate:locationManager.location.coordinate radius:10];
[self.mapView addOverlay:circle];
}
这是叠加层更改时的方法
- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay
{
MKCircleView *circleView = [[MKCircleView alloc] initWithOverlay:overlay];
circleView.strokeColor = [UIColor redColor];
if (something)
{
circleView.fillColor = [[UIColor greenColor] colorWithAlphaComponent:0.2];
}
else
{
circleView.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.2];
}
circleView.lineWidth = 0.5;
return circleView;
}
didUpdateUserLocation
获得最新位置,但随后您忽略它并调用 UpdateCirclePosition
。您应该将坐标从userLocation1
传递到UpdateCirclePosition
,并使用它们来重新定位您的圆。