У меня есть метка в моем detailView. Я хочу рассчитать расстояние от текущего местоположения пользователя (будет обновляться, если пользователь перемещается) до определенной аннотации.
И покажите расстояние в этой метке
Например: "3,6 км от вашего местоположения"
Я рекомендую использовать расширения. Допустим, у вас есть собственный класс для аннотаций (если вы этого не сделаете, просто используйте MKAnnotation вместо "YourAnnotationClass") - вы хотите расширить его с помощью расчетного расстояния distanceToUsersCurrentLocation. Очевидно, что для доступа к текущему местоположению пользователя вам необходимо импортировать CoreLocation.
import UIKit
import CoreLocation
public class ViewController { //class where you need to set the label text
//your code here
}
}
extension YouAnnotationClass {
var distanceToUsersCurrentLocation: Double {
let manager = CLLocationManager() //location manager for user current location
let destinationCoordinates = CLLocation(latitude: self.latitude, longitude: self.longitude) //coordinates for destinastion
let selfCoordinates = CLLocation(latitude: (manager.location?.coordinate.latitude)!, longitude: (manager.location?.coordinate.longitude)!) //user location
return selfCoordinates.distance(from: destinationCoordinates) //return distance in **meters**
}
Каждый раз, когда вы получаете доступ к distanceToUsersCurrentLocation в этом классе, вы получите расстояние в метрах. Я надеюсь, что это помогло с вашей проблемой
Ваша аннотация будет иметь свойство местоположения. Два из них определяют расстояние между точками -
let distanceInMeters = coordOne.distance(from: coordTwo)
Вы можете прочитать эту ссылку для получения дополнительной информации -