在python中获取两个地方之间的距离和行驶时间不适用于负坐标

时间:2018-07-10 10:09:45

标签: python maps

我正在尝试使用python获取两个地方之间的距离和行驶时间。下面的代码有效,但是对于负坐标它没有给出任何响应。请帮助我了解我要去哪里。

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 个答案:

答案 0 :(得分:0)

Google Maps文档说明您必须删除坐标之间的空格。

现在,您的网址看起来像这样,因为您只是将元组传递给format函数:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=(-27.598156, -67.531324)&destinations=(-30.099782, -60.236402)&mode=driving&language=en-EN&sensor=false

看起来应该像这样:

http://maps.googleapis.com/maps/api/distancematrix/json?origins=-27.598156,-67.531324&destinations=-30.099782,-60.236402&mode=driving&language=en-EN&sensor=false

您将必须对url生成代码进行一些更改,以实际处理元组并生成所需的字符串。

import requests
orig_coord = orig_lat, orig_lng
dest_coord = dest_lat, dest_lng
url = "http://maps.googleapis.com/maps/api/distancematrix/json?origins={}&destinations={}&mode=driving&language=en-EN&sensor=false".format(",".join(map(str, orig_coord)),",".join(map(str, dest_coord)))
result = requests.get(url).json()
# evaluate the result here