Fondo rápido de lo que estoy pasando. UIMapView carga y muestra una sola anotación (nunca más de una). En la barra de menú, hay un botón Ubicarme, al tocar se encuentra la ubicación del usuario y se muestra como una segunda anotación. Luego, tengo MapView alejamiento para ajustar ambas anotaciones en el rango, pero no puedo encontrar una forma adecuada de hacerlo. Dependiendo de dónde se coloque la primera anotación en relación con la ubicación del usuario, a veces no se aleja lo suficiente.Cuál es la mejor manera de alejar y ajustar todas las anotaciones en MapKit
Por ejemplo, si la anotación está al noroeste del usuario, se aleja bien. Pero si la anotación está al sudeste del usuario, solo se aleja lo suficiente como para que se corte y tiene que alejarse manualmente un poco más. Aquí está el código que estoy usando, variación de algunos otros que he encontrado en 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];
¿Hay una mejor manera integrada en MapKit para ampliar acaba de salir de modo que ambos tienen anotaciones, digamos media pulgada entre ellos en el marco exterior? Realmente no me importa si el usuario tiene que acercarse más, solo quiero que se aleje correctamente.
Hmm Probé este en un punto y tampoco funcionó como se esperaba. Yo tuve los mismos resultados. Sin embargo, voy a darle una oportunidad rápida y volver a ver. Informaré de nuevo. –
¿Qué quiere decir con "como se esperaba"? ¿Qué problemas tienes? –
Acabo de implementarlo y funciona mejor de lo que tenía, así que me quedaré con él. Lo único que se corta ahora es la leyenda, que puedo resolver haciéndola repop después de la animación. Gracias por tu ayuda. –