MKCircle не обновляет радиус, но переводит - PullRequest
4 голосов
/ 07 января 2012

Я должен нарисовать MKCicle в MKMapView. Затем я должен перерисовать его, когда пользователь с помощью ползунка изменит радиус. Я удаляю это, и я воссоздаю это, повторно добавляя это к карте. Но вместо того, чтобы делать то, что я ожидаю, я вижу, что MKCircle переводит по карте, сохраняя тот же размер.

Вот мой код:

- (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id)overlay
{
    MKOverlayView* overlayView = nil;

    if(overlay == self.circle)
    {
        //if we have not yet created an overlay view for this overlay, create it now.
        if(nil == self.circleView)
        {
            self.circleView = [[[MKCircleView alloc] initWithCircle:self.circle] autorelease];
            self.circleView.fillColor = [UIColor blueColor];
            self.circleView.strokeColor = [UIColor blueColor];
            self.circleView.alpha = 50;
            self.circleView.lineWidth = 2;
        }

        overlayView = self.circleView;
    }

    return overlayView;
}

-(void)drawPolygonWithLocation
{
    [self.mapView removeOverlay: self.circle];

    MKCoordinateRegion region;
    region.center.latitude = self.geofenceLocation.latitude;
    region.center.longitude = self.geofenceLocation.longitude;
    region.span.latitudeDelta = 0.005;
    region.span.longitudeDelta = 0.005;

    MKCoordinateRegion adjustedRegion = [self.mapView regionThatFits: region];
    [self.mapView setRegion:adjustedRegion animated:TRUE];

    self.radius = (double)(slRadius.value);
    NSLog(@"Raggio: %f", self.radius);
    NSLog(@"Lat: %f, Lon: %f", region.center.latitude, region.center.longitude);
    self.circle = [MKCircle circleWithCenterCoordinate:self.geofenceLocation.coordinate radius: self.radius];
    NSLog(@"CIRCLE: radius %f Lat: %f, Lon: %f", self.circle.radius, self.circle.coordinate.latitude, self.circle.coordinate.longitude);

    [self.mapView addOverlay:self.circle];
}

-(IBAction)updateRadius:(id)sender
{ 
    [self drawPolygonWithLocation];
}

NSLog записывает в консоль правильные значения, центр не изменяется, а радиус изменяется в соответствии с пользовательским вводом. Но, опять же, MKCircle переводится на северо-запад.

Спасибо заранее, Самуэль Рабини

1 Ответ

3 голосов
/ 07 января 2012

Fixed.Я просто добавляю

self.circleView = nil;

перед

[self.mapView addOverlay:self.circle];

, чтобы все работало нормально.

Самуил

...