Информация о точной настройке направления для пользователя - PullRequest
0 голосов
/ 21 июня 2019

Я создаю приложение, в котором должны быть указаны направления.Я столкнулся с проблемой, когда мою полилинию нарисовали в GoogleMap.Все, что мне нужно, это отобразить общее расстояние до места, предполагаемое время в пути, расстояние до следующего поворота, улицу поворота и изображение, показывающее, в каком направлении направляется пользователь.

Я понятия не имею, как это сделатьэтот.Вся помощь была бы фантастической!

Этот фрагмент кода - это код, который получает указания от моего API Google, а затем отображает на карте многоугольную линию.

 func getPolylineRoute(from source: CLLocationCoordinate2D, to destination: CLLocationCoordinate2D){

    let config = URLSessionConfiguration.default
    let session = URLSession(configuration: config)

    let url = URL(string: "https://maps.googleapis.com/maps/api/directions/json?origin=\(source.latitude),\(source.longitude)&destination=\(destination.latitude),\(destination.longitude)&key=APIKEY&sensor=false")!

    let task = session.dataTask(with: url, completionHandler: {
        (data, response, error) in
        if error != nil {
            print(error!.localizedDescription)
        }
        else {
            do {
                if let json : [String:Any] = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as? [String: Any]{

                    guard let routes = json["routes"] as? NSArray else {
                        DispatchQueue.main.async {
                        }
                        return
                    }

                    if (routes.count > 0) {
                        let overview_polyline = routes[0] as? NSDictionary
                        let dictPolyline = overview_polyline?["overview_polyline"] as? NSDictionary

                        let points = dictPolyline?.object(forKey: "points") as? String

                        self.showPath(polyStr: points!)

                        DispatchQueue.main.async {

                            let bounds = GMSCoordinateBounds(coordinate: source, coordinate: destination)
                            let update = GMSCameraUpdate.fit(bounds, with: UIEdgeInsets(top: 170, left: 30, bottom: 30, right: 30))
                            self.mapView!.moveCamera(update)
                        }
                    }
                    else {
                        DispatchQueue.main.async {
                        }
                    }
                }
            }
            catch {
                print("error in JSONSerialization")
                DispatchQueue.main.async {
                }
            }
        }
    })
    task.resume()
}

эти точки - то, что я хочудля отображения пользователю.

@IBOutlet weak var directionImage: UIImageView!
@IBOutlet weak var totalDistanceD: UILabel!
@IBOutlet weak var totalTimeD: UILabel!
@IBOutlet weak var nextStreetD: UILabel!
@IBOutlet weak var distanceNxtStreetD: UILabel!
...