2013-06-24 17 views
10

Potrzebuję uzyskać czas jazdy między dwoma zestawami współrzędnych za pomocą Python. Jedyne opakowania dla interfejsu Google Maps API, które udało mi się znaleźć, to albo korzystają z Google Maps API V2 (przestarzałe) albo nie mają funkcji zapewniającej czas prowadzenia pojazdu. Używam tego w aplikacji lokalnej i nie chcę być zobowiązany do używania JavaScript, do czego jest dostępny interfejs API Map Google V3.Python Google Maps Driving Time

+0

Czy nie jest to niezgodne z Warunkami korzystania z usługi Mapy Google? Nie sądzę, że możesz po prostu uzyskać czas prowadzenia pojazdu, chyba że wyświetlasz użytkownikowi Mapy Google. (https://developers.google.com/maps/terms, sekcja 10.1 g, "Bez użycia zawartości bez mapy Google") – element119

+0

Nigdy nie powiedziałem, że nie będę wyświetlał mapy, mimo że nie to potrzeba. Gdybym nie był tym, co jest dostępną alternatywą? Ponieważ nie mam z tym problemu, jak mogę rozwiązać problem ze znalezieniem czegoś do pracy z pythonem? Chociaż obecnie używam rozwiązania Google Distance Matrix jako rozwiązania. – tsspires

+0

Ponieważ interfejs API v3 jest JS-only, każda funkcjonalność musi być uruchamiana przez przeglądarkę internetową. Istnieją jednak projekty takie jak pygmaps (https://code.google.com/p/pygmaps/) i py-googlemaps (http: //py-googlemaps.sourceforge.net/), które działają jako wrappery Pythona dla operacji API, podczas gdy JS działa w tle. – element119

Odpowiedz

22

Korzystanie z żądań URL do interfejsu Google Distance Matrix API i interpretera json to zrobić:

import simplejson, urllib 
orig_coord = orig_lat, orig_lng 
dest_coord = dest_lat, dest_lng 
url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=driving&language=en-EN&sensor=false".format(str(orig_coord),str(dest_coord)) 
result= simplejson.load(urllib.urlopen(url)) 
driving_time = result['rows'][0]['elements'][0]['duration']['value'] 
+1

dzięki temu jest świetny. Zastanawiałem się, w jaki sposób można na przykład zmienić tryb podróży z czasu prowadzenia pojazdu na czas cyklu? – RegUser

+0

@RegUser wystarczy zmienić 'mode = driving' na' mode = bicycling' w adresie URL. – thefoxrocks

+0

Wielkie dzięki .. oszczędza mi to dzień !! – Harkedian

3
import googlemaps 
from datetime import datetime 

gmaps = googlemaps.Client(key='YOUR KEY') 


now = datetime.now() 
directions_result = gmaps.directions("18.997739, 72.841280", 
            "18.880253, 72.945137", 
            mode="driving", 
            avoid="ferries", 
            departure_time=now 
            ) 

print(directions_result[0]['legs'][0]['distance']['text']) 
print(directions_result[0]['legs'][0]['duration']['text']) 

to podjęto z here I alternatywnie można zmieniać parametry odpowiednio.