简体   繁体   中英

MkCircle with MapKit, synchronyse with current user location

I am working in a project with MapKit, and I want to update the location of circle in the center of current user location. I can do that by implementing this methods. The problem is that user location when changes its coordinates animates and the method DidUpdateUserLocation doesnt get called everytime.

What I want to do is smoothly changing position with these methods faster and animating the circle like user location (blue dot) changes (dispatch wont do any of this tasks faster)

-(void)viewDidLoad
{
    [super viewDidLoad];
    [self UpdateCirclePosition];
}

This method get executed when user location changes.

- (void)mapView:(MKMapView *)mv didUpdateUserLocation:(MKUserLocation *)userLocation1
{
    [self UpdateCirclePosition];
}

This method is to set new coordinates for the circle

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

And this is the method when overlay changes

- (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 gets the latest position, but then you ignore it and call UpdateCirclePosition . You should pass the coordinates from userLocation1 into UpdateCirclePosition and use them to reposition your circle.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM