有没有一种好方法可以最大限度地减少 Google Maps Roads API 的负载?

Posted

技术标签:

【中文标题】有没有一种好方法可以最大限度地减少 Google Maps Roads API 的负载?【英文标题】:Is there a good way to minimize load on Google Maps Roads API? 【发布时间】:2019-05-03 04:59:05 【问题描述】:

我正在为内部工具开发概念证明/原型。基本前提是,我们有几个设备上装有 GPS,它们向我在云环境中构建的 java api 报告它们的位置(具有 NMEA 格式的典型 GPS 精度)。

[Device GPS] -> [Sends Cellular GSM request to API] -> [API queries Google 
Roads] -> [Google Roads returns snapped coordinates] -> [App maps received 
coordinates]

java API 获取报告的坐标,并实质上向 Google Maps Roads API 发送请求并使用Snap-to-road 功能(这实际上将获取您提供的任何点以及可选的坐标路径,并给出你协调回来,基本上是在它认为你正在旅行的路径上)。这很好,但有一个挫折。

它很贵。

对于每隔几秒报告一次位置的两台设备(类似于 Uber 或 Lyft 可能会这样做),运行此应用程序的成本基本上使其成为沉没成本。 24,000 个查询将花费您 300-500 美元。一台设备。

我们已经采取了一些措施,只在工作时间接受对 API 的请求 - 但这仍然只是表面上的问题。

我相当有能力编写我需要的任何东西(至少我相信),或者可以找到图书馆来做我认为需要做的事情 - 但我不知道该采取什么办法。我正在考虑将请求缓存在另一个表中并首先查询它,但我不确定这会有多可靠。

有没有人实施过这样的解决方案或类似的东西?在我让这个项目破产之前,我只需要支付我发送到 Google Maps API 的请求数量。

【问题讨论】:

简化请求。仅在距离变化大于某个阈值时才发出请求。通过简化算法运行多个点(如Douglas - Peucker) 【参考方案1】:

如果您还没有,我想您应该查看 Google Maps API 定价表 (https://cloud.google.com/maps-platform/pricing/sheet/?) 并与 Google 交谈。他们应该能够向您解释正确的架构方法(在本地缓存部分地图、本地路径处理等)。

https://en.wikipedia.org/wiki/Google_Maps#Google_Maps_API 他们解释了价格变化和其他有用的细节,但如果您的用例允许,该部分还提到了 OpenLayers 和本地地图托管等替代方案。

这可能有助于更好地了解设备的行程范围。这些设备是安装在只能在工厂周围行驶的车辆上,还是安装在用户可以在世界任何地方携带的个人设备上?

【讨论】:

是的 - 我试过了。他们不是很有帮助。他们的建议是(虽然不是一个坏的)将我引导到 ***。 关于范围问题,这将是一个预定义的路线,每天。

以上是关于有没有一种好方法可以最大限度地减少 Google Maps Roads API 的负载?的主要内容,如果未能解决你的问题,请参考以下文章

在标准容器上执行一系列操作时最大限度地减少峰值内存使用

为啥使用整数类型作为分区键可以最大限度地减少内存使用?

持续唤醒和睡眠以最大限度地减少 Linux 上的功耗?

电话和后端连接,如何最大限度地减少黑客攻击

将板安装到可用长度的算法,最大限度地减少浪费

javascript 隐藏文档正文有助于最大限度地减少闪烁