我试图通过提供航点,使用谷歌方向api找到优化路线。下面是我使用过的航路点 statring point:LHR 第一个航点:豪恩斯洛 第二航点:哈灵顿
当我尝试使用以下http://findthebestroute.com/RouteFinder.html找到优化曲目时,响应是明显的答案并且正确。
但是现在我想在我自己的应用程序中使用google提供的directionservice api执行相同的操作。我已按以下方式准备了上述请求
Request Url: http://maps.googleapis.com/maps/api/directions/json
Request Method: GET
Status Code: 200
Params: {
"origin": "LHR",
"mode": "driving",
"sensor": "false",
"departure_time": "1375789483",
"units": "metric",
"waypoints": "optimize:true|hounslowl|harlington"
}
我得到的错误回答如下,这表明我对豪恩斯洛和哈灵顿的LHR。我不知道我提出的要求有什么问题。任何帮助都非常明显。
答案 0 :(得分:4)
很抱歉回答我自己的问题。但由于我对上述情况有很大的疑问,我希望其他情况也会发生。这适用于那些遇到同样问题并浪费时间寻找所需答案的人。
我正在寻找这个问题的答案差不多2天。最后发现没有直接的一步法计算结果并按排序顺序得到路径点。但是有办法向谷歌发送多个优化路线请求。
在我解释这个简单的逻辑之前,让我们首先找出你需要设置的必需参数
现在首先需要设置原点并找到最佳的最终目的地以获得优化的轨道。
例如。如果你有多个航路点说A,B,C,D。确实,在找到优化航迹后,这个订单可能不会保持不变。所以首先我们需要决定从我们想要开始路线的位置让我们假设B,然后我们需要计算三个优化的轨道,假设提醒其中一个点是最终目的地。含义
看到结果,我们有三个可能的轨道,具有不同的距离值和时间。 现在,您只需根据时间优化或距离优化选择优化的轨道。
答案 1 :(得分:3)
使用optimize:true
允许路线服务通过以更有效的顺序重新排列路标来优化提供的路线。
Documentation
修改强>
查看您的代码,您不提供目的地 我尝试过(添加twickenham作为航点)
http://maps.googleapis.com/maps/api/directions/json?origin=LHR,uk&destination=hounslow,uk&waypoints=optimize:true|twickenham,uk|harlington,uk&sensor=false
这提供了所需的优化路线。
要使用optimize:true
,您需要原点,目的地和至少2个航路点。
答案 2 :(得分:1)
官方文件可在以下网址找到: https://developers.google.com/maps/documentation/javascript/directions#DirectionsRequests
基本上您只需要在您的请求中添加optimizeWaypoints:true
即可。请参阅以下示例:
var start_location = "LHR";
var finish_location = "LHR";
var way_points = [
{
location:"hounslowl",
stopover:false
},{
location:"harlington",
stopover:false
}
]
// Let's create the Google Maps request object
var request = {
origin: start_location,
destination: finish_location,
optimizeWaypoints:true,
waypoints[]: way_points,
travelMode: google.maps.TravelMode.DRIVING
};
答案 3 :(得分:0)
路线路线
旧版DirectionsTrip对象已重命名为DirectionsRoute。请注意,路线现在指的是整个开始到结束的旅程,而不仅仅是父母旅行的一段。
DirectionsRoute包含来自指定起点和终点的单个结果。该路线可能包含一条或多条腿(DirectionLeg类型),具体取决于是否指定了任何航路点。同样,该路由还包含版权和警告信息,除路由信息外,还必须向用户显示这些信息。
DirectionsRoute是一个对象文字,包含以下字段:
legs []包含一个DirectionsLeg对象数组,每个对象包含有关路径一段的信息,来自给定路径中的两个位置。对于指定的每个航点或目的地,将存在单独的航段。 (没有航路点的航线将只包含一个DirectionsLeg。)每条航线都包含一系列DirectionSteps。
waypoint_order包含一个数组,指示计算路线中任何航点的顺序。此数组可能包含更改 如果DirectionsRequest已通过optimizeWaypoints,则订购:true。
overview_path包含一个LatLng数组,表示结果方向的近似(平滑)路径。 bounds包含一个LatLngBounds,指示沿给定路径的折线边界。 copyrights包含要为此路线显示的版权文本。 如果您不使用提供的DirectionsRenderer对象,则必须自己处理并显示此信息。 warnings []包含显示这些方向时要显示的警告数组。如果您不使用提供的DirectionsRenderer对象,则必须自己处理并显示这些警告。
参考:https://developers.google.com/maps/documentation/javascript/directions#Legs
答案 4 :(得分:0)
最近2个小时我都遇到了同样的问题。我发现了可以帮助任何其他程序员解决相同问题的主要原因。Google方向Api没有显示优化的溃败原因是因为我们没有提供确切的位置。您只插入一串只有一个城市地址的航点。您必须提供完整的地址,以便Google知道该航点的确切纬度和经度,以及出发地和目的地,将解决此问题。 例如:原点=法国Thionville的Gare de Thionville。
来自Google Direction API文档的参考。 “位置将航点的位置指定为LatLng,google.maps.Place对象或将进行地理编码的字符串。”