Python:调用API:以不同方式输入相同位置时获取不同的地点ID

时间:2015-12-22 07:25:27

标签: python json google-places-api google-geocoding-api

我真的很困惑这个问题,我在运行代码时获取正确的位置ID。当我输入大学名称时,代码给出了正确的地址,但它没有给我正确的地方ID。鉴于此,我尝试仅通过输入地点的地址而不是大学名称来运行程序,这最终给了我正确的地方ID。我通过Google网站确认了我的搜索结果并完成了反向地理编码。当我进入大学名称时,为什么它不起作用?

以下是我一直在寻找的地方ID,地址为:

地点ID:ChIJ18YtYzOJqjsRHEnnXbM0Jjc 大学路,Mandaiyur,泰米尔纳德邦620024,印度 这所学校被称为“马德拉斯大学”。 代码中的链接是一个API端点,其中包含Google数据的静态子集。

这是我的代码:

import urllib
import json


serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'

while True:
    address = raw_input('Enter location: ')
    if len(address) < 1 : break

    url = serviceurl + '?'+ urllib.urlencode({'sensor':'false', 'address': address})
    print 'Retrieving', url
    uh = urllib.urlopen(url)
    data = uh.read()
    print 'Retrieved',len(data),'characters'

    try: js = json.loads(str(data))
    except: js = None
    if 'status' not in js or js['status'] != 'OK':
        print '==== Failure To Retrieve ===='
        print data
        continue

    print json.dumps(js, indent=4)

    lat = js["results"][0]["geometry"]["location"]["lat"]
    lng = js["results"][0]["geometry"]["location"]["lng"]
    print 'lat',lat,'lng',lng
    location = js['results'][0]['formatted_address']
    print location

1 个答案:

答案 0 :(得分:0)

您正在查询Geocoding API,这是为了找到邮政地址,而不是名字。

这就是为什么只有在查询地址(University Rd, Mandaiyur, Tamil Nadu 620024, India)而不是其名称(Madras university)时才能获得正确的结果。

如果您想按名称查找地点,Places API Text Search是更好的选择。

顺便说一下,sensor参数已经过时了,只需删除即可。