我真的很困惑这个问题,我在运行代码时获取正确的位置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
答案 0 :(得分:0)
您正在查询Geocoding API,这是为了找到邮政地址,而不是名字。
这就是为什么只有在查询地址(University Rd, Mandaiyur, Tamil Nadu 620024, India)而不是其名称(Madras university)时才能获得正确的结果。
如果您想按名称查找地点,Places API Text Search是更好的选择。
顺便说一下,sensor
参数已经过时了,只需删除即可。