12

he comprobado las propiedades en la documentación para MKCoordinateRegion, MKCoordinateSpan y MKMapView a ver que hay una manera de conseguir la topLeft y bottomRight Lat Long de la vista del mapa y que no encontrar alguna. Sé que el tramo me da el delta largo Lat, pero ¿hay alguna manera de obtener el TopLeft y Latitud inferior latitud desde la vista del mapa sin tener que hacer cálculos extraños?Get topLeft y bottomRight de MKCoordinateRegion MKMapView

He encontrado this.

No estoy seguro si eso es lo suficientemente precisa. ¿Alguna votación para eso?

Respuesta

25

No creo que estos cálculos se califican como raro:

CLLocationCoordinate2D center = region.center; 
CLLocationCoordinate2D northWestCorner, southEastCorner; 
northWestCorner.latitude = center.latitude + (region.span.latitudeDelta/2.0); 
northWestCorner.longitude = center.longitude - (region.span.longitudeDelta/2.0); 
southEastCorner.latitude = center.latitude - (region.span.latitudeDelta/2.0); 
southEastCorner.longitude = center.longitude + (region.span.longitudeDelta/2.0); 
+0

necesidad de cambiar +/- aquí para que sea correcta –

+1

Gracias por corregirme, Andriy. Actualicé el código anterior, por lo que debería ser correcto ahora. –

+0

Excelente. ¡Gracias! –

0

¿Seguro que tiene el + - ¿verdad? No obtuve resultados útiles con eso. Cuando cambié el + -, lo hice. Puede ser que mi código esté defectuoso en otro lugar, sin embargo;)

La longitud se da como una medida angular que oscila entre 0 ° en el meridiano de origen a + 180 ° hacia el este y -180 ° hacia el oeste. La letra griega λ (lambda), [3] [4] se utiliza para denotar la ubicación de un lugar en la Tierra al este o al oeste del Meridiano de Greenwich.

Técnicamente, la latitud es una medida angular en grados (marcada con °) que va de 0 ° en el ecuador (baja latitud) a 90 ° en los polos (90 ° N o + 90 ° para el Polo Norte y 90 ° S o -90 ° para el Polo Sur).

(Wikipedia)

cálculos
3

Straightforward implementados en Swift 3.0 como extensión:

extension MKCoordinateRegion { 
    var northWest: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta/2, 
             longitude: center.longitude - span.longitudeDelta/2) 
    } 
    var northEast: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude + span.latitudeDelta/2, 
             longitude: center.longitude + span.longitudeDelta/2) 
    } 
    var southWest: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta/2, 
             longitude: center.longitude - span.longitudeDelta/2) 
    } 
    var southEast: CLLocationCoordinate2D { 
     return CLLocationCoordinate2D(latitude: center.latitude - span.latitudeDelta/2, 
             longitude: center.longitude + span.longitudeDelta/2) 
    } 
} 

Uso:

var region: MKCoordinateRegion = ... some region here 
print("North - West", region.northWest) 
+0

mal. Probé el código. –

+1

@CarlHung ¿Quieres decir que el oeste y el este estaban mezclados? Si es así lo he arreglado. – Avt