Une façon serait de définir des méthodes d'assistance qui le rendent facile à calculer les nouvelles coordonnées en fonction d'une coordonnée donnée une distance en mètres utilisant la MapKit et CoreLoation comme ceci:
// Create new coordinate with equal latitude and longitude distances (distance can be both positive and negative).
func coordinate(from coordinate: CLLocationCoordinate2D, distance: CLLocationDistance) -> CLLocationCoordinate2D {
return self.coordinate(from: coordinate, latitudeDistance: distance, longitudeDistance: distance)
}
// Create new coordinate with latitude and longitude distances (distances can be both positive and negative).
func coordinate(from coordinate: CLLocationCoordinate2D, latitudeDistance: CLLocationDistance, longitudeDistance: CLLocationDistance) -> CLLocationCoordinate2D {
let region = MKCoordinateRegionMakeWithDistance(coordinate, latitudeDistance, longitudeDistance)
let newLatitude = coordinate.latitude + region.span.latitudeDelta
let newLongitude = coordinate.longitude + region.span.longitudeDelta
return CLLocationCoordinate2D(latitude: newLatitude, longitude: newLongitude)
}
Ensuite, le code ci-dessus ressemblerait simplement comme ceci:
let coordinate = CLLocationCoordinate2D(latitude: 9.0, longitude: 50.0)
let distance: CLLocationDistance = 5000 // 5km
let topLeftCoordinate = self.coordinate(from: coordinate, distance: -distance)
let bottomRightCoordinate = self.coordinate(from: coordinate, distance: distance)
J'espère que ça aidera quelqu'un de venir là-bas.
précautionneux Info: Juste au cas où quelqu'un pense (comme beaucoup semblent le faire) qu'une question d'auto-réponse ne convient pas sur le SO, s'il vous plaît lire this premier.