2011-08-20 49 views
1

我有一个应用程序在用户的当前位置周围使用一定的距离半径生成一定数量的令牌。用户将不得不跑到其中一些位置。问题是,一些令牌可在湖泊,森林,海洋,或其他一些物理可达位置创建。作为一个快速解决我刚刚产生额外的令牌,并增加接近距离确定用户是否达到了一定的位置。我现在想要改善这一点,以便每个令牌都位于可到达的位置。创建位于物理可到达位置的随机纬度/经度坐标

我唯一能够提出的解决方案是使用Google Directions API来确定从用户到令牌的路径,并使用折线中的最后一个坐标作为令牌的新可到达位置。我的这个问题是,我可能不得不同时发布多达30个请求路线服务,我很担心,我会打的查询速率限制。我还没有发现有关查询速率限制的任何明确信息。

所以我的问题是,是否有人知道一个更好的解决方案,或可以给任何输入的方向查询速率限制?在每个请求之间等待1秒钟并强制用户等待30秒,这不是一个合理的解决方案。谢谢。

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

回答

0

约8小时后,我终于得到了一些工作。因此,使用的事实,每个请求最多可以有8个航点我可以在技术上问路9点的位置在一个请求。这是我现在正在做的:

一次生成9个随机位置。通过位置我DirectionsComputer返回通过所有9点坐标为坐标的例子不胜枚举折线路径。然后我从路径中选择9个位置,并将它们设置为我的令牌的位置。现在,我所有的令牌都是半随机生成的,总是出现在道路上,我只需要连续发出4次请求就可以生成36个令牌。

有些情况下,一些令牌会聚在一起。例如,最初位于海洋中的坐标移动到同一海滩。但大部分情况下,我的所有测试都显示令牌分开,我可以调整其余部分。

0

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

0

Usage limits

使用谷歌地图API的受到的每天2500个路线请求查询的限制。请求中的单个路线请求最多可包含8个中途航点。

Google地图总理客户每天最多可以查询100,000个路线请求,每个请求最多允许23个路线点。

您可能需要查看地图总理客户,以免您的速度过快。如果你的应用程序变得流行,我敢打赌你可以获得更高的限制。

其中一种方法是查看是否可以看到高程以查看是否悬崖峭壁。然而,只要看看它是不是一个湖就好像很难。除了谷歌地图外,可能会有某种GPS查询服务。

如果你只是想知道位置之间的距离只使用Location.distanceTo()或静态distanceBetween() 获取信息,如果它是一个道路,那是另一问题。