【发布时间】: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)
标签: java google-maps gps google-roads-api