Estoy tratando de la vista del mapa uncenter y eliminar todas las anotaciones. La razón de esto es que el MAPview será utilizada por diferentes controladores de vista para mostrar diferentes anotaciones y lugares. Lo que está pasando ahora es que estoy usando el método de eliminar las anotaciones y que los elimina, pero el mapa permanece centrado en el lugar y por lo tanto, cuando las nuevas anotaciones entran, no se mueve. ¿Hay una manera de restablecer la región y si es así, ¿qué valor puedo restaurarla a. Probé nula, cero y un valor calculado, pero Core Animation dice que son todos válidos. ¿Cómo puedo obtener que para alejar y de vuelta en mis nuevas anotaciones?
Aquí hay un código
-(void)recenterMap {
NSArray *coordinates = [_mapView valueForKeyPath:@annotations.coordinate];
CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
CLLocationCoordinate2D minCoord = {90.0f, 180.0f};
//NSLog(@%@, [coordinates description]);
for (NSValue *value in coordinates) {
CLLocationCoordinate2D coord = {0.0f, 0.0f};
[value getValue: &coord];
if(coord.longitude > maxCoord.longitude) {
maxCoord.longitude = coord.longitude;
}
if(coord.latitude > maxCoord.latitude){
maxCoord.latitude = coord.latitude;
}
if(coord.longitude < minCoord.longitude){
minCoord.longitude = coord.longitude;
}
if(coord.latitude < minCoord.latitude){
minCoord.latitude = coord.latitude;
}
}
MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};
region.center.longitude = (minCoord.longitude + maxCoord.longitude) / 2.0;
region.center.latitude = (minCoord.latitude + maxCoord.latitude) / 2.0;
region.span.longitudeDelta = maxCoord.longitude - minCoord.longitude;
region.span.latitudeDelta = maxCoord.latitude - minCoord.latitude;
[_mapView setRegion: region animated: YES];
}
Esa es la methos recenter estoy usando
- (MKAnnotationView *)mapView: (MKMapView *)mapView viewForAnnotation: (id <MKAnnotation>)annotation{
MKAnnotationView *view = nil;
if(annotation != mapView.userLocation){
Annotation *schoolAnn = (Annotation*)annotation;
view = [self.mapView dequeueReusableAnnotationViewWithIdentifier:@schoolLoc];
if(nil == view){
view = [[[MKPinAnnotationView alloc] initWithAnnotation:schoolAnn reuseIdentifier:@schoolLoc]autorelease];
}
[(MKPinAnnotationView *)view setAnimatesDrop:YES];
[view setCanShowCallout:YES];
}
else {
[self recenterMap];
}
return view;
}
Esta pieza si no espera hasta que el mármol azul cae en el mapa a continuación recentra. El problema que tengo con esa parte es que cuando vuelva a la anterior Vista Controlador puedo eliminar todas las anotaciones, por lo que cuando vuelvo en la ubicación del usuario (por alguna razón) no salta de nuevo. ¿Cómo consigo esto para que aparezca ¿de nuevo en?
Gracias de antemano chicos













