Je souhaite interroger Google Maps de manière dynamique via l'API Google Directions. À titre d'exemple, cette requête calcule l'itinéraire de Chicago, IL à Los Angeles, CA via deux points de passage à Joplin, MO et Oklahoma City, OK :
Elle renvoie un résultat [au format JSON][1].
Comment puis-je faire cela en Python ? Je veux envoyer une telle requête, recevoir le résultat et l'analyser.
[1] : https://developers.google.com/maps/documentation/directions/intro?csw=1#Waypoints
Je vous recommande d'utiliser l'impressionnante bibliothèque [requests][1] :
import requests
url = 'http://maps.googleapis.com/maps/api/directions/json'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
resp = requests.get(url=url, params=params)
data = resp.json() # Check the JSON Response Content documentation below
Contenu de la réponse JSON : [http://docs.python-requests.org/en/latest/user/quickstart/#json-response-content][2]
[1] : http://docs.python-requests.org/en/latest/index.html [2] : http://docs.python-requests.org/en/latest/user/quickstart/#json-response-content
Utilisez la bibliothèque de requêtes, imprimez les résultats afin de mieux localiser les clés/valeurs que vous souhaitez extraire, puis utilisez des boucles for imbriquées pour analyser les données. Dans l'exemple, j'extrais les instructions de conduite étape par étape.
import json, requests, pprint
url = 'http://maps.googleapis.com/maps/api/directions/json?'
params = dict(
origin='Chicago,IL',
destination='Los+Angeles,CA',
waypoints='Joplin,MO|Oklahoma+City,OK',
sensor='false'
)
data = requests.get(url=url, params=params)
binary = data.content
output = json.loads(binary)
# test to see if the request was valid
#print output['status']
# output all of the results
#pprint.pprint(output)
# step-by-step directions
for route in output['routes']:
for leg in route['legs']:
for step in leg['steps']:
print step['html_instructions']