swift ios8 mapkit

swift - openInMapsWithLaunchOptions no funciona?



ios8 mapkit (1)

Estoy pasando opciones para el mapa, pero esto no parece hacer nada con el nivel de zoom? Mantiene el mismo bajo nivel de zoom. ¿Qué me he perdido?

func openMapForPlace() { let regionDistance:CLLocationDistance = 10000 var coordinates = CLLocationCoordinate2DMake(detailItem!.geoLatitude, detailItem!.geoLongitude) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance) var options = [ MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span) ] var placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) var mapItem = MKMapItem(placemark: placemark) mapItem.name = detailItem!.cityName mapItem.openInMapsWithLaunchOptions(options) }


La documentación de Apple no lo menciona pero a partir de las pruebas, parece que openInMapsWithLaunchOptions() parece ignorar la opción MKLaunchOptionsMapSpanKey si uno o más MKMapItem se agregan al mapa.

El siguiente código funciona como se espera, con el zoom del mapa ajustado correctamente cuando se modifica el parámetro de distancia (prueba con 1000 y 10000000, para ver la diferencia):

func openMapForPlace() { let regionDistance: CLLocationDistance = 10000000 let coordinates = CLLocationCoordinate2DMake(40, 0) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance) let options = [ MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span) ] MKMapItem.openMapsWithItems([], launchOptions: options) }

Sin embargo, tan pronto como se MKMapItem un MKMapItem al mapa, el zoom deja de funcionar.

func openMapForPlace() { let regionDistance: CLLocationDistance = 10000000 let coordinates = CLLocationCoordinate2DMake(40, 0) let regionSpan = MKCoordinateRegionMakeWithDistance(coordinates, regionDistance, regionDistance) let options = [ MKLaunchOptionsMapCenterKey: NSValue(MKCoordinate: regionSpan.center), MKLaunchOptionsMapSpanKey: NSValue(MKCoordinateSpan: regionSpan.span) ] let placemark = MKPlacemark(coordinate: coordinates, addressDictionary: nil) let mapItem = MKMapItem(placemark: placemark) mapItem.name = "Test" MKMapItem.openMapsWithItems([mapItem], launchOptions: options) }