2017-03-13 3 views
0

J'essaie d'obtenir un itinéraire entre la coordonnée d'origine et la coordonnée de destination.iOS) Obtenir un itinéraire à partir de deux coordonnées à partir de directions google api

J'ai référencé stackoverflow.

Alors Mon code est ci-dessous:

let url = "https://maps.googleapis.com/maps/api/directions/json?origin=37.496375,126.9546903&destination=37.48121,126.9505233&mode=walking&key=MY_KEY" 
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 = JSON(data: response.data!) 
let routes = json["routes"].arrayValue 

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

Mais par conséquent, response.data est ci-dessous:

{ 
"status" : "ZERO_RESULTS", 
"available_travel_modes" : 
[ 
"TRANSIT" 
    ], 
"geocoded_waypoints" : [ 
{}, 
{}],"routes" : []} 

A propos de cette question, je cherchai et constaté qu'il peut être causé lorsque la coordonnée ne peut pas être convertie en l'adresse.

Mais j'ai vérifié que les deux coordonnées sont converties dans la bonne adresse par 'CLGeocoder' (reverseGeocodeLocation).

Enfin, j'ai vérifié sur 'maps.google.com' que les mêmes coordonnées sont adressées et que l'itinéraire me sera montré.

Comment puis-je résoudre ce problème?

+0

obtenez-vous la route avec une autre origine, la destination? –

+0

J'ai testé une paire différente (new_origin, new_destination), mais le résultat est le même, je vais mettre à jour l'URL exacte que j'ai demandée. – LKM

Répondre

0

available_travel_modes contient un éventail de modes de transport disponibles. Ce champ est renvoyé lorsqu'une demande spécifie un mode de déplacement et obtient aucun résultat. Le tableau contient les modes de déplacement disponibles dans les pays de l'ensemble de waypoints donné.

Votre réponse est retourné comme

"available_travel_modes":["TRANSIT"] 

Donc, essayez de changer mode=walking à &mode=transit

+0

Merci, avec l'option 'transit', la ligne poly ignore un peu le vrai chemin de randonnée. – LKM

+0

Pouvez-vous joindre une capture d'écran? –

+0

Oui, mais je pense que parce qu'il reflète la route pour le bus ... Difficile d'analyser cette information compliquée. – LKM

0

changement de mode marche à la conduite, je veux dire google façon cant trouver pour la marche, mais je vous propose l'utilisation martix api comme cette https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=(currentLat),(currentLng)&destinations=(restLat),(restLng)&key=MY_KEY&mode=driving

+0

À quoi sert le code 'units = metric'? – LKM

+0

google renvoie la valeur en mètres –

+0

Merci, mais comme vous pouvez voir la réponse ci-dessus, seule l'option 'transit' revient bien – LKM