Android 创建位于物理可到达位置的随机横向/纵向坐标

Android 创建位于物理可到达位置的随机横向/纵向坐标,android,android-mapview,google-api,directions,Android,Android Mapview,Google Api,Directions,我有一个应用程序,它使用一定的距离半径在用户的当前位置周围生成一些令牌。然后,用户必须运行到其中一些位置。问题在于,一些代币可以在湖泊、森林、海洋或其他物理上无法到达的位置创建。作为一个快速解决方案,我只是生成额外的令牌并增加邻近距离,以确定用户是否到达某个位置。我现在想改进这一点,使每个令牌位于一个可到达的位置 我能想到的唯一解决方案是使用Google Directions API确定从用户到令牌的路径,并使用多段线中的最后一个坐标作为令牌的新可到达位置。我的问题是,我可能需要同时向Direc

我有一个应用程序,它使用一定的距离半径在用户的当前位置周围生成一些令牌。然后,用户必须运行到其中一些位置。问题在于,一些代币可以在湖泊、森林、海洋或其他物理上无法到达的位置创建。作为一个快速解决方案,我只是生成额外的令牌并增加邻近距离,以确定用户是否到达某个位置。我现在想改进这一点,使每个令牌位于一个可到达的位置

我能想到的唯一解决方案是使用Google Directions API确定从用户到令牌的路径,并使用多段线中的最后一个坐标作为令牌的新可到达位置。我的问题是,我可能需要同时向Directions服务发布多达30个请求,我担心我可能会达到查询速率限制。我没有找到任何关于查询率限制的明确信息

因此,我的问题是,是否有人知道更好的解决方案,或者是否有人可以提供有关方向查询速率限制的任何信息?在每个请求之间等待1秒并强制用户等待30秒不是一个合理的解决方案。谢谢

更新
使用我在问题中描述的解决方案确实会产生一个OVER_QUERY_限制,即使我在每个请求之间等待1秒。除此之外,逻辑是合理的,通过请求的令牌出现在可步行到达的位置。

您可以使用Location.distanceBetween()计算两个lat/lon之间的距离。这是一个静态便利API调用。计算次数没有限制。

使用谷歌方向API的查询限制为每天2500个方向请求。单个方向请求中最多可包含8个中间航路点

Google Maps Premier客户每天最多可查询100000个方向请求,每个请求最多可查询23个航路点

您可能需要查看“地图卓越理财”客户,这样您就不会太快达到极限。如果你的应用程序变得流行,我打赌你可以得到更高的限制

一种方法是看你是否能看到海拔,看它是否是悬崖。然而,仅仅是看看它是否是一个湖泊似乎是相当困难的。可能是除了谷歌地图之外的gps查询服务

如果您只想知道位置之间的距离,请使用或静态
获取信息是否是道路是另一个问题。

大约8个小时后,我终于找到了工作。因此,利用每个请求最多可以有8个航路点的事实,从技术上讲,我可以在一个请求中向9个地点问路。以下是我现在正在做的:

一次生成9个随机位置。将这些位置传递到my Directions Computer,该计算机返回通过所有9个坐标的多段线路径,作为坐标列表。然后我从路径中选择9个位置,并将它们设置为令牌的位置。现在我所有的代币都是半随机生成的,总是出现在道路上,我只需要连续4次请求就可以生成36个代币

在某些情况下,一些代币被捆绑在一起。例如,最初位于海洋中的坐标将移动到同一海滩。但在大多数情况下,我所有的测试都显示代币分散开来,我可以调整其余的