0

J'ai une coordonnée et une base de données CoreData avec des entrées qui ont des valeurs de latitude et de longitude. Je veux trouver tous les objets dans une région carrée donnée et je voudrais donc connaître les points du coin supérieur gauche et du coin inférieur droit avec une distance à mon point.Calculer une nouvelle coordonnée avec une coordonnée donnée et une distance en mètres

code:

let coordinate = CLLocationCoordinate2D(latitude: 9.0, longitude: 50.0) 
let distance: CLLocationDistance = 5000 // 5km 
let topLeftCoordinate = ... // how to calculate this? 
let bottomRightCoordinate = ... // and that? 

Répondre

0

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.