Навигация по карте: значение типа «Маршрут» не имеет члена «координаты» - PullRequest
0 голосов
/ 27 января 2020

Значение типа 'Маршрут' не имеет члена 'координаты'

Получение этой ошибки при выполнении простого учебника YouTube. Попытка нарисовать маршрут. Кто-нибудь знает, почему я получаю эту ошибку? Это проблема с модулями?

Это те, которые установлены. Спасибо!

    pod 'Mapbox-iOS-SDK', '~> 5.6'
      pod 'MapboxCoreNavigation', :git => 'https://github.com/mapbox/mapbox-navigation-ios.git', :tag => 'v1.0.0-alpha.1'
      pod 'MapboxNavigation', :git => 'https://github.com/mapbox/mapbox-navigation-ios.git', :tag => 'v1.0.0-alpha.1'

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Установите ниже pod

pod 'Mapbox-iOS-SDK', '~> 5.2'  
pod 'MapboxNavigation', '~> 0.38.0'

А затем напишите ниже код, он работает для меня

if(CLLocationManager.locationServicesEnabled()){

self.CurrentLat = self.locationManager.location?.coordinate.latitude

self.CurrentLong = self.locationManager.location?.coordinate.longitude

let origin = Waypoint(coordinate: CLLocationCoordinate2D(latitude: 
self.CurrentLat, longitude: self.CurrentLong), name: "Start Location")

let destination = Waypoint(coordinate: CLLocationCoordinate2D(latitude: yourDestinationLat, 
longitude:  yourDestinationLong), name: yourDestinationName)
// Set options
let options = NavigationRouteOptions(waypoints: [origin, destination])

// Request a route using MapboxDirections.swift
Directions.shared.calculate(options) { (waypoints, routes, error) in

guard let route = routes?.first else {
SVProgressHUD.showError(withStatus: "Unable to create a route. Please try 
again.")
   return
}

let viewController = NavigationViewController(for: route)
viewController.delegate = self
viewController.modalPresentationStyle = .fullScreen
self.present(viewController, animated: true, completion: nil)
SVProgressHUD.dismiss()
}
2 голосов
/ 27 января 2020

Итак, мне удалось найти пример приложения, а также ошибку.

Ниже приведен код из примера приложения, который выдает ошибку как

Значение типа «Маршрут» имеет нет члена 'координирует' @routes? .first? .coordinates

Directions.shared.calculate(routeOptions) { (waypoints, routes, error) in
        guard let routeCoordinates = routes?.first?.coordinates, error == nil else {
            print(error!.localizedDescription)
            return
        }

        //
        // ❗️IMPORTANT❗️
        // Use `Directions.calculateRoutes(matching:completionHandler:)` for navigating on a map matching response.
        //
        let matchOptions = NavigationMatchOptions(coordinates: routeCoordinates)

        // By default, each waypoint separates two legs, so the user stops at each waypoint.
        // We want the user to navigate from the first coordinate to the last coordinate without any stops in between.
        // You can specify more intermediate waypoints here if you’d like.
        for waypoint in matchOptions.waypoints.dropFirst().dropLast() {
            waypoint.separatesLegs = false
        }

        Directions.shared.calculateRoutes(matching: matchOptions) { (waypoints, routes, error) in
            guard let route = routes?.first, error == nil else { return }

            // Set the route
            self.navigationViewController?.route = route
        }
    }

, который должен быть переписан, как показано ниже.

        Directions.shared.calculate(routeOptions) { (waypoints, routes, error) in
        guard let firstRoute = routes?.first, let waypoints = waypoints, error == nil else {
            print(error!.localizedDescription)
            return
        }

        //
        // ❗️IMPORTANT❗️
        // Use `Directions.calculateRoutes(matching:completionHandler:)` for navigating on a map matching response.
        //

        let matchOptions = NavigationMatchOptions(waypoints: waypoints)

        // By default, each waypoint separates two legs, so the user stops at each waypoint.
        // We want the user to navigate from the first coordinate to the last coordinate without any stops in between.
        // You can specify more intermediate waypoints here if you’d like.
        for waypoint in matchOptions.waypoints.dropFirst().dropLast() {
            waypoint.separatesLegs = false
        }

        Directions.shared.calculateRoutes(matching: matchOptions) { (waypoints, routes, error) in
            guard let route = routes?.first, error == nil else { return }

            // Set the route
            self.navigationViewController?.route = route
        }
    }

Пожалуйста, проверьте, решает ли это вашу проблему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...