所以我只是学习javascript来搞乱Google Maps API。我想知道是否有人对我遇到的这个问题有一个优雅的解决方案。
Google地图路线请求必须包含三项内容(来源,目的地和travelMode)。我的travelMode将永远是驾驶。原点始终位于用户所在的位置。
目的地虽然需要改变。我有几个航点,用户将访问,并希望提供尽可能短的旅行,具体取决于选择的航路点和用户的位置,在其中一个航路点结束航线(例如:ABC或ACB,但始终是Axx。 ..x)。
除了计算每个可能的路径并查看哪个路径的最短距离(或时间,或者我正在评估的任何路径)之外,有没有其他方法可以做到这一点?这似乎是非常昂贵的(O(n!))。
编辑:将建议的optimizeWaypoints标志设置为true,这将成为O(n)问题而不是O(n!),但现在我遇到了在很短的时间内发出太多请求的问题。
答案 0 :(得分:6)
谷歌路线中有一个设置可提供优化路线(optimizeWaypoints - http://code.google.com/apis/maps/documentation/javascript/services.html#Directions),您只需在路线对象中将其设置为true
答案 1 :(得分:2)
如果您想要最短的路线,可以先拨打Google distanceMatrix API并获取停靠点的排序列表。
然后使用排序列表调用API指示。
答案 2 :(得分:0)
一个简单的解决方案是将“起点”和“目的地”指定为相同,并要求Google地图根据所有其他航路点来优化路线。它通常会先到达最远点,或者最后到达最远点,然后再返回原点。然后,您可以不进行优化就发出另一个请求,这次将“目的地”指定为最后一个优化的航路点。