我在谷歌Map方向工作,我在跟踪谷歌的导航应用程序。
我能够通过DirectionsService获得所有可能的替代路线,并可以给折线不同的颜色,我希望用户能够选择他想要的路径,只是通过点击折线一些如何还没有找到任何东西。
- 我的密码:**
directionsService.route(request, function(response, status) {
var points = [];
if (status == google.maps.DirectionsStatus.OK) {
try {
var polycolour = "";
var Opacity = 0;
//var PolyLine = '';
for (var i = 0, len = response.routes.length; i < len; i++) {
if (i == 0) {
polycolour = "Blue";
Opacity = 5;
}
else {
polycolour = "grey";
Opacity = 2;
}
directionsDisplay = new google.maps.DirectionsRenderer({
map: map,
directions: response,
routeIndex: i,
draggable : true,
polylineOptions: {
strokeColor: polycolour,
strokeWeight: Opacity
}
});
var infowindow2 = new google.maps.InfoWindow();
//var step = 10;
//alert(angular.toJson(response.routes[0].legs[0].steps[i]));
infowindow2.setContent(""+((response.routes[i].legs[0].distance.value)/1000)+" KM");
infowindow2.setPosition(response.routes[i].legs[0].steps[8].end_location);
infowindow2.open(map);
}
//directionsDisplay.setMap(map);
google.maps.event.addListener(directionsDisplay, 'click', function(){
alert("helo");
});
//for (var k = 0, len = response.routes.length; k < len; k++) {
//var myRoute = response.routes[k].legs[0];
//for (var i = 0; i < myRoute.steps.length; i++) {
//for (var j = 0; j < myRoute.steps[i].lat_lngs.length; j++) {
// points.push(myRoute.steps[i].lat_lngs[j]);
//}
//}
//var routLine = new google.maps.Polyline(
//{
//path: points,
//strokeColor: "Red",
//strokeOpacity: 0.5,
// strokeWeight: 10
// }
// );
// }
// routLine.setMap(map)
// Add a listener for the rightclick event on the routLine
//google.maps.event.addListener(routLine, 'click', function(e){
//try {
//alert(angular.toJson(e));
//}
//catch (err)
//{
// alert(err);
//}
// });
//alert(angular.toJson(response.routes[0].legs[0].steps));
//google.maps.event.addListener(PolyLine, 'routeindex_changed', function() {
//alert("Bingo");
//computeTotalDistance(directionsDisplay.getRouteIndex());
//});
//alert(response.routes.length);
//directionsDisplay.setDirections(response);
}
catch (err)
{
alert(err);
}
}
});
1条答案
按热度按时间idv4meu81#
首先,您需要告诉请求您需要替代路线,如下所示
然后你有多个response.routes对象(注意,有时你只得到一个route)。
现在可以使用response.routes[i]作为方向渲染的源。
或者您可以创建自己的折线。使用response.routes[i].overview_path作为路径
下面是一个功能示例。只需更改API密钥。
按照您的要求,单击某条路径将其高亮显示
更新:我喜欢这样。
灰线和彩色线都会生成。但是高亮显示只会在Map上显示其中一个建议。
大的灰色线很适合点击,所以它得到的是点击事件而不是彩色线。
这也是避免Z轴问题的最简单方法。
我存储数据(持续时间、距离),并显示在信息窗口上
早期代码。这将更改折线的颜色