Vēlos dinamiski veikt pieprasījumu Google Maps, izmantojot Google Virzienu API. Piemēram, šis pieprasījums aprēķina maršrutu no Čikāgas, IL uz Losandželosu, CA, izmantojot divus ceļa punktus Joplinā, MO un Oklahomaitijā, OK:
Tas atgriež rezultātu JSON formātā.
Kā es to varu izdarīt Python valodā? Es gribu nosūtīt šādu pieprasījumu, saņemt rezultātu un to analizēt.
Es iesaku izmantot lielisko pieprasījumi bibliotēku:
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
JSON atbildes saturs: http://docs.python-requests.org/en/latest/user/quickstart/#json-response-content
import urllib
import json
url = 'http://maps.googleapis.com/maps/api/directions/json?origin=Chicago,IL&destination=Los+Angeles,CA&waypoints=Joplin,MO|Oklahoma+City,OK&sensor=false'
result = json.load(urllib.urlopen(url))
Izmantojiet pieprasījumu bibliotēku, diezgan izdrukājiet rezultātus, lai varētu labāk atrast atslēgas/vērtības, ko vēlaties iegūt, un pēc tam izmantojiet ligzdotas for cilpas, lai analizētu datus. Šajā piemērā es soli pa solim iegūstu braukšanas norādījumus.
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']