【问题标题】:Add dropdown with cities添加城市下拉菜单
【发布时间】:2020-11-26 12:19:12
【问题描述】:

我已经创建了一个 React Native 应用程序,并且想要一个用户可以指定他们居住在哪个城市的功能,以便可以向其他用户显示它。它应该是一个文本输入,用户可以在其中搜索城市并获得可供选择的选项的下拉列表。然后,最好将城市保存为我们数据库中的 ID,该 ID 可以为所有用户转换回城市的本地化版本。假设有人住在英国,应该说哥德堡,如果你住在瑞典,应该说哥德堡。我查看了以下选项,但没有一个最适合我们:

  • Google Places Autocomplete API 用于获取城市、将地点 ID 保存在我们的数据库中并对其进行反向地理编码。这对我们来说变得非常昂贵,因为它是一个社交应用,每个用户在启动应用时会执行大约 20 个地理编码请求
  • 创建一个包含城市名称的数据库。这不是很可扩展,因为您需要为每个要支持的新国家/地区添加新条目
  • 让用户手动输入他们的城市。这很容易出错,因为用户可以写任何他们想要的内容

我很乐意收到一些有关如何解决此问题的建议。

【问题讨论】:

  • 不是让每个用户选择一个城市并将该城市存储为文本,而是将用户选择的城市保存为带有坐标的位置?这样,当其他用户对他们的位置进行反向地理编码搜索时,它不会以他们喜欢的语言呈现吗?
  • 很遗憾,Google 不允许您存储除地点 ID 之外的任何数据
  • 你检查过这个api吗? geodb-cities-api.wirefreethought.com 显然他们支持多种语言(以多种语言显示结果(当前为英语、法语、德语、意大利语、葡萄牙语、俄语和西班牙语)

标签: javascript react-native google-places-api google-geocoding-api


【解决方案1】:

这是你目前想要的东西:

  • 为您的用户提供自动完成功能
  • 根据他们的选择获取城市
  • 保存城市并将其存储在您的数据库中
  • 为用户提供他们选择的城市的本地化文本

对于第三种情况,Google 可能不允许存储 API 提供的城市。我可以看到您知道这些条款,但这里是允许缓存的Service Specific Terms

根据您的用例,这仍然是可行的。在定价和效率方面,请参阅此pricing sheet 供您参考。现在,您正在执行Places AutocompleteReverse Geocoding 选择以获得城市。你实际上付出了更多。假设您甚至使用每个会话自动完成功能,这就是您为每 1000 个请求支付的费用:

  • 不带地点详细信息的自动完成功能 - 每次会话 = $17.00 +
  • 地理编码 API = 5.00 美元
  • 总费用:每千次通话 22 美元

因此,您可以使用具有相同目的的地点详细信息,而不是使用反向地理编码。可以在基本数据下的地点详细信息请求中检索城市,并使用Address Component 字段。请参阅此link 以获取 Place Details 可以检索的字段列表。与联系人和大气数据不同,使用基本数据检索字段时,这些字段是免费的。因此,请确保使用您将使用的“地点详细信息”请求的“字段”参数,就好像您没有指定那样,所有数据都将被检索并相应地向您收费。因此,如果您将其与自动完成一起使用,您现在的成本将是:

  • 自动填充(包含在地点详细信息中)- 每次会话 + 地点详细信息 + 基本数据 = 每千次调用 $17.00

现在您已经拥有了 City,您现在希望以客户的当地语言展示它。地点详细信息包含optional parameter“语言”。只需在设备中获取客户当前的语言,您就可以实现这一目标。这里是how,你可以参考一下。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 2021-02-06
    • 2018-03-23
    • 2020-04-05
    • 2019-01-04
    • 2019-02-23
    相关资源
    最近更新 更多