0

Je suis actuellement en utilisant Google Maps Directions API (Web Services) pour acheminer entre les gares, mais je trouve que les résultats comprennent des indications de marche malgré l'origine et la destination étant des gares connectées .Directions API - routage entre les gares comprend des directions inutiles

Par exemple, si la route I de Birmingham International (UK) et Londres Euston qui sont tous deux connectés via des liaisons directes, je reçois les résultats:

Birmingham International to London Euston

Notez que la recherche a été fait en utilisant le lieu Les identifiants et les deux identifiants de lieux sont indiqués comme étant des gares, donc Google sait que l'origine et la destination sont des gares et pas seulement des adresses de rues.

Si je Birmingham Internation à la station Kings Cross qui ne sont pas connectés:

Birmingham International to Kings Cross

La dernière étape est correcte que vous auriez besoin de marcher de Euston à Kings Cross, mais la première étape est incorrect puisque l'ID de lieu d'origine est déjà la gare.

Y at-il quelque chose qui me manque ici? Je veux garder les directions de marche comme avec le 2ème exemple, mais le premier exemple devrait avoir seulement 1 pas puisque l'origine et la destination sont la station de train.

Bravo à l'avance.

+0

Vous avez raison, ce sont les directions de marche assez stupides. Pouvez-vous afficher le code de votre demande d'itinéraire? Il doit être possible de les filtrer avec une certaine logique –

+1

Il semble que l'ID de lieu d'origine représente un point d'accès à la gare, donc la partie piétonne semble être attendue. Jetez un oeil à cette route dans la calculatrice Directions: https://directionsdebug.firebaseapp.com/?origin=place_id%3AChIJE3Z8xJq8cEgRCtDfBcX984c&destination=place_id%3AChIJmxO_XDwbdkgR-zjbcc_J6Xs&mode=transit. Probaly the Directions API prend toujours en compte les points d'accès et fournit des indications de marche. – xomena

+0

Oui, exactement. Si l'origine est ChIJE3Z8xJq8cEgRCtDfBcX984c, alors nous obtenons cette https://ibb.co/nrCDEv Si l'origine est l'emplacement du deuxième point de l'itinéraire (lat: 52,450676, lng: -1,725229), puis il ressemble à ceci https://ibb.co/buZ4Ma –

Répondre

0

Voici mon code complet pour les images affichées ci-dessus

<?php 
/* 
//Birmingham Int to Euston (Direct Route) 
$searchURLJSON = file_get_contents('https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJE3Z8xJq8cEgRCtDfBcX984c&destination=place_id:ChIJmxO_XDwbdkgR-zjbcc_J6Xs&mode=transit&key='.$googleMapsAPI); 

//Birmingham Int to Kings Cross (Indirect Route) 
$searchURLJSON = file_get_contents('https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJE3Z8xJq8cEgRCtDfBcX984c&destination=place_id:ChIJNVch-SMbdkgRqv1PBlyKQqU&mode=transit&key='.$googleMapsAPI); 
*/ 

$searchURLJSON = file_get_contents('https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJE3Z8xJq8cEgRCtDfBcX984c&destination=place_id:ChIJmxO_XDwbdkgR-zjbcc_J6Xs&mode=transit&key='.$googleMapsAPI); 
//$searchURLJSON = file_get_contents('https://maps.googleapis.com/maps/api/directions/json?origin=place_id:ChIJE3Z8xJq8cEgRCtDfBcX984c&destination=place_id:ChIJNVch-SMbdkgRqv1PBlyKQqU&mode=transit&key='.$googleMapsAPI); 

$searchURL = json_decode($searchURLJSON); 
print_r("<pre>"); 
print_r("<p>"); 
print_r("From: ".$searchURL->routes[0]->legs[0]->start_address." (id: ".$searchURL->geocoded_waypoints[0]->place_id.")<br />"); 
print_r("Types: "); 
foreach(($searchURL->geocoded_waypoints[0]->types) as $type){ 
    print_r($type.", "); 
} 
print_r("</p><p>"); 
print_r("To: ".$searchURL->routes[0]->legs[0]->end_address." (id: ".$searchURL->geocoded_waypoints[1]->place_id.")<br />"); 
print_r("Types: "); 
foreach(($searchURL->geocoded_waypoints[1]->types) as $type){ 
    print_r($type.", "); 
} 
print_r("</p>"); 
print_r("<h1>Route</h1>"); 
foreach(($searchURL->routes[0]->legs[0]->steps) as $step){ 
    print_r("<p>"); 
    print_r("(".$step->travel_mode.") "); 
    print_r($step->html_instructions); 
    print_r("</p>"); 
} 
print_r("</pre>"); 
?>