Me gustaría eliminar todas las superposiciones de mi mapa en un punto, e intenté de diferentes maneras, pero nunca funciona.iOS eliminando las superposiciones MKMapView que no funcionan
Última vez que lo hice [self.mapView removeOverlays:self.mapView.overlays];
y todavía no funciona. ¿Alguna idea de cómo puedo eliminar esas superposiciones?
Gracias.
ACTUALIZA 1
tengo el error: malloc: *** error for object 0x5adc0c0: pointer being freed was not allocated *** set a breakpoint in malloc_error_break to debug
Creo que sé por qué, pero realmente no sé cómo solucionarlo ... Aquí está el código cuando necesito dibuje otra línea en mi 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;
Así que liberar el objeto routeLine
que es la superposición anterior. Entonces, cuando traté de eliminarlo, se cuelga porque ya ha sido desasignado.
Este es el código para el delegado MAPview para añadir puntos de vista de superposición:
- (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;
}
Si ustedes saben cómo puedo solucionar este problema, la eliminación de todas las superposiciones de mi MKMapView que sería increíble!
ACTUALIZACIÓN 2
Traté de no liberar mis routeLine
y routeLineView
objetos y funciona ahora. Parece que no hay fugas también. Así que ahora estoy haciendo esto:
// 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;
}
Eso es lo que hice :) Muchas gracias @ Anna Karenina! – Dachmt