哪个Google放置API查询结果可以存储在数据库中?

gil*_*iev 13 google-api google-places-api

我正在探索Google API,主要是Places API.由于对Google Places API的请求数量限制为100,000,我正在寻找最小化发送到API的请求数量的方法.我正在考虑使用数据库来存储以前收到的响应,因此将来我可以在不向API发出请求的情况下检索它们,只有在以前没有将所需数据存储在我的数据库中的情况下才会请求API .

根据Google API使用条款,特别是 10.1.3对复制或数据导出的限制,不允许无限期地存储数据,但暂时缓存数据是合法的:

您不得预先获取,缓存或存储任何内容,但您可以存储以下内容:(i)有限数量的内容,以便在您暂时(以下情况下)暂时提高Maps API实施的效果时超过30个日历日,安全,并且不允许在服务之外使用内容; (ii)Maps API文档特别允许您存储的任何内容标识符或密钥.例如,您不得使用内容来创建"地点"或其他本地列表信息的独立数据库.

我觉得这部分没有得到很好的解释.我可以将API收到的任何数据存储在我的数据库中30天或仅存储地点的ID吗?因为在其他一些情况下我读过它只允许存储id.我这样理解:我可以无限期地存储地点ID,但只能使用整个数据30天.

因为我一直在阅读有关Google API的文章,所以我可能错过了一些使用期限,所以如果你能帮助我,我会非常感激.

任何建议如何最大限度地减少对API的调用次数,或者使用这些API分享与真实项目相关的一些经验将非常感激.此外,如果您可以建议我一些可以提供类似功能的替代API将非常有用.

先感谢您!

Mr.*_*mas 12

根据我使用Google Places API的经验,您的理解是正确的.让我用自己的话解释这两个规定:

i)无需预取或在应用程序之外重新分发,您可以将API结果缓存最多30天.

ii)您可以在应用程序特定数据中使用地点ID或密钥,但没有其他内容(例如,如果您的应用程序允许用户"登记"位置,您可以存储他们在用户对象上的地点ID列表并根据ID查找所需的地点,但您无法使用Google的名称/详细信息存储所有地点的列表.

为了减少API调用的数量并加速我的应用程序,我所做的是将附近的地方调用缓存在一个简单的键值缓存中,其中键是lat-lng对舍入到一定的精度(以便调用某个半径将到达缓存),该值是整个JSON结果字符串.这是我的代码,它是在Google的App Engine上运行的Java:

// Using 4 decimal places for rounding represents approximately 11 meters of precision
// http://gis.stackexchange.com/questions/8650/how-to-measure-the-accuracy-of-latitude-and-longitude
public static final int LAT_LONG_CACHE_PRECISION = 4;

public static final int CACHE_DURATION_SEC = 24 * 60 * 60; // one day in seconds

...

String cacheKey = "lat,lng:" + round(latitude) + "," + round(longitude);
asyncCache.put(cacheKey, dataJSON, Expiration.byDeltaSeconds(CACHE_DURATION_SEC), MemcacheService.SetPolicy.SET_ALWAYS);

...

private static double round(double value) {
    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(LAT_LONG_CACHE_PRECISION, RoundingMode.HALF_UP);
    return bd.doubleValue();
}
Run Code Online (Sandbox Code Playgroud)

至于替代API,我建议你看看以下内容:

Yelp API - 提供Google缺乏的酒吧/餐厅数据

Facebook API - 如果您已经在使用Facebook的SDK,则易于使用

事实:地方十字路口 - 聚合和规范化来自许多来源的地方数据,包括Facebook和Yelp,但不包括谷歌

目前我只使用Google Places API,但我计划稍后添加Yelp或Factual以改善最终用户的结果.

  • https://cloud.google.com/maps-platform/terms/ 中的最新政策更改,其中第“3.2.4 禁止滥用服务的限制”规定“禁止抓取”、“禁止缓存”和禁止创建内容。所以我想 30 天的事情也被删除了。 (2认同)