Здравствуйте, я использую приведенную ниже функцию, чтобы получить координаты 21 промежуточной точки между двумя местами на карте. Проблема в том, что возвращаемые координаты представляют собой прямую линию между точками, а не большой круг для достижения кратчайшего расстояния.
Кто-нибудь знает, что мне нужно изменить, чтобы получить координаты кратчайшего расстояния?
func greatCircle(lat1: Double, long1: Double, lat2: Double, long2: Double) -> Array<CLLocationCoordinate2D>
{
let startPoint = CLLocationCoordinate2D(latitude: lat1, longitude: long1)
let endPoint = CLLocationCoordinate2D(latitude: lat2, longitude: long2)
let yourTotalCoordinates = Double(21)
let latitudeDiff = startPoint.latitude - endPoint.latitude
let longitudeDiff = startPoint.longitude - endPoint.longitude
let latMultiplier = latitudeDiff / (yourTotalCoordinates + 1)
let longMultiplier = longitudeDiff / (yourTotalCoordinates + 1)
var array = [CLLocationCoordinate2D]()
array.append(startPoint)
for index in 1...Int(yourTotalCoordinates) {
let lat = startPoint.latitude - (latMultiplier * Double(index))
let long = startPoint.longitude - (longMultiplier * Double(index))
let point = CLLocationCoordinate2D(latitude: lat, longitude: long)
array.append(point)
}
array.append(endPoint)
return array
}