Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:调用API:以不同方式输入同一位置时获取不同的位置ID_Python_Json_Google Places Api_Google Geocoding Api - Fatal编程技术网

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

Python:调用API:以不同方式输入同一位置时获取不同的位置ID,python,json,google-places-api,google-geocoding-api,Python,Json,Google Places Api,Google Geocoding Api,当我运行代码时,我遇到了一个获取正确位置id的问题,这让我非常困惑。当我输入大学名称时,代码给出了正确的地址,但它没有给我正确的学号。鉴于此,我尝试只输入学号而不输入大学名称来运行该程序,这最终给了我正确的学号。我在谷歌网站上确认了我的搜索结果,并进行了反向地理编码。为什么当我输入大学名称时它不起作用 这是我一直在寻找的地点id,上面有地址: import urllib import json serviceurl = 'http://maps.googleapis.com/maps/api

当我运行代码时,我遇到了一个获取正确位置id的问题,这让我非常困惑。当我输入大学名称时,代码给出了正确的地址,但它没有给我正确的学号。鉴于此,我尝试只输入学号而不输入大学名称来运行该程序,这最终给了我正确的学号。我在谷歌网站上确认了我的搜索结果,并进行了反向地理编码。为什么当我输入大学名称时它不起作用

这是我一直在寻找的地点id,上面有地址:

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
地点编号: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
导入urllib
导入json
serviceurl=http://maps.googleapis.com/maps/api/geocode/json?'
尽管如此:
地址=原始输入('输入位置:')
如果len(地址)<1:中断
url=serviceurl+'?'+urllib.urlencode({'sensor':'false','address':address})
打印“正在检索”,url
uh=urllib.urlopen(url)
data=uh.read()
打印“已检索”,len(数据),“字符”
try:js=json.loads(str(data))
除外:js=None
如果“状态”不在js或js[“状态”]!='好的:
打印“===检索失败===”
打印数据
持续
打印json.dumps(js,缩进=4)
lat=js[“结果”][0][“几何体”][“位置”][“lat”]
lng=js[“结果”][0][“几何体”][“位置”][“lng”]
打印“lat”,lat,“lng”,lng
location=js['results'][0]['formatted_address']
打印位置
您正在查询,这意味着要查找邮政地址,而不是按姓名查找地点

这就是为什么只有在查询地址()而不是名称()时才能得到正确的结果

如果你想按名字找地方,是个更好的选择


顺便说一句,
sensor
参数已经过时了,把它扔了。

你能确切地说明你使用的哪个查询给出了意外的结果,哪个查询给出了预期的结果吗?另外,您所说的“正确的地点id”是什么意思?是什么使id对您的目的正确/不正确?在运行程序时,当提示我输入大学的确切地址时,我得到了要求我查找的确切地点id。但是,当我再次尝试运行该程序时,输入了大学名称,没有其他地址信息,我得到了一个与前一个不同的学号。我的意思是,就学号而言,作业要求的内容是正确的。我第一次运行代码时找到了大学的确切地址。我仍然感到困惑。你说你想要ChIJ18YtYzOJqjsRHEnnXbM0Jjc(这是大学路的地方ID),查询“印度泰米尔纳德邦Mandaiyur大学路620024”就会找到它。您使用的确切查询是什么,它会给您带来意外的结果?