Je suis en train de « uncenter » la vue de la carte et supprimer toutes les annotations. la raison en est que le Mapview sera utilisé par différents contrôleurs d'affichage pour afficher les différentes annotations et les lieux. Ce qui se passe est maintenant que je suis en utilisant l'option « Supprimer annotations » méthode et je les retire, mais la carte reste centrée sur place et donc quand les nouvelles annotations viennent, il ne bouge pas. Est-il possible de réinitialiser la région et si oui, quelle valeur réinitialiser à. J'ai essayé nul, zéro et une valeur calculée, mais « l'animation de base », dit qu'ils sont tous les invalides. comment puis-je obtenir que pour un zoom arrière et dos dans mes nouvelles annotations?
voici un 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];
}
Cest le Recentrer methos j'utilise
- (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;
}
Cette pièce « autre » attend jusqu'à ce que la tombe en marbre bleu dans la carte puis recentre. Le problème que j'ai avec cette partie est que quand je vais revenir à la précédente View Controller supprimer toutes les annotations, donc quand je reviens à l'emplacement de l'utilisateur (pour une raison quelconque) ne revient pop pas. Comment puis-je obtenir cela pop revenir?
grâce à d'avance les gars













