为什么使用google places API的next_page_token会返回与第1页相同的结果?

时间:2015-09-08 09:16:41

标签: ruby-on-rails google-places-api

我想要谷歌地方的地方信息,所以我使用" nearbysearch" API。 但它只返回了前20位的信息。所以我使用next_page_token来获取第二页上的地点信息,但它仍然返回第一页上已经存在的地方的信息。

  response=HTTParty.get("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+params[:place][:latitude]+","+params[:place][:longitude]+"&radius="+params[:place][:radius]+"&types="+params[:place][:type]+"&key=AIzaSyAD6Vgkz7vo-nZLZp-xeNoPchOr7RepWEU")  

  receipt=JSON.parse(response.body)   

  @next_page_token=receipt['next_page_token']
  response2=HTTParty.get("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location="+params[:place][:latitude]+","+params[:place][:longitude]+"&radius="+params[:place][:radius]+"&pagetoken=#{@next_page_token}&types="+params[:place][:type]+"&key=AIzaSyAD6Vgkz7vo-nZLZp-xeNoPchOr7RepWEU")

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为这两件事都是真的:

  1. 您的请求的<{1}}参数不包含有效的页面令牌(可能没有第二页的结果,所以它只是一个空字符串?)。这是你的主要问题。此外,
  2. 您的第二个请求会重复所有参数,即使您不需要使用页面标记。原始请求+无效&pagetoken=被视为原始请求,因为您已注意到:)
  3. 所以你应该:

    1. 手动验证pagetoken=是否符合您的预期并修复所显示的内容。例如。至少你应该添加逻辑来处理响应没有@next_page_token的情况,并且
    2. 更改第二个请求以省略next_page_tokenkey以外的所有参数,以便不必要的参数不会掩盖您的主要错误。