2017-04-18 76 views
0

我试图在我的城市中使用首先使用radarsearch API来检索所有与我的城市中的关键字相关的业务,以便检索地点ID,然后使用Places API获取每个地点的更多信息ID(例如名称或格式化的地址)。Google的radarsearch API结果

在我的第一个方法中,我在9个圆周内分割了我的城市,每个圆周半径22公里,避开农村地区,那里不应该是一个商业。通过这种方式,我获得了大约150家企业(由于周边重叠,删除了重复的结果)。这个结果是不可靠的,因为该公司的官方网页声称有245.

为了检索所有的业务,我拆分我的城市在半径10km周围。因此,我用大约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 

回答

0

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

事情是字典初始化必须在每个循环迭代中完成。现在它存储了所有的信息,并从头开始检索我想要的内容。

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 
相关问题