Je cherche de l'aide pour finir du code sur la définition de la région sur un MKMapView en fonction de l'annotation d'emplacement actuelle et d'une annotation que j'ai définie.Définir la région MKMapView pour la centrer sur deux annotations
Je veux calculer la distance entre les deux et définir le centre entre les deux, puis effectuer un zoom arrière pour les deux sont en vue. Il semble fonctionner correctement dans Simulator pour moi, mais malheureusement le userLocation.coordinate est fixé à Apple HQ. Quand je teste sur un appareil, je vois un comportement bizarre. Souvent, il effectuera un zoom arrière et définira une région appropriée si les deux annotations sont légèrement horizontales sur la même latitude, mais si la distance verticale est plus grande, le zoom n'est pas effectué correctement.
Je code utilisé trouvé here, et édité un peu pour répondre à mes besoins:
CLLocationCoordinate2D southWest = mapView.userLocation.coordinate;
CLLocationCoordinate2D northEast = southWest;
southWest.latitude = MIN(southWest.latitude, annotation.coordinate.latitude);
southWest.longitude = MIN(southWest.longitude, annotation.coordinate.longitude);
northEast.latitude = MAX(northEast.latitude, annotation.coordinate.latitude);
northEast.longitude = MAX(northEast.longitude, annotation.coordinate.longitude);
CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
// This is a diag distance (if you wanted tighter you could do NE-NW or NE-SE)
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast];
MKCoordinateRegion region;
region.center.latitude = (southWest.latitude + northEast.latitude)/2.0;
region.center.longitude = (southWest.longitude + northEast.longitude)/2.0;
region.span.latitudeDelta = meters/111319.5;
region.span.longitudeDelta = 0.0;
MKCoordinateRegion savedRegion = [mapView regionThatFits:region];
[mapView setRegion:savedRegion animated:YES];
[locSouthWest release];
[locNorthEast release];
Une chose qui m'a confondu est qu'il dit northEast = southWest
...
Merci d'avance à tous ceux qui qui a obtenu une aide et entrée :)
Parfait! Les deltas étaient le problème que je peux voir. Merci beaucoup! – runmad
Malheureusement, cette page ne semble pas répondre. Quelqu'un at-il une version en cache de la page? Merci! – jowie
@jowie J'ai été en mesure de trouver une version en cache de la page en utilisant la machine de retour. J'espère que ça aide. http://web.archive.org/web/20100612181520/http://codisllc.com/blog/zoom-mkmapview-à-fit-annotations – avelis