如何在Google Places API中获取多个地点名称?

时间:2017-11-09 09:43:07

标签: python django google-maps google-places-api

在我的Django项目中,我让用户在最近的哪个城市进行标记。我用这个Google Places API - 自动填充地图。

我有多个用例,我无法使用 Google Places API T& C ,这是其中之一:

有一个用户过滤器。每个用户都选择了上次访问过的地方(因此我可以存储place_id)。

当用户过滤了100个用户时,他们会在结果中逐个显示他们的卡片。该卡应包含用户上次访问的地点。

所以我必须在100个地方(城市)展示100张卡片。

如果我只有place_id的话怎么办?我应该向Google Places API发送100个详细请求以获取每个城市的名称吗?

def user_filter(request):
    filtered_users = ....
    for user in filtered_users:
        api_result = request.get('https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJN1t_tDeuEmsRUsoyG83frY4&key=MY_API_KEY')
        recent_city_name = parse_from_result(api_result)
    ....
    return render(request,....)

虽然这应该是从头到尾工作的,但这是一个很大的过度耗费时间和API请求消耗。有没有更好的方法呢?

我没有找到任何批量请求选项。

1 个答案:

答案 0 :(得分:2)

Google Maps API确实不支持批量操作,发送数百个请求肯定非常耗时。

我相信您可以使用“

”的服务条款第10.5(d)段
  

无缓存或存储。您不会预取,缓存,索引或存储要在服务外使用的任何内容,但您可以仅存储有限数量的内容为了提高由于网络延迟而导致的Maps API实施的性能(而不是为了阻止Google准确跟踪使用情况),并且仅在此类存储的情况下:

     
      
  • 是临时的(在任何情况下都不超过30个日历日);
  •   
  • 是安全的;
  •   
  • 不会操纵或汇总内容或服务的任何部分;和
  •   
  • 不会以任何方式修改归属地。<​​/ li>   

https://developers.google.com/maps/terms?#section_10_5

我相信,您符合我用粗体标记的文字。您的目的是提高应用程序的性能,以便您可以临时存储与地点ID和城市名称相关的哈希映射,并每30天刷新一次临时存储,以符合服务条款。

我希望这有帮助!