好的,事情就是这样。我试图通过显示其中的每条路线来显示包含访问多个位置的整个行程。例如:我可能从纽约出发,然后去波士顿,然后是洛杉矶,然后是旧金山,最后回到纽约。
这是包含多个请求的循环并按顺序显示路由的代码的一部分。
for (int i=0; i<all; ++i) {
System.out.println(places.get(pass.charAt(i)-48)+"to"+places.get(pass.charAt(i+1)-48));
%>
var start = "<%=places.get(pass.charAt(i)-48) %>";
var end = "<%=places.get(pass.charAt(i+1)-48) %>";
var request = {
origin: start,
destination: end,
provideRouteAlternatives: false,
travelMode: google.maps.DirectionsTravelMode.TRANSIT
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
if (first == 1) {
first = 0;
responseAll = response;
responseAll.routes[<%=i%>] = response.routes[0];
}else {
responseAll.routes[<%=i%>] = response.routes[0];
directionsDisplay.setDirections(responseAll);
}
}
});
<%}%>
问题是它只是显示了我请求的前三个路由。在这种情况下,纽约到波士顿、波士顿到洛杉矶、洛杉矶到旧金山的路线。我想可能是页面最多可以显示三个路由。所以我通过将代码更改为这个来测试这个想法(它用 5 个路由初始化 DirectionResponse)
if (first == 1) {
first = 0;
responseAll = response;
for (var a = 0; a!=5;++a) {
responseAll.routes[a] = response.routes[0];
}
然后我发现它可以同时显示超过 5 条路线(尽管在这个测试用例中它们都是相同的路线)。所以事实证明它忽略了第三个请求之后的其他请求。
所以这是我的问题:无论如何要修复它以让它回答所有请求,或者说三个以上的请求?