ios swift2 mapkit

ios - Obtenga las coordenadas del centro de MapKit(Swift 2) y visualice en UILabel



swift2 (3)

Estoy desarrollando una aplicación iOS con XCode 7.2 y Swift 2.1, y he implementado con éxito un mapa MapKit en mi aplicación. El mapa se carga perfectamente y se centra en la ubicación actual del usuario.

Ahora quiero recuperar las coordenadas del centro si el usuario mueve el centro del mapa a una nueva ubicación. Las coordenadas de esta nueva ubicación se "capturarán" con solo presionar un botón (consulte el botón "Establecer referencia de red" en el archivo adjunto adjunto) y se mostrarán en una etiqueta.

Moverse de A a B y establecer nuevas coordenadas del centro

Lo más cerca que he llegado a la respuesta está aquí , y he implementado ese código, pero todavía no puedo encontrar la forma de actualizar la etiqueta con las coordenadas haciendo clic en el botón IBOutlet que he creado.

¡¿Que me estoy perdiendo aqui?!

Cualquier ayuda sería muy apreciada, ¡gracias de antemano!

---------------- PREGUNTA DE SEGUIMIENTO ------------------

Ahora que hemos resuelto el problema y tenemos la etiqueta poblada con las nuevas coordenadas del centro, tengo una pregunta más, probablemente una supervisión de novato, pero estoy en una curva de aprendizaje abrupta aquí, así que por favor tengan paciencia conmigo. .

Hemos determinado con éxito las coordenadas del centro y ahora están establecidas como mapLongitude y mapLatitude dentro de la función que hemos creado.

Tengo otras dos variables ( newTargetLong y newTargetLat ) que forman parte de una matriz de valores que se pasarán al siguiente controlador de vista y quiero:

let newTargetLong = mapLongitude let newTargetLat = mapLatitude

para que la nueva latitud y longitud se puedan agregar a la matriz con una instrucción .append .

Pero por alguna razón, simplemente no puedo sacar esos dos valores de esa función. ¿Qué debo hacer para lograr eso?


Declare var center = "" en la parte superior de su clase con otras declaraciones. En el método a continuación, debe cambiar automáticamente el valor del center :

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) { center = mapView.centerCoordinate }

Cuando presione su botón, establezca el valor de su etiqueta en el valor de centro.

self.yourLabelName.text = center

Para mostrar como "Latitud: ... Longitud: ...", haga lo siguiente:

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) { let mapLatitude = mapView.centerCoordinate.latitude let mapLongitude = mapView.centerCoordinate.longitude center = "Latitude: /(mapLatitude) Longitude: /(mapLongitude)" print(center) }


OK, así que lo hice funcionar con algunas pequeñas alteraciones en el código proporcionado por @AppDevGuy. Esto es lo que hice:

func mapView(myMap: MKMapView, regionDidChangeAnimated animated: Bool) { let center = myMap.centerCoordinate let mapLatitude = center.latitude let mapLongitude = center.longitude let latAndLong = "Lat: /(mapLatitude) /nLong: /(mapLongitude)" self.TargetGridReference.text = latAndLong }

Y para el botón presiona:

@IBAction func SetTargetGridReference(sender: UIButton) { return mapView(myMap, regionDidChangeAnimated: true) }

La salida en el UILabel se ve así:

Lat: -34.5678901234567 Long: 19.1234567890123

No estoy seguro si esto es torpe o elegante, ¡pero funciona como un encanto! ¡He comprobado la salida y las coordenadas son perfectas!

Una última pregunta que surge de esto: ¿hay alguna manera de acortar esos valores de latitud y longitud para decir 6 dígitos, en lugar de los 13 que tiene actualmente?

Gracias @AppDevGuy! ¡Sinceramente apreciado!


Primero estoy asumiendo: no está seguro de cuándo y dónde actualizar el texto de la Etiqueta (que creó)

Luego, basándote en tu publicación vinculada sobre cómo obtener la coordenada central actual, creo que puedes intentar agregar una línea en esta diversión:

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) { var center = mapView.centerCoordinate #add a line here to update the label }

Dado que cada vez que el usuario vuelve a centrar el mapa, se llamará a esta función delegada y la etiqueta se actualizará automáticamente con la nueva coordenada central actual.