iOS не работает удаление оверлеев MKMapView

Я хотел бы в какой-то момент удалить все наложения на моей карте, и я пробовал разные способы, но это не работает.

Последняя попытка, которую я сделал [self. mapView removeOverlays: self.mapView.overlays]; и по-прежнему не работает. Есть идеи, как мне удалить эти наложения?

Спасибо.

ОБНОВЛЕНИЕ 1

У меня ошибка: malloc: *** ошибка для объекта 0x5adc0c0: освобождаемый указатель не был выделен *** установить точку останова в malloc_error_break для отладки

Думаю, я знаю почему, но не знаю, как это исправить ... Вот код, когда мне нужно нарисовать еще одну линию на моем mapView:

// Create a c array of points. 
MKMapPoint *pointsArray = malloc(sizeof(CLLocationCoordinate2D) * 2);

// Create 2 points.
MKMapPoint startPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(oldLatitude, oldLongitude));
MKMapPoint endPoint = MKMapPointForCoordinate(CLLocationCoordinate2DMake(newLatitude, newLongitude));

// Fill the array.
pointsArray[0] = startPoint;
pointsArray[1] = endPoint;

// Erase polyline and polyline view if not nil.
if (self.routeLine != nil) {
    [_routeLine release];
    self.routeLine = nil;
}

if (self.routeLineView != nil) {
    [_routeLineView release];
    self.routeLineView = nil;
}

// Create the polyline based on the array of points.
self.routeLine = [MKPolyline polylineWithPoints:pointsArray count:2];

// Add overlay to map.
[self.mapView addOverlay:self.routeLine];

// clear the memory allocated earlier for the points.
free(pointsArray);

// Save old coordinates.
oldLatitude = newLatitude;
oldLongitude = newLongitude;

Поэтому я освобождаю объект routeLine , который является предыдущим наложением. Поэтому, когда я попытался удалить его, он вылетел, потому что он уже был освобожден.

Вот код для делегата mapView для добавления представлений наложения:

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

    if(overlay == _routeLine) {
        // If we have not yet created an overlay view for this overlay, create it now. 
        if(self.routeLineView == nil) {
            self.routeLineView = [[[MKPolylineView alloc] initWithPolyline:_routeLine] autorelease];

            self.routeLineView.fillColor = [UIColor blueColor];
            self.routeLineView.strokeColor = [UIColor blueColor];

            // Size of the trace.
            self.routeLineView.lineWidth = routeLineWidth;
        }

        overlayView = self.routeLineView;
    }

    return overlayView;
}

Если вы, ребята, знаете, как я могу исправить эту проблему, удалив все наложения из моего MKMapView это было бы здорово!

ОБНОВЛЕНИЕ 2

Я попытался не выпускать объекты routeLine и routeLineView , и теперь он работает. Вроде утечек тоже нет. Итак, теперь я делаю следующее:

// Erase polyline and polyline view if not nil.
if (self.routeLine != nil) {
    //[_routeLine release];
    self.routeLine = nil;
}

if (self.routeLineView != nil) {
    //[_routeLineView release];
    self.routeLineView = nil;
}
10
задан Dachmt 16 June 2011 в 18:18
поделиться