Я новичок в быстром и стараюсь рассчитать расстояние по маршруту от пользователяLocation до нескольких точек интереса.Подсчитайте каждое расстояние от пользователя до нескольких пунктов по маршруту в Swift
Я не хочу, чтобы в этой части приложения «нарисовать» маршрут на карте, но я хочу рассчитать расстояние по маршруту вместо расстояния между двумя координатами, а затем показать это расстояние как информацию внутри выноска на карте.
Координата POI (широта и долгота) содержится в базе данных.
Я прочитал некоторые темы об этом аргументе здесь на переполнение стека:
Measuring distance in meters from a drawn route in MKMapView
MKMapView get distance between coordinates on customized route
и другие обучающие программы:
http://www.technetexperts.com/mobile/draw-route-between-2-points-on-map-with-ios7-mapkit-api/ https://videos.raywenderlich.com/courses/mapkit-and-core-location/lessons/9
тогда я написал это код:
for item in items {
if item.latitudine != "" && item.longitudine != "" {
// Point Of Interest coordinate
let latitude = Double(item.latitude!)
let longitude = Double(item.longitude!)
let itemLocation = CLLocation(latitude: latitude!, longitude: longitude!)
let itemLocationPlacemark = MKPlacemark(coordinate: itemLocation.coordinate, addressDictionary: nil)
// user coordinate
let userLocation = CLLocation(latitude: userLocation.coordinate.latitude, longitude: userLocation.coordinate.longitude)
let userLocationPlacemark = MKPlacemark(coordinate: userLocation.coordinate, addressDictionary: nil)
// create Request object
let request = MKDirectionsRequest()
request.source = MKMapItem(placemark: userLocationPlacemark)
request.destination = MKMapItem(placemark: itemLocationPlacemark)
request.requestsAlternateRoutes = false
request.transportType = .automobile
let directions = MKDirections(request: request)
directions.calculate {
[weak self] (response, error) in
if error == nil {
for route in (response?.routes)! {
let distance = (route.distance)/1000
print(distance)
}
}
}
}
}
Проблема в том, что я выполняю код из строки directions.calculate
.
Программа запускает линию, но затем не выполняет остальные функции, не выполняет управление if error == nil
и инструкции в закрытии.
Итак, теперь я задаюсь вопросом, не ошибается ли моя идея, а если нет, как можно получить мою цель.
Взгляните на этот учебник: https://www.devfright.com/mkdirections-tutorial/ Учебник содержит более подробную информацию по обработке результатов от запрос MKDirections –
Большое спасибо за ваш ответ. Я постараюсь понять учебник, но я не знаю obj c –
Нет проблем. Я тоже не говорю, но вызовы API могут быть очень полезны в качестве примеров –