2010-03-17 16 views
12

überprüfte ich die Eigenschaften in der Dokumentation für MKCoordinateRegion, MKCoordinateSpan und MKMapView zu sehen, dass es einen Weg gibt, den TopLeft und Bottom Lat Long aus der Kartenansicht zu bekommen, und ich habe nicht gefunden irgendein. Ich weiß, dass die Spannweite gibt mir die Lat lange Delta, aber gibt es eine Möglichkeit, die tatsächlichen TopLeft und BottomRight Lat Longs aus Kartenansicht ohne seltsame Berechnungen zu tun?Get TopLeft und Bottom von MKCoordinateRegion MKMapView

fand ich this.

nicht sicher, ob das genau genug ist. Gibt es dafür Stimmen?

Antwort

25

Ich glaube nicht, dass diese Berechnungen als seltsam qualifizieren:

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

Notwendigkeit zu wechseln +/- hier, um es richtig –

+1

Dank um mich zu korrigieren, Andriy. Ich habe den obigen Code aktualisiert, sodass er jetzt korrekt sein sollte. –

+0

Ausgezeichnet. Vielen Dank! –

0

Sind Sie sicher, bekam man die + - oder? Ich habe damit keine brauchbaren Ergebnisse bekommen. Als ich die + - wechselte, tat ich es. Könnte sein, dass mein Code anderswo fehlerhaft ist;)

Längengrad wird als ein Winkelmaß angegeben, das von 0 ° am Nullmeridian bis zu + 180 ° nach Osten und -180 ° nach Westen reicht. Der griechische Buchstabe λ (lambda), [3] [4] wird verwendet, um die Position eines Ortes auf der Erde östlich oder westlich des Nullmeridians zu bezeichnen.

Technisch ist der Breitengrad ein Winkelmaß in Grad (markiert mit °) von 0 ° am Äquator (niedrige Breite) bis 90 ° an den Polen (90 ° N oder + 90 ° für den Nordpol und 90 ° S oder -90 ° für den Südpol).

(Wikipedia)

3

Geradlinig implementiert Berechnungen in Swift 3.0 als Erweiterung:

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

Verbrauch:

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

falsch. Ich habe den Code getestet. –

+1

@CarlHung Meinst du, West und Ost waren durcheinander? Wenn ja, habe ich es behoben. – Avt