【问题标题】:How to get multiple places names in Google Places API?如何在 Google Places API 中获取多个地名?
【发布时间】:2017-11-09 09:43:06
【问题描述】:

在我的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 请求消耗。有没有更好的方法来做到这一点?

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

【问题讨论】:

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


    【解决方案1】:

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

    我相信您可以使用服务条款第 10.5 (d) 段

    没有缓存或存储。您不会预取、缓存、索引或存储任何要在服务之外使用的内容,除非您可以单独存储有限数量的内容出于网络延迟改善 Maps API 实施性能的目的(而不是为了阻止 Google 准确跟踪使用情况),并且仅在此类存储:

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

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

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

    我希望这会有所帮助!

    【讨论】:

    • place_id 可以存储在您的数据库中: > 地点 ID 不受 Google Maps Platform 服务条款第 3.2.3(b) 节所述缓存限制的约束。一旦您确定了某个地点的地点 ID,您可以在下次查找该地点时重复使用该值。有关更多信息,请参阅下面的保存地点 ID 以供以后使用。链接 - developers.google.com/maps/documentation/places/web-service/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2018-01-28
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多