为什么谷歌地图api的python代码突然无法正常工作

时间:2016-02-10 15:07:27

标签: python google-maps

代码可以使用,但我发现它最近无法运行。请看下面的代码

def signal_distance(lat1,lng1,lat2,lng2):
    import simplejson, urllib
    orig_coord =lat1,lng1 
    dest_coord = lat2,lng2 
    #API request
    url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=transit&language=zh-TW&key=AIzaSyBlwZDhGYNTrxXiQblz20v3poJTA7zTVho".format(str(orig_coord),str(dest_coord))

    result = simplejson.load(urllib.urlopen(url))
    print result
signal_distance(25.082969,121.5549714,24.9988582,121.5788795)

1 个答案:

答案 0 :(得分:0)

生成signal_distance函数的Distance Matrix API请求似乎无效,因为它包含originsdestinations参数的括号

指定的示例为我返回NOT_FOUND元素级状态代码:

  

表示此配对的来源和/或目的地不能   被地理编码

解决方案是替换来自:

的请求
https://maps.googleapis.com/maps/api/distancematrix/json?origins=(<latOrig>,<lngOrig>)&destinations=(<latDest>,<lngDest>)&mode=transit&language=<lang>&key=<Key> 

https://maps.googleapis.com/maps/api/distancematrix/json?origins=<latOrig>,<lngOrig>&destinations=<latDest>,<lngDest>&mode=transit&language=<lang>&key=<Key>

修改后的示例

def signal_distance(lat1,lng1,lat2,lng2):
    import simplejson, urllib
    orig_coord = lat1,lng1 
    dest_coord =  lat2,lng2
    orig_coord_str = ' ,'.join(map(str, orig_coord)) 
    dest_coord_str = ' ,'.join(map(str, dest_coord)) 
    #API request
    url = "https://maps.googleapis.com/maps/api/distancematrix/json?origins={0}&destinations={1}&mode=transit&language=zh-TW&key=AIzaSyBlwZDhGYNTrxXiQblz20v3poJTA7zTVho".format(orig_coord_str,dest_coord_str)
    result = simplejson.load(urllib.urlopen(url))
    print result