Aperçu rapide de ce que je fais. UIMapView charge et affiche une seule annotation (jamais plus d'une). Sur la barre de menu, il y a un bouton Me localiser, en appuyant sur le userLocation est trouvé et affiché comme une deuxième annotation. J'ai alors MapView zoom arrière pour s'adapter à ces deux annotations dans la gamme, mais je suis incapable de trouver un moyen approprié de le faire. En fonction de l'emplacement de la première annotation par rapport à l'emplacement de l'utilisateur, il est possible que le zoom arrière ne soit pas suffisant. Par exemple, si l'annotation est au nord-ouest de l'utilisateur, il effectue un zoom arrière très fin.Quel est le meilleur moyen de réduire et d'ajuster toutes les annotations dans MapKit?
Mais si l'annotation est au sud-est de l'utilisateur, il suffit de zoomer suffisamment pour qu'ils soient juste coupés et vous devez faire un zoom arrière manuellement un peu plus. Voici le code que j'utilise, la variation de certains autres que j'ai trouvés sur SO.
CLLocation *whereIAm = mapView.userLocation.location;
float lat = whereIAm.coordinate.latitude;
float lon = whereIAm.coordinate.longitude;
CLLocationCoordinate2D southWest = {[currentLatitude floatValue], [currentLongitude floatValue]};
CLLocationCoordinate2D northEast = southWest;
southWest.latitude = MIN(southWest.latitude, lat);
southWest.longitude = MIN(southWest.longitude, lon);
northEast.latitude = MAX(northEast.latitude, lat);
northEast.longitude = MAX(northEast.longitude, lon);
CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
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 = 7.0;
MKCoordinateRegion savedRegion = [mapView regionThatFits:region];
[mapView setRegion:savedRegion animated:YES];
[locSouthWest release];
[locNorthEast release];
Y at-il une meilleure façon intégrée dans MapKit pour zoomer juste de telle sorte que les deux annotations ont, disons un demi-pouce entre eux au cadre extérieur? Je ne m'inquiète pas vraiment si l'utilisateur doit zoomer après, je veux juste qu'il fasse un zoom arrière correctement.
Hmm J'ai essayé celui-ci à un moment donné et cela n'a pas fonctionné comme prévu non plus. J'ai eu les mêmes résultats. Je vais faire un coup rapide et revoir. Je rapporterai. –
Que voulez-vous dire par "comme prévu?" Quels problèmes avez-vous? –
Je l'ai juste mis en œuvre et ça marche mieux que ce que j'avais, donc je m'en tiendrai là. La seule chose qui est coupée maintenant est la légende que je peux résoudre en le faisant repop après l'animation. Merci de votre aide. –