12

Ho controllato le proprietà nella documentazione per MKCoordinateRegion, MKCoordinateSpan e MKMapView di vedere c'è un modo per ottenere il TopLeft e BottomRight Lat Long dalla visualizzazione mappa e non ho trovato qualunque. So che lo span mi dà il delta long latino ma c'è un modo per ottenere l'attuale TopLeft e BottomRight lat long dalla visualizzazione mappa senza dover fare calcoli bizzarri?Get TopLeft e BottomRight da MKCoordinateRegion MKMapView

ho trovato this.

Non sono sicuro se questo è sufficientemente accurate. Qualche voto per quello?

risposta

25

Non credo che questi calcoli si qualificano come strano:

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

bisogno di passare +/- qui per renderlo corretto –

+1

Grazie per avermi corretto, Andriy. Ho aggiornato il codice sopra, quindi dovrebbe essere corretto ora. –

+0

Eccellente. Grazie! –

0

Sei sicuro che hai il + - giusto? Non ho ottenuto risultati utili con quello. Quando ho cambiato il + -, l'ho fatto. Potrebbe essere il mio codice è imperfetto da qualche altra parte, però;)

La longitudine è data come una misurazione angolare che va da 0 ° al Primo Meridiano a + 180 ° verso est e -180 ° verso ovest. La lettera greca λ (lambda), [3] [4] è usata per indicare la posizione di un luogo sulla Terra ad est o ad ovest del Primo Meridiano.

Tecnicamente, la latitudine è una misura angolare in gradi (contrassegnata da °) che va da 0 ° all'equatore (bassa latitudine) a 90 ° ai poli (90 ° N o + 90 ° per il Polo Nord e 90 ° S o -90 ° per il Polo Sud).

(Wikipedia)

calcoli
3

semplici implementati in Swift 3.0 come estensione:

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) 
    } 
} 

Usage:

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

sbagliato. ho provato il codice. –

+1

@CarlHung Intendi dire che west and east sono stati confusi? Se è così, l'ho risolto – Avt