2013-06-24 42 views
10

Tôi cần phải có thời gian lái xe giữa hai tập tọa độ bằng cách sử dụng Python. Trình bao bọc duy nhất cho API Google Maps tôi đã có thể tìm thấy sử dụng API Google Maps V2 (không dùng nữa) hoặc không có chức năng cung cấp thời gian lái xe. Tôi đang sử dụng tính năng này trong một ứng dụng cục bộ và không muốn bị ràng buộc sử dụng JavaScript là những gì API V3 của Google Maps có sẵn.Python Thời gian lái xe của Google Maps

+0

Điều này không phải là chống lại TOS của Google Maps? Tôi không nghĩ rằng bạn chỉ có thể có được thời gian lái xe, trừ khi bạn cũng đang hiển thị Google Maps cho người dùng. (https://developers.google.com/maps/terms, phần 10.1 g, "Không Sử dụng Nội dung mà không có Bản đồ Google") – element119

+0

Tôi chưa bao giờ nói tôi sẽ không hiển thị bản đồ, mặc dù đó không phải là điều tôi nhu cầu. Nếu tôi không phải là một thay thế có sẵn là gì? Kể từ khi tôi không có vấn đề làm như vậy, làm thế nào tôi có thể giải quyết vấn đề của tôi về việc tìm kiếm một cái gì đó để làm việc với python? Mặc dù tôi hiện đang theo đuổi Google Distance Matrix làm giải pháp. – tsspires

+0

Vì API v3 chỉ là JS, nên mọi chức năng phải chạy qua trình duyệt web. Tuy nhiên, có các dự án như pygmaps (https://code.google.com/p/pygmaps/) và py-googlemaps (http: //py-googlemaps.sourceforge.net/) hoạt động như trình bao bọc Python cho các hoạt động API, trong khi chạy JS ở chế độ nền. – element119

Trả lời

22

Sử dụng yêu cầu URL đến API ma trận khoảng cách Google và trình thông dịch json bạn có thể làm điều này:

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

cảm ơn điều này thật tuyệt. Tôi đã tự hỏi làm thế nào bạn có thể thay đổi chế độ du lịch từ thời gian lái xe đến thời gian chu kỳ chẳng hạn? – RegUser

+0

@RegUser chỉ cần thay đổi 'mode = driving' thành' mode = bicycling' trong url. – thefoxrocks

+0

Cảm ơn rất nhiều .. nó tiết kiệm ngày của tôi !! – Harkedian

2

Kiểm tra liên kết này: "thông số bắt buộc" https://developers.google.com/maps/documentation/distancematrix/#unit_systems

đọc phần về về cơ bản, bạn thêm thông số vào yêu cầu của bạn trong url của bạn. Vì vậy, nếu bạn muốn đi xe đạp, nó sẽ là "chế độ = xe đạp". Kiểm tra ví dụ về phía dưới cùng của liên kết và chơi xung quanh với một số thông số. Chúc may mắn!

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']) 

này được lấy từ here Và cách khác bạn có thể thay đổi các thông số cho phù hợp.

Các vấn đề liên quan