Ich versuche, die Kartenansicht auf „uncenter“ und alle Anmerkungen entfernen. der Grund dafür ist, dass die mapView wird von verschiedenem View-Controller verwendet werden, um verschiedene Anmerkungen und Positionen angezeigt werden soll. Was jetzt passiert, ist, dass ich die „entfernen Anmerkungen“ Methode benutzen, und ich entferne sie, aber die Karte bleibt an Ort und Stelle zentriert und damit, wenn die neuen Anmerkungen in kommen, ist es nicht zu bewegen. Gibt es eine Möglichkeit, die Region und wenn dies der Fall zurückgesetzt, welchen Wert setze ich es. Ich habe versucht, Null, Null, und einige berechnete Wert, sondern „Core Animation“, sagt sie alle ungültig sind. Wie bekomme ich das verkleinern und in auf meine neue Anmerkung zurück?
hier ist ein Code
-(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];
}
Das ist die recenter methos ich verwende
- (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;
}
Dieses „else“ Stück wartet, bis der blaue Marmor fällt in dann die Karte rezentriert. Das Problem, das ich mit dem Teil ist, dass, wenn ich zum vorherigen View-Controller zurück i alle Anmerkungen entfernen, so dass, wenn ich in dem User-Standort zurückkommen (aus irgendeinem Grunde) Pop nicht zurück in. Wie bekomme ich das Pop zurück in?
Vielen Dank im Voraus Jungs













