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

问题描述:

我真的很困惑,因为我在运行代码时获取正确的位置ID。当我输入大学名称时,代码会给出正确的地址,但它不会给我正确的地点ID。考虑到这一点,我试图通过只输入地址而不是大学名称来运行该程序,并最终给了我正确的地点ID。我通过Google网站确认了我的结果,并完成了反向地理编码。为什么当我输入大学名称时它不工作?Python:调用API:以不同方式输入相同位置时获取不同的位置ID

这里是地方ID我一直在寻找的,长着地址:

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

这里是我的代码:

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 
+0

你能澄清一下你使用哪个查询给出了意想不到的结果,哪个查询给出了预期的结果?此外,你的意思是“正确的地方身份证” - 是什么使你的目的正确/不正确的ID? – spiv

+0

运行该程序时,我得到了确切的地点ID,我被要求通过在提示时输入大学的确切地址来查找。然而,当我再次尝试运行该程序并输入了大学的名称而没有其他地址信息时,我得到了与上一个不同的地点id。 – cybernerd

+0

我的意思是说,就地点编号而言,这个任务的确切要求是什么。 – cybernerd

要查询的Geocoding API,其目的是要找到邮政地址,叫不上名字的地方。

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

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

顺便说一句,sensor参数已经超越了过时,只是放弃它。