0

У меня есть координата и база данных CoreData с записями, которые имеют значения широты и долготы. Я хочу найти все объекты в данной квадратной области и поэтому хотел бы знать верхние левые и нижние правые угловые точки с расстоянием до моей точки.Вычислить новую координату с заданной координатой и расстоянием в метрах

Код:

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

ответ

0

Одним из способов было бы определить вспомогательные методы, которые позволяют легко вычислить новые координаты на основе координат, учитывая расстояние в метрах, используя MapKit и CoreLoation как так:

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

Тогда приведенный выше код будет просто выглядеть следующим образом:

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) 

Надеюсь, что это поможет кому-то, когда наткнулся на это.


предусмотрительная Информация: Только в случае, если кто-то думает, что (как многие, кажется, делают), что сам-ответил вопрос не подходит на SO, пожалуйста, прочитайте this первыми.

 Смежные вопросы

  • Нет связанных вопросов^_^