创建位于物理可达位置的随机纬度/经度坐标

时间:2011-08-20 04:09:52

标签: android android-mapview google-api directions

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

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

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

更新 使用我在问题中描述的解决方案确实会产生OVER_QUERY_LIMIT,即使我在每个请求之间等待1秒。除此之外,逻辑是声音和获得请求的令牌出现在步行可到达的位置。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

Usage limits

  

使用Google Directions API时,查询限制为每天2,500个路线请求。单个路线请求可在请求中包含最多8个中间路点。

     

Google Maps Premier客户每天最多可查询100,000个路线请求,每个请求最多允许23个路标。

您可能想要了解一下地图首要客户,这样您就不会太快达到限制。如果您的应用程序变得流行,我打赌您可以获得更高的限制。

一种方法是看你是否可以看到海拔,看它是否是悬崖。然而,看看它是否是一个湖泊似乎相当困难。除谷歌地图外,可能会有某种gps查找服务。

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

答案 2 :(得分:0)

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

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

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