我创建了一个React Native应用程序,想要一个用户可以指定他们居住的城市的功能,以便向其他用户显示。它应该是一个文本输入,用户可以在其中搜索城市并获得可供选择的下拉列表。然后,最好将城市保存为我们数据库中的ID,该ID可以转换回所有用户的城市本地化版本。假设有人住在英国,应该说哥德堡,如果你住在瑞典,应该说哥特堡。我已经考虑了以下选项,但没有一个是最适合我们的:
- Google Places Autocomplete API获取城市,将地点ID保存在我们的数据库中,并对其进行反向地理编码。这对我们来说变得非常昂贵,因为它是一个社交应用程序,每个用户在启动应用程序时将执行大约20个地理编码请求
- 创建一个包含城市名称的数据库。这不是很可扩展,因为您需要为每个想要支持的新国家/地区添加新条目
- 允许用户手动输入他们的城市。这很容易出错,因为用户可以随心所欲地编写
我很乐意收到一些关于如何解决这个问题的建议。
以下是您当前想要的东西:
- 为用户提供自动完成功能
- 根据他们的选择获取城市
- 保存城市并将其存储在数据库中
- 为用户提供他们选择的城市的本地化文本
对于第三种情况,Google可能不允许存储API提供的城市。我可以看出你知道这些条款,但这里是允许缓存的服务特定条款。
根据您的用例tho,这仍然是可行的。在定价和效率方面,请参阅此定价表以供您参考。现在,您正在执行位置自动完成和反向地理编码选择以获取城市。实际上你付的钱多了一点。假设你甚至使用每次会话自动完成,这就是你为每1000个请求支付的费用:
- 无位置自动完成详细信息-每次=$17.00+
- 地理编码API=5.00美元
- 总成本:每千个电话22美元
因此,您可以使用相同目的的Place Details,而不是使用反向地理编码。城市可以在"基本数据"下的"位置详细信息"请求中检索,该请求具有Address Component
字段。有关Place Details可以检索的字段列表,请参见此链接。与Contact和Atmosphere Data不同,使用Basic Data检索字段时,这些字段是免费的。因此,一定要使用";字段";您将使用的Place Detail请求的参数,就好像您没有指定一样,将检索所有数据,并向您收取相应费用。因此,如果你在自动完成中使用它,你现在的成本将是:
- 自动完成(包含位置详细信息(-每次会话+位置详细信息+基本数据=每千次呼叫17.00美元
现在您有了城市,您现在需要用客户的当地语言来展示它。Place Details包含可选参数";语言";。只需在设备中获取客户的当前语言,就可以实现这一点。以下是如何获得它以供参考。