谷歌的radarsearch API结果

时间:2017-04-18 07:40:28

标签: python google-api

我正在尝试使用首先使用radarsearch API对我所在城市的关键字进行地理定位,以便检索地方ID,然后使用Places API获取每个地方ID的更多信息(例如名称或格式化地址。)

在我的第一个方法中,我以9个圆周分割了我的城市,每个圆周半径22公里,避开农村地区,那里不应该是一个企业。这样我获得(一旦删除重复的结果,由于周长重叠)大约150个企业。这个结果不可靠,因为该公司的官方网页断言有245个。

为了检索所有业务,我将我的城市分成半径10公里的圆周。因此,我用大约50对坐标填补了城市,包括现在的所有区域,包括农村和非农村。现在,令人惊讶的是我只获得了81家企业!怎么可能呢?

我将所有信息存储在单独的词典中,我注意到每个词典的数据量随着半径的增加而增加,并且总是相同的(对于固定的半径)。

现在,除了上一个问题之外,有没有办法限制每个请求产生的结果数量?

我正在使用的代码如下:

dict1 = {}
radius=20000 
keyword='keyworkd'
key=YOUR_API_KEY
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?"
list_dicts = []
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)):
    url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key
    response = urllib2.urlopen(url)
    table = json.load(response)
    if table['status']=='OK':
        for j,line in enumerate(table['results']):
            temp = {j : line['place_id']}
            dict1.update(temp)
        list_dicts.append(dict1)
    else:
        pass

1 个答案:

答案 0 :(得分:0)

最后我设法解决了这个问题。

事情是dict初始化必须在每次循环迭代中完成。现在它存储了所有信息,我从头开始检索我想要的东西。

dict1 = {}
radius=20000 
keyword='keyworkd'
key=YOUR_API_KEY
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?"
list_dicts = []
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)):
    url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key
    response = urllib2.urlopen(url)
    table = json.load(response)
    if table['status']=='OK':
        for j,line in enumerate(table['results']):
            temp = {j : line['place_id']}
            dict1.update(temp)
        list_dicts.append(dict1)
        dict1 = {}
    else:
        pass