Рисование направления от API карты Google - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь нарисовать линию направления от маркера к другому.Я уже включил направления в Google Map API.Я получил эту функцию здесь (ТАК).Я понимаю, что он делает, но я не могу заставить его работать.routes array возвращается пустым.Я пробовал несколько точек для испытаний.Вот функции:

func drawPath2(origin: CLLocationCoordinate2D, destination: CLLocationCoordinate2D)
{

let origin = "\(origin.latitude),\(origin.longitude)"
    let destination = "\(destination.latitude),\(destination.longitude)"
    let apiKey = "Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    guard let url = URL(string: "https://maps.googleapis.com/maps/api/directions/json?origin=\(origin)&destination=\(destination)&key=AIzaSyAOhiBw8mSPBmmAJQ_fjM79x7ruvMxFmxQ") else {return}

    Alamofire.request(url).responseJSON { response in
        print(response.request)  // original URL request
        print(response.response) // HTTP URL response
        print(response.data)     // server data
        print(response.result)   // result of response serialization

        let json = try! JSON(data: response.data!)
        let routes = json["routes"].arrayValue

        //remove this after test
        print(routes.count)

        for route in routes
        {
            let routeOverviewPolyline = route["overview_polyline"].dictionary
            let points = routeOverviewPolyline?["points"]?.stringValue
            let path = GMSMutablePath.init(fromEncodedPath: points!)
            let polyline = GMSPolyline.init(path: path)
            polyline.map = self.mapView
        }
    }
}

Вот результаты print ():

Optional(https://maps.googleapis.com/maps/api/directions/json?origin=49.18705,-123.107261&destination=49.1844,-123.1052&mode=driving&key=AIzaSyAOhiBw8mSPBmmAJQ_fjM79x7ruvMxFmxQ) Optional(<NSHTTPURLResponse: 0x6000024c5ba0> { URL: https://maps.googleapis.com/maps/api/directions/json?origin=49.18705,-123.107261&destination=49.1844,-123.1052&mode=driving&key=AIzaSyAOhiBw8mSPBmmAJQ_fjM79x7ruvMxFmxQ } { Status Code: 200, Headers { "Cache-Control" = ( "no-cache, must-revalidate" ); "Content-Encoding" = ( gzip ); "Content-Length" = ( 130 ); "Content-Type" = ( "application/json; charset=UTF-8" ); Date = ( "Mon, 10 Dec 2018 22:28:52 GMT" ); Expires = ( "Fri, 01 Jan 1990 00:00:00 GMT" ); Pragma = ( "no-cache" ); Server = ( mafe ); Vary = ( "Accept-Language" ); "alt-svc" = ( "quic=\":443\"; ma=2592000; v=\"44,43,39,35\"" ); "x-frame-options" = ( SAMEORIGIN ); "x-xss-protection" = ( "1; mode=block" ); } }) Optional(129 bytes) SUCCESS 0

Я вообще не вижу там data.Я думаю, что-то не так с URL или запросом.Пожалуйста, помогите мне, господа.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Перейдите на Облачная консоль Google и создайте новый проект и включите Direction API. API Libary И поместите свой ключ API в свой url
См. Ссылка Это поможет вам для примера API и Ответа для API Google Direction.

0 голосов
/ 11 декабря 2018

Подозреваю, ваш api key не авторизован для использования этой услуги.Вы можете проверить, напечатав json

print(json)

. Вы должны увидеть это в response, где массив routes пуст,

{
    "error_message" = "This API project is not authorized to use this API.";
    routes =     (
    );
    status = "REQUEST_DENIED";
}
...