在我的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请求消耗。有没有更好的方法呢?
我没有找到任何批量请求选项。
答案 0 :(得分:2)
Google Maps API确实不支持批量操作,发送数百个请求肯定非常耗时。
我相信您可以使用“
”的服务条款第10.5(d)段无缓存或存储。您不会预取,缓存,索引或存储要在服务外使用的任何内容,但您可以仅存储有限数量的内容为了提高由于网络延迟而导致的Maps API实施的性能(而不是为了阻止Google准确跟踪使用情况),并且仅在此类存储的情况下:
- 是临时的(在任何情况下都不超过30个日历日);
- 是安全的;
- 不会操纵或汇总内容或服务的任何部分;和
- 不会以任何方式修改归属地。</ li>
https://developers.google.com/maps/terms?#section_10_5
我相信,您符合我用粗体标记的文字。您的目的是提高应用程序的性能,以便您可以临时存储与地点ID和城市名称相关的哈希映射,并每30天刷新一次临时存储,以符合服务条款。
我希望这有帮助!