This notebook provides introduction to requesting data from Google Maps API using Python. There is a standout Python package developed explicitly for that purpose. To install that package go to the comman prompt and enter the following command:
pip install googlemaps
Once the package is installed, you may go to https://developers.google.com/console for creating an API key. You will also need to manually enable separate API services for your account. This tutorial uses only two services that you need to enable: Geocoding API and Directions API. Make sure to disable them after finishing the tutorial to avoid excessing the free usage limits.
Before proceeding to code, one may check what looks like the response received by the Google Maps (Geocoding) API for, e.g. city Yerevan - https://maps.googleapis.com/maps/api/geocode/json?address=Yerevan (a JSON file, as usually).
In [1]:
import googlemaps
from datetime import datetime
Reminder: The API key is secret, and should not be shown publicly.
In [2]:
gmaps = googlemaps.Client(key='somesecretkeyhere')
In [6]:
# Geocoding an address
geocode_result = gmaps.geocode('1600 Amphitheatre Parkway, Mountain View, CA')
In [7]:
type(geocode_result)
Out[7]:
list
In [8]:
from pprint import pprint
pprint(geocode_result)
[{u'address_components': [{u'long_name': u'Google Building 41',
u'short_name': u'Google Bldg 41',
u'types': [u'premise']},
{u'long_name': u'1600',
u'short_name': u'1600',
u'types': [u'street_number']},
{u'long_name': u'Amphitheatre Parkway',
u'short_name': u'Amphitheatre Pkwy',
u'types': [u'route']},
{u'long_name': u'Mountain View',
u'short_name': u'Mountain View',
u'types': [u'locality', u'political']},
{u'long_name': u'Santa Clara County',
u'short_name': u'Santa Clara County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'California',
u'short_name': u'CA',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']},
{u'long_name': u'94043',
u'short_name': u'94043',
u'types': [u'postal_code']}],
u'formatted_address': u'Google Bldg 41, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 37.4228642,
u'lng': -122.0851557},
u'southwest': {u'lat': 37.4221145,
u'lng': -122.0859841}},
u'location': {u'lat': 37.4224082, u'lng': -122.0856086},
u'location_type': u'ROOFTOP',
u'viewport': {u'northeast': {u'lat': 37.4238383302915,
u'lng': -122.0842209197085},
u'southwest': {u'lat': 37.4211403697085,
u'lng': -122.0869188802915}}},
u'place_id': u'ChIJxQvW8wK6j4AR3ukttGy3w2s',
u'types': [u'premise']}]
In [9]:
# Look up an address with reverse geocoding
reverse_geocode_result = gmaps.reverse_geocode((40.714224, -73.961452))
If you print the results above, it will again be a JSON document, yet again unreadible. Let's again make it pretty.
In [10]:
pprint(reverse_geocode_result)
[{u'address_components': [{u'long_name': u'277',
u'short_name': u'277',
u'types': [u'street_number']},
{u'long_name': u'Bedford Avenue',
u'short_name': u'Bedford Ave',
u'types': [u'route']},
{u'long_name': u'Williamsburg',
u'short_name': u'Williamsburg',
u'types': [u'neighborhood', u'political']},
{u'long_name': u'Brooklyn',
u'short_name': u'Brooklyn',
u'types': [u'political',
u'sublocality',
u'sublocality_level_1']},
{u'long_name': u'Kings County',
u'short_name': u'Kings County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']},
{u'long_name': u'11211',
u'short_name': u'11211',
u'types': [u'postal_code']}],
u'formatted_address': u'277 Bedford Ave, Brooklyn, NY 11211, USA',
u'geometry': {u'location': {u'lat': 40.7142205, u'lng': -73.9612903},
u'location_type': u'ROOFTOP',
u'viewport': {u'northeast': {u'lat': 40.71556948029149,
u'lng': -73.95994131970849},
u'southwest': {u'lat': 40.7128715197085,
u'lng': -73.9626392802915}}},
u'place_id': u'ChIJd8BlQ2BZwokRAFUEcm_qrcA',
u'types': [u'street_address']},
{u'address_components': [{u'long_name': u'Grand St/Bedford Av',
u'short_name': u'Grand St/Bedford Av',
u'types': [u'bus_station',
u'establishment',
u'point_of_interest',
u'transit_station']},
{u'long_name': u'Williamsburg',
u'short_name': u'Williamsburg',
u'types': [u'neighborhood', u'political']},
{u'long_name': u'Brooklyn',
u'short_name': u'Brooklyn',
u'types': [u'political',
u'sublocality',
u'sublocality_level_1']},
{u'long_name': u'Kings County',
u'short_name': u'Kings County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']},
{u'long_name': u'11211',
u'short_name': u'11211',
u'types': [u'postal_code']}],
u'formatted_address': u'Grand St/Bedford Av, Brooklyn, NY 11211, USA',
u'geometry': {u'location': {u'lat': 40.714321, u'lng': -73.961151},
u'location_type': u'GEOMETRIC_CENTER',
u'viewport': {u'northeast': {u'lat': 40.71566998029149,
u'lng': -73.95980201970849},
u'southwest': {u'lat': 40.7129720197085,
u'lng': -73.96249998029151}}},
u'place_id': u'ChIJi27VXGBZwokRM8ErPyB91yk',
u'types': [u'bus_station',
u'establishment',
u'point_of_interest',
u'transit_station']},
{u'address_components': [{u'long_name': u'Williamsburg',
u'short_name': u'Williamsburg',
u'types': [u'neighborhood', u'political']},
{u'long_name': u'Brooklyn',
u'short_name': u'Brooklyn',
u'types': [u'political',
u'sublocality',
u'sublocality_level_1']},
{u'long_name': u'New York',
u'short_name': u'New York',
u'types': [u'locality', u'political']},
{u'long_name': u'Kings County',
u'short_name': u'Kings County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'Williamsburg, Brooklyn, NY, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 40.7251773,
u'lng': -73.936498},
u'southwest': {u'lat': 40.6979329,
u'lng': -73.96984499999999}},
u'location': {u'lat': 40.7081156, u'lng': -73.9570696},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 40.7251773,
u'lng': -73.936498},
u'southwest': {u'lat': 40.6979329,
u'lng': -73.96984499999999}}},
u'place_id': u'ChIJQSrBBv1bwokRbNfFHCnyeYI',
u'types': [u'neighborhood', u'political']},
{u'address_components': [{u'long_name': u'Brooklyn',
u'short_name': u'Brooklyn',
u'types': [u'political',
u'sublocality',
u'sublocality_level_1']},
{u'long_name': u'New York',
u'short_name': u'New York',
u'types': [u'locality', u'political']},
{u'long_name': u'Kings County',
u'short_name': u'Kings County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'Brooklyn, NY, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 40.739446,
u'lng': -73.8333651},
u'southwest': {u'lat': 40.551042,
u'lng': -74.05663}},
u'location': {u'lat': 40.6781784, u'lng': -73.9441579},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 40.739446,
u'lng': -73.8333651},
u'southwest': {u'lat': 40.551042,
u'lng': -74.05663}}},
u'place_id': u'ChIJCSF8lBZEwokRhngABHRcdoI',
u'types': [u'political', u'sublocality', u'sublocality_level_1']},
{u'address_components': [{u'long_name': u'New York',
u'short_name': u'New York',
u'types': [u'locality', u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'New York, NY, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 40.9175771,
u'lng': -73.70027209999999},
u'southwest': {u'lat': 40.4773991,
u'lng': -74.25908989999999}},
u'location': {u'lat': 40.7127837, u'lng': -74.0059413},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 40.9152555,
u'lng': -73.70027209999999},
u'southwest': {u'lat': 40.4960439,
u'lng': -74.2557349}}},
u'place_id': u'ChIJOwg_06VPwokRYv534QaPC8g',
u'types': [u'locality', u'political']},
{u'address_components': [{u'long_name': u'11211',
u'short_name': u'11211',
u'types': [u'postal_code']},
{u'long_name': u'Brooklyn',
u'short_name': u'Brooklyn',
u'types': [u'political',
u'sublocality',
u'sublocality_level_1']},
{u'long_name': u'New York',
u'short_name': u'New York',
u'types': [u'locality', u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'Brooklyn, NY 11211, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 40.7280089,
u'lng': -73.9207299},
u'southwest': {u'lat': 40.7008331,
u'lng': -73.9644697}},
u'location': {u'lat': 40.7093358, u'lng': -73.9565551},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 40.7280089,
u'lng': -73.9207299},
u'southwest': {u'lat': 40.7008331,
u'lng': -73.9644697}}},
u'place_id': u'ChIJvbEjlVdZwokR4KapM3WCFRw',
u'types': [u'postal_code']},
{u'address_components': [{u'long_name': u'Kings County',
u'short_name': u'Kings County',
u'types': [u'administrative_area_level_2',
u'political']},
{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'Kings County, NY, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 40.739446,
u'lng': -73.8333651},
u'southwest': {u'lat': 40.551042,
u'lng': -74.05663}},
u'location': {u'lat': 40.6528762,
u'lng': -73.95949399999999},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 40.7391407,
u'lng': -73.83363179999999},
u'southwest': {u'lat': 40.5703742,
u'lng': -74.0419592}}},
u'place_id': u'ChIJOwE7_GTtwokRs75rhW4_I6M',
u'types': [u'administrative_area_level_2', u'political']},
{u'address_components': [{u'long_name': u'New York-Northern New Jersey-Long Island, NY-NJ-PA',
u'short_name': u'New York-Northern New Jersey-Long Island, NY-NJ-PA',
u'types': [u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'New York-Northern New Jersey-Long Island, NY-NJ-PA, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 41.6018065,
u'lng': -71.856214},
u'southwest': {u'lat': 39.49853299999999,
u'lng': -75.3585939}},
u'location': {u'lat': 40.9590293, u'lng': -74.0300122},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 41.6018065,
u'lng': -71.856214},
u'southwest': {u'lat': 39.49853299999999,
u'lng': -75.3585939}}},
u'place_id': u'ChIJ3YJV4PRWwokRFFI21ZrHXtQ',
u'types': [u'political']},
{u'address_components': [{u'long_name': u'New York Metropolitan Area',
u'short_name': u'New York Metropolitan Area',
u'types': [u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'New York Metropolitan Area, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 42.0809059,
u'lng': -71.777491},
u'southwest': {u'lat': 39.475198,
u'lng': -75.3587649}},
u'location': {u'lat': 40.7127761, u'lng': -74.0059544},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 42.0809059,
u'lng': -71.777491},
u'southwest': {u'lat': 39.475198,
u'lng': -75.3587649}}},
u'place_id': u'ChIJ-5Z24NaGwokRiMh4Rj8FNMo',
u'types': [u'political']},
{u'address_components': [{u'long_name': u'New York',
u'short_name': u'NY',
u'types': [u'administrative_area_level_1',
u'establishment',
u'point_of_interest',
u'political']},
{u'long_name': u'United States',
u'short_name': u'US',
u'types': [u'country', u'political']}],
u'formatted_address': u'New York, USA',
u'geometry': {u'bounds': {u'northeast': {u'lat': 45.015865,
u'lng': -71.777491},
u'southwest': {u'lat': 40.4773991,
u'lng': -79.7625901}},
u'location': {u'lat': 43.2994285,
u'lng': -74.21793260000001},
u'location_type': u'APPROXIMATE',
u'viewport': {u'northeast': {u'lat': 45.0125923,
u'lng': -71.8562029},
u'southwest': {u'lat': 40.4961036,
u'lng': -79.761996}}},
u'place_id': u'ChIJqaUj8fBLzEwRZ5UY3sHGz90',
u'types': [u'administrative_area_level_1',
u'establishment',
u'point_of_interest',
u'political']}]
In [11]:
# Request directions via public transit
now = datetime.now()
directions_result = gmaps.directions("Yerevan, Armenia","Dilijan, Armenia", departure_time=now)
In [12]:
pprint(directions_result)
[{u'bounds': {u'northeast': {u'lat': 40.7404981, u'lng': 44.9991202},
u'southwest': {u'lat': 40.1708793, u'lng': 44.4999565}},
u'copyrights': u'Map data \xa92017 Google',
u'legs': [{u'distance': {u'text': u'98.8 km', u'value': 98792},
u'duration': {u'text': u'1 hour 32 mins', u'value': 5546},
u'duration_in_traffic': {u'text': u'1 hour 32 mins',
u'value': 5546},
u'end_address': u'Dilijan, Armenia',
u'end_location': {u'lat': 40.7402533,
u'lng': 44.86269859999999},
u'start_address': u'Yerevan, Armenia',
u'start_location': {u'lat': 40.1790325, u'lng': 44.4999565},
u'steps': [{u'distance': {u'text': u'11 m', u'value': 11},
u'duration': {u'text': u'1 min', u'value': 2},
u'end_location': {u'lat': 40.1790946,
u'lng': 44.5000376},
u'html_instructions': u'Head <b>northeast</b> toward <b>Dzoragyugh 1st St</b>',
u'polyline': {u'points': u'}mftFwkrnGEACCAI'},
u'start_location': {u'lat': 40.1790325,
u'lng': 44.4999565},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'79 m', u'value': 79},
u'duration': {u'text': u'1 min', u'value': 38},
u'end_location': {u'lat': 40.1798047,
u'lng': 44.5000778},
u'html_instructions': u'Slight <b>left</b> onto <b>Dzoragyugh 1st St</b>',
u'maneuver': u'turn-slight-left',
u'polyline': {u'points': u'inftFglrnG_AAmAE'},
u'start_location': {u'lat': 40.1790946,
u'lng': 44.5000376},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'0.4 km', u'value': 396},
u'duration': {u'text': u'2 mins', u'value': 126},
u'end_location': {u'lat': 40.1774142,
u'lng': 44.5032066},
u'html_instructions': u'Turn <b>right</b> onto <b>Paronyan St</b>',
u'maneuver': u'turn-right',
u'polyline': {u'points': u'wrftFolrnGRkAdAaFFSNAXYhCoBLK`Aw@jA}@VQRO'},
u'start_location': {u'lat': 40.1798047,
u'lng': 44.5000778},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'0.8 km', u'value': 845},
u'duration': {u'text': u'4 mins', u'value': 210},
u'end_location': {u'lat': 40.1709779,
u'lng': 44.5084946},
u'html_instructions': u'Continue onto <b>Grigor Lusavorich Street</b>',
u'polyline': {u'points': u'ycftFa`snGTOVQPMRSfBsAtBcB`CiBr@i@d@]|AmAvBcBxEwDdDcClA}@rAeA'},
u'start_location': {u'lat': 40.1774142,
u'lng': 44.5032066},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'0.6 km', u'value': 562},
u'duration': {u'text': u'1 min', u'value': 53},
u'end_location': {u'lat': 40.1732816,
u'lng': 44.5141728},
u'html_instructions': u'Turn <b>left</b> onto <b>Agatangeghos St</b>',
u'maneuver': u'turn-left',
u'polyline': {u'points': u's{dtFaatnGRWY]Q[Sc@{@eCaAoCyAgEMc@aAwCcAuCa@{AI_@Ei@Ac@'},
u'start_location': {u'lat': 40.1709779,
u'lng': 44.5084946},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'1.0 km',
u'value': 1048},
u'duration': {u'text': u'2 mins', u'value': 96},
u'end_location': {u'lat': 40.1786325,
u'lng': 44.5232025},
u'html_instructions': u'Continue onto <b>Khanjyan St</b>',
u'polyline': {u'points': u'_jetFqdunGCkACgACm@M_BCg@Gs@C_@IqAMgAMcAM_AG_@Iq@Qy@U}@a@sAc@aAKUO]Yi@Yc@We@KMGIy@aAKOq@s@QS_@_@YWa@]WUa@[YUi@_@_@WYQWQ_@SQI[O[O]O_@O[O[OYMc@Q'},
u'start_location': {u'lat': 40.1732816,
u'lng': 44.5141728},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'1.1 km',
u'value': 1084},
u'duration': {u'text': u'1 min', u'value': 81},
u'end_location': {u'lat': 40.1874194,
u'lng': 44.5263856},
u'html_instructions': u'Take the ramp to <b>Heratsi St</b>',
u'polyline': {u'points': u'mkftF_}vnGg@i@IGKEME[MkA[qA[g@Im@Is@Iw@AcAGsAEi@A[GSE_@MWOOMOQQUKSGQIWMa@K[Q]SWSW_@We@Ui@WYO]Qu@c@[Ma@M_@KEASCaBUEAG?E?WBWFSFMHULc@\\WRSJOHUDUBO?K?OEQGUMSMQQMM'},
u'start_location': {u'lat': 40.1786325,
u'lng': 44.5232025},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'0.7 km', u'value': 745},
u'duration': {u'text': u'1 min', u'value': 66},
u'end_location': {u'lat': 40.1924055,
u'lng': 44.5321047},
u'html_instructions': u'Continue onto <b>Heratsi St</b>',
u'polyline': {u'points': u'kbhtF}pwnGyByBkEuEiFqE{@{@]YEEQQs@o@KGq@kAkA_BOU}@cBSg@Oi@Su@'},
u'start_location': {u'lat': 40.1874194,
u'lng': 44.5263856},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'6.8 km',
u'value': 6781},
u'duration': {u'text': u'9 mins', u'value': 529},
u'end_location': {u'lat': 40.2376422,
u'lng': 44.56365419999999},
u'html_instructions': u'Merge onto <b>Myasnikyan Ave</b>/<b>M4</b><div style="font-size:0.9em">Continue to follow M4</div>',
u'maneuver': u'merge',
u'polyline': {u'points': u'qaitFstxnGYuBY_Be@sAS_@SYS]sCmDcBuB_AwAYe@Wm@Qq@Oy@Gy@Cm@Ae@TaD`@_El@cFJ{@LsAJwAFcBByA?yAAu@IoAI_AOqAIc@O}@WuA[mA]gA[}@Ui@Ui@[m@gDuFkCiEiA{Ae@o@i@o@s@{@}AqBaCyCw@_AeAuAuBiCq@w@iAqAq@q@c@a@_@_@mAiAmAkAiDgDcEcE{GqGu@q@k@g@a@]e@a@s@c@}@k@gAo@mAg@}Aq@wE_BcA]kBo@uCeAiBm@oBq@kAc@s@S{@Sg@K}@Gu@GgA?cABs@BSDKNM@UDg@Fu@L}@LaALcAPoANiBRcGv@i@H[DgBTcBTw@JqATu@Pw@Rm@Pk@Ro@T}@`@u@^s@^{@d@s@^q@^uAt@oAp@uAt@qAr@e@Ve@V_Bz@c@Rc@Pm@Ra@L]Hs@Ls@Hk@F_@Bg@@m@@y@AiACy@CiBGkBEYCc@Ci@Gg@Iy@Oq@Su@Wc@Qi@WsAu@g@o@g@a@m@i@sFyF{GiHyAeBg@o@o@_Am@eAg@cA'},
u'start_location': {u'lat': 40.1924055,
u'lng': 44.5321047},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'86.9 km',
u'value': 86943},
u'duration': {u'text': u'1 hour 12 mins',
u'value': 4309},
u'end_location': {u'lat': 40.7403314,
u'lng': 44.8660773},
u'html_instructions': u'Keep <b>left</b> to continue on <b>AH83</b>/<b>M4</b>',
u'maneuver': u'keep-left',
u'polyline': {u'points': u'g|qtFyy~nGi@iAm@wA}@eCqC_IqBwFg@uAyAcEgEsLqCqHyAcE_@cAc@iAUo@kBwEYu@gMq[Se@}@_Ci@mAUo@k@{Ae@gAc@_Ae@aAo@gAs@aAw@cAw@}@o@o@[W]YMIOKKIKGOMQKiEyCiBsAuAgAgC{B{C}CMMWYIMaAkAyAkB]a@s@cAeAaBQWGM}@uAe@{@gAoB_AoBwAkCo@qAg@_Ac@u@_@m@i@w@k@w@k@s@a@c@o@m@u@q@s@k@o@e@iAu@cB_AuAq@oAe@y@Wo@QaAYu@Ok@IcAMqAKaACuAC{A?uA@oA@sBByADeBBiCDwB@mCBaBB{@?y@A_ACu@CaAGuAMuAOaAMwAUqAUwBc@uBc@qBi@sA_@kBi@kBo@qC_AyAk@oAg@}Aq@cAi@iBaAgBaAqBoAuCiB}CoBkCaBqCeBeC}AiGyDiAw@gBgAgAq@kBgAiBgA{@k@}@k@[Sg@[yBsA_CwAyBuAiBiAcC{AwCkBqBoAsAy@cDsBa@WQKQMKGkC_BoD{ByEyCeGwDuH{EyFqDoG{DgDsBeC}A{DcCuHyEgFaDgFaDsBoAeF_DoDaCkBqAeEaD{CcCqGsFyDiDeEuDsH}GqHsGcGoFkGuFgB}A{@o@}@o@s@c@uAu@mAq@y@_@oAg@wAg@aAUaAIaAAwA?yBD{AHsANmAN_@Hm@HcB`@gBb@c@NMDMDoA^{ExAaD`AcEnAuEvAiDv@_Er@iDh@wCb@}F~@{Er@aG|@_IlA_JpAOBKDKHUTMDu@HcEf@iD`@kBTwBV_CXaBP}B\\qAXw@P_B`@qBd@uBh@y@Je@Bk@@g@Cg@Ei@Kc@Oe@Qe@Ue@]c@_@[]Y_@e@y@Wo@Qg@Qo@Os@Io@K{@K{@Kw@Iq@My@Ms@Oq@Sm@Um@S]]i@_@c@e@c@c@[YQg@We@Oc@Mi@Ck@CwAEsBIk@Ee@Gc@Kk@Qk@Yg@_@]]c@i@_@o@a@_AYy@a@iBK}@C{@CsECqBCm@Io@Kq@YqASm@c@_Ai@y@c@g@o@k@a@Wg@S{@Ww@SsBa@sAY_B]iB_@i@OSIe@Ui@_@][_@e@]g@c@w@m@{A_AcCiBaFyBeGy@sBYm@S_@i@q@_@_@k@e@e@Y[K}@]k@Ki@Eu@Ay@Fk@J{@R{Bf@kB^]Bg@@sAEq@E_@EaAUs@Ws@[}A}@eEkC_FyCeEgCqJ_G_FyCuFcDwGqEu@m@sB}AsBqBcCaCwCaDkCyCgHwHyCcD}AiBoBqBcBkByBeCgBoBeBkBcCiC{BcCeBoByBaC_CgCeDqDgDsDsCyCoByBi@k@oAuAcCsCeCgCcBoBOQq@s@s@y@kBqB{AaB{A}AcAgAyBcC{GwHqEwFsEeGeEiGwE}GqFcIuFsIeEoGaDqE{D_GgBkCuEaHmEsG}BiDiDiFaE_GyFoIiFuHyAkBiAmAs@m@uBaBkBiAyC_B}GiDcI{DwL{FyJyEaCmA_EqBeDcB{CyAkCsAuCwAiCoAkCqAmCsAqCuAmCqAcBy@_@Sy@a@gD}A{CyBwAs@eAm@wDyBoFqDuEeDmDeCqEeDqEaD}C{BaFoDkE_DsDmC}CyBoEeDeEyC_EuCqDgCgDeCkBsAiBsAm@g@q@o@q@u@c@m@_@e@m@{@c@w@m@kAkAiCMYa@}@c@cAi@kAuByEsCoGuB}EmCeGkCcGcCuFo@{A_AwB}@oB}CeH}@qBm@oAi@eAaAqBsAkCcB_DsBwDyAqC_BwCwAoCoBuDyBeEeBcDqAeCuB}D{C_GyBeEwCsF{C{FgCaFyBeEmBsDyBcEsCqFmA_C_HoMaB_Dw@uAo@mAk@aAo@gAkBaDyBsDuC{E{CaFiDwFgDqFuDiGkD{FaA_B}EcIaC{DwE_IgDqFuBiD_BkCoBeD_EyG{CcFiCgEcAmB{@_BcAoBwBiEyFeLoDgHcCaFqE_JaDsGyDyHuDkHqAkCu@{Aq@{Ao@}Ak@{AiB{EaBmEyCyH}B}F{EcMsCqHgCwGcAmCq@iB_CcG{B_G}CiIcDoIYu@_@iA[aA]kA]oA_@_BoA{FgCsLgCoLwAoGwBaKgCoLeBaIkAoFaBwH}CwNiAgF{BiKmDePcB{Hi@gCqAaGm@qCi@iCe@eCu@eFo@iE}@eGgBoLg@gD}@cGg@kDk@kDq@cEu@{Dm@kCc@kBo@kCQo@y@_DkCwIkCmIgG_Sc@yAk@iBaA_DyD}LkD}KaDiKq@}Bo@aCa@iBa@iBy@qEi@gD]oCWgC_A}Ko@sHSuDMsCEoAGyBC_CAuB@sC@iCJ}DLeDRoDZoE\\oEZuEZiEd@aGhA}Od@oGr@qKb@eGTqCjAmPjAaPfAkO^}ExCwa@nA{PjA_Pp@qJbAkNnAcQ\\}ELcBHmADuA@iAAyACqACWE}@O{A[uCsAsK[aCu@oG{AwLCYKw@qAoK[eC[kCCQmA}J_AuHa@eDa@{CUgAQ_Ae@gBGUY_Ae@sAe@gAi@iAg@_Ai@}@kF{Ha@k@oDgFgBiCoEsGeBgC}DyFmF{H_IgLsF_IeHeK}A}BkAcBqAmBqEsGsAoBw@gAcDwEgHcKiDaFmBqCu@gAa@g@]c@o@o@m@m@i@a@i@a@uB}AeCiByAgAwB}AoDkCsAaAq@m@g@e@mAsAaBaB_BaBmCoCgDiD_DeDm@m@a@[c@Y}@e@y@_@e@Oc@Om@Kg@Eo@Ak@?i@@e@Dq@HiBZ}Dn@eC`@cDh@g@J]H_@Jg@PsAh@sAj@yB|@oBt@cBx@w@\\k@Xe@ZeBrAkA`Ae@`@s@t@e@r@Yb@_@p@Sd@c@nAuBxG{@nCgAdD}BjHyAvE{AzEsBvGs@|Ba@lAQr@YtAu@tD{A`IgCnMmBtJc@rBk@lBk@xAs@|AgCrFqD~H}AjDg@bA_@n@k@v@o@p@qAhAeDrCkDxCSNqCbCm@b@a@Xc@Te@Ru@Vc@JsARmANaBTsC^eARw@Vq@Xu@\\e@Xi@`@q@j@w@t@kBjBaC`Cs@t@g@p@g@r@c@x@s@zA}@nBe@dA_BnDkC`GyAdDcAvB[h@OXa@h@q@h@uBrA_D|Aq@Xk@Py@T}@RuH|AiCh@eFbA_Ez@C@C@KJi@JyE`ASDq@N{@PgGjAaJhB_KpByCn@wCn@_IfC{Gh@qHdDeFhGcIpQaNrWgMbS_TxYuEfIwF`O}ErOaDdEaN|PuCnF}GvMoBvEsBrH}CnIuF~IoNfJmChCaBtEMvFSjKy@pGqGbSuFzOmAxFoBtPsAdMaA~EYv@s@v@gzBty@{Ar@[Lw@XeBn@eBbAyCbCiBhBiAnBcBnCiAbCa@p@Yd@oAjB}@`Cu@xAm@`Bc@jBK`@KNe@f@s@fAeAdBg@hA{@|Bi@x@q@Xa@Cy@a@g@Oc@HO`@Gf@Bv@HjALdBE~@Kp@Wl@YXu@VsBl@[X_@h@q@rBWf@[d@eAlAyBtB{@hAk@l@y@`@}A\\a@@{@Qg@@mCJg@JSPWb@Qp@IbA@nDCp@Qf@[h@]Tg@@g@G_AK{BGa@JGR?H@LNN\\@jACv@B`AFhA^rA~@NZAVILE?MEq@u@]OmAOuBCy@Fi@T[`@Sj@KlA@t@Nv@\\`BDx@Ev@Mf@UPcAZsA^uCv@eCbBa@Lc@@e@IQBCBGNAHBLRP`@Jh@Cp@StAc@dBa@lAi@dAe@bBc@dAIbAMP?JL@LCPIJ]HqAHaATiAd@cClAeCtAg@X}@`@WFkAMY@URM\\[rBWr@_@d@aAt@eAv@cAp@]b@aAdBq@~@u@l@g@H[GWOc@_@]Me@Ek@F_@P[b@U~@a@vBa@bB[t@g@d@]Nk@J}BDw@@{@Iy@YwAi@cBgAu@c@a@MQ@KPG\\FVJHbA^^Pv@h@v@`@n@^jAn@h@Zn@Tt@LVBzBNdBC|@QlC{@pA]dBi@f@Uh@g@x@mAl@s@NEF?FDBL?JETm@fA]x@w@~By@rBcAdCWb@WR_@NaANM?{@BwB?mCKqAIqCa@{Bg@aAMkAGmAD_G~@SBkADq@@gFGSBi@F}D`AiDx@}Bb@oCh@oADs@@iAEk@@e@BgAG{@McA_@sBu@iAw@IGgAo@u@[o@QoDy@gCo@wCu@oA_@_AOsAEeB@iCDuD@uCHiBPg@F}@JaDd@oC^}@Di@Ke@Yc@i@KSA?Sc@O]e@uA]}AEaAIkIEmCKgCKoBMeAOgAUaAYcAe@_Au@sB_@eBKiAGcBCuBGoCCq@Ks@S_Au@gCg@cBy@eCm@oAk@}@s@cAmCgBoAq@o@Mo@?w@BwCh@}Dj@_DXaBTsD|@eBVq@NWFi@Lq@Xs@^e@JgB?e@Hs@XkAR[Fc@Ps@f@eBr@mA^mALcAQaBYa@Hk@RcBtAi@@aAYk@Qe@{@Uq@q@kBs@_A_Au@OGMCO?'},
u'start_location': {u'lat': 40.2376422,
u'lng': 44.56365419999999},
u'travel_mode': u'DRIVING'},
{u'distance': {u'text': u'0.3 km', u'value': 298},
u'duration': {u'text': u'1 min', u'value': 36},
u'end_location': {u'lat': 40.7402533,
u'lng': 44.86269859999999},
u'html_instructions': u'At the roundabout, take the <b>2nd</b> exit onto <b>M8</b><div style="font-size:0.9em">Destination will be on the right</div>',
u'maneuver': u'roundabout-right',
u'polyline': {u'points': u'abtwF_|ypGSPGTAZ@FBPHNK~@GdA?pDp@|F'},
u'start_location': {u'lat': 40.7403314,
u'lng': 44.8660773},
u'travel_mode': u'DRIVING'}],
u'traffic_speed_entry': [],
u'via_waypoint': []}],
u'overview_polyline': {u'points': u'}mftFwkrnGkAQmAERkAlAuF`EwCxDwCfNoKpXgTgJwVuB{HMeFqAyN{CsKwEqGkFqEmLqGiKkB}EW{Aq@kBaEeG{DgFeAiD|AmCPuTyScGkHuBkFmBiI_H{IcC}E]gEpBaSd@iJU_HmDgOsPoWaSgV_\\g[yMaIwZkKwEo@sELqIzAgWbD}LxDcPvIaJ|DmK`@yM{@uDuAqEqDqSyToDsGkYuw@uWgq@iIkRkH{HkQ}MyLqNcLeS_I}LiEqDsImEaFsAcGg@uWRuSGwViEiWiJ{_@sUqs@wc@eiAas@wp@eb@}y@{s@mNsLqGkDkHoBoJLmNnC{M`EcWrGmu@bLkQtCsXtEaGz@}Ce@uCeBsBgDkB}K_AmEgByCkCiB_De@}G]cDwAcCwDkA}GUcL}AqF_DeDoGaBgIgBaC{AoCaF}I_VwB_DkDiBeEKoIfBkEEiEoAix@{f@aL_KeVwWyZw\\{r@sv@uJkKg[_a@ap@eaA_i@gv@oLyHsk@{X{d@kUo\\cQeQmKgXsRsn@id@oPuLuD{D_IkO_m@csAmy@s}As\\}n@e]gk@sbAwbBik@siA{Raf@g^g_AsNwa@}t@ajDqLot@{J_j@}Vyy@yPcj@mDgP_D}YwAmUKcOn@}SzHagAbPezBlIglAGmGeCcUgI}p@cHwf@mBqFgJcO{i@ww@}~@urA_WkRsVgVsGiGaEeBqDSkFl@iUxEaLxEoFfDkElEqBjEuUdu@yNhs@kRxb@sUxSaDzAgHdAcIdBwDdCyIxIgDzFyOh]iJdGuEtAc\\bH_n@`MwMvD{Gh@qHdDeFhGcIpQi\\vk@uZ`d@uMt_@cSbWsLfUcFjO}CnIuF~I}RpNaBtEMvFmA|SgO~c@sItm@mAnBc}Bh{@_HzCcGlFmD~FuEfIeEhLqB`DsEfJsATaBq@s@j@C~ADbHq@fAiDdAeC~EwGrHeBnA_C^yGFgAjDA`Fm@pAmDB}CBG\\zBZxBJ|C~AA`AkD{AoDBeAv@MfFNzFcIdCgDpBiAG_@`@bBf@zHcCrHaBZl@{Dt@{JbF{D\\wAxEkFdEgEvF_Cm@oCDuB~HcAzAiAZkH[sGcD]hAdKrFxFv@bDU~EyAlC_AbBuBlAs@cGjPqCvAoIGaLaBmL`AyJBoOfD}Ij@uEOkGuC}IwCoLuCyNBeJn@yK~@wAwAgBuFa@cT_A_IuC}I_@sLyAmH{DwJaEkD_C_A}LxA{OdCeD~@gFt@_EfAuHhCeDk@mA\\mCvAmBk@aDyGmBaA[jAEfDp@nL'},
u'summary': u'M4',
u'warnings': [],
u'waypoint_order': []}]
In [16]:
for i in directions_result:
legs = i["legs"]
for leg in legs:
dist = leg["distance"]
print dist
{u'text': u'98.8 km', u'value': 98792}
In [17]:
type(dist)
Out[17]:
dict
In [23]:
loc1 = raw_input("Please, provide the start location: ")+", Armenia"
loc2 = raw_input("Please, provide the end location: ")+", Armenia"
directions_result = gmaps.directions(loc1,loc2, departure_time=datetime.now())
for i in directions_result:
legs = i["legs"]
for leg in legs:
dist = leg["distance"]
print("\n")
print("The distance between "+loc1+" and "+loc2+" is "+dist["text"])
Please, provide the start location: Yerevan
Please, provide the end location: Dilijan
The distance between Yerevan, Armenia and Dilijan, Armenia is 98.8 km
Content source: HrantDavtyan/Data_Scraping
Similar notebooks: