Ich versuche eine MKCoordinateRegion zu erstellen, wo sich der Benutzerstandort in der Mitte befindet und eine andere Koordinate innerhalb der Region sichtbar sein sollte. Einfach gesagt, ich versuche, den Benutzerstandort zu zentrieren, während eine bestimmte Anzahl von Anmerkungen sichtbar ist. Meine Herangehensweise besteht darin, nach der Position der N-ten entferntesten Koordinate zu suchen und zu versuchen, eine Entfernung oder Koordinatenregion zu dieser Koordinate aus der Benutzerpositionskoordinate zu berechnen.Breiten-/Längenunterschied in Metern zwischen zwei Koordinaten?
var topLeftCoord = CLLocationCoordinate2D(latitude: -90.0, longitude: 180.0)
var bottomRightCoord = CLLocationCoordinate2D(latitude: 90.0, longitude: -180.0)
topLeftCoord.longitude = fmin(topLeftCoord.longitude, outerLongitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, outerLatitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, outerLongitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, outerLatitude)
topLeftCoord.longitude = fmin(topLeftCoord.longitude, userCoordinates.longitude)
topLeftCoord.latitude = fmax(topLeftCoord.latitude, userCoordinates.latitude)
bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, userCoordinates.longitude)
bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, userCoordinates.latitude)
let regionSpan = MKCoordinateSpanMake(fabs((topLeftCoord.latitude - bottomRightCoord.latitude)), fabs((bottomRightCoord.longitude - topLeftCoord.longitude)))
var region = MKCoordinateRegion(center: userCoordinates, span: regionSpan)
region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)
Diese Art von Arbeiten, aber ich bekomme ein bisschen abgesetzt. Ich glaube, das Problem ist, dass ich hier nicht in Betracht ziehe, dass der Benutzerstandort in der Mitte sein sollte, so stellt dieser Code einfach sicher, dass der Benutzer und die Koordinaten von outerLatitude
und outerLongitude
innerhalb der Spanne sind. Wenn Sie jedoch auf die Benutzerkoordinate zentrieren, ist die äußere Koordinate nicht mehr sichtbar.
Ich kann nicht für das Leben von mir dies herausfinden. Ich habe auch versucht, so zu tun:
let outerLocation = CLLocation(latitude: outerLatitude, longitude: outerLongitude)
let userLocation = CLLocation(latitude: userCoordinates.latitude, longitude: userCoordinates.longitude)
let distance = userLocation.distance(from: outerLocation)
var region = MKCoordinateRegionMakeWithDistance(userCoordinates, distance, distance)
region = self.mapView.regionThatFits(region)
self.mapView.setRegion(region, animated: true)
Aber ich am Ende mit dem gleichen Ergebnis, das ich wirklich nicht verstehe. Ich bekomme eine Entfernung von ca. 340m (was ziemlich vernünftig ist). Aber fragt nach latitudinalMeters
und longitudinalMeters
wo ich einfach die distance
von Koordinate A nach B senden. Ich kann keinen Weg finden, die Komponenten in und longitudinalMeters
zu teilen, ich kann einfach 1 Abstand zwischen den beiden bekommen.
Das Ergebnis war ziemlich das Gleiche. Ich muss hier etwas falsch machen. – ClockWise