Как рассчитать расстояние от местоположения пользователя до аннотации и показать его в метке

-1

У меня есть метка в моем detailView. Я хочу рассчитать расстояние от текущего местоположения пользователя (будет обновляться, если пользователь перемещается) до определенной аннотации.
И покажите расстояние в этой метке
Например: "3,6 км от вашего местоположения"

Теги:
xcode
iphone
master-detail

2 ответа

1

Я рекомендую использовать расширения. Допустим, у вас есть собственный класс для аннотаций (если вы этого не сделаете, просто используйте 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 в этом классе, вы получите расстояние в метрах. Я надеюсь, что это помогло с вашей проблемой

0

Ваша аннотация будет иметь свойство местоположения. Два из них определяют расстояние между точками -

let distanceInMeters = coordOne.distance(from: coordTwo)

Вы можете прочитать эту ссылку для получения дополнительной информации -

Как узнать расстояние между координатами?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню