如何使用多个航点简化谷歌路由代码



我有一个包含 0 到 26 个航点的字符串:

location1=Frankfurt&location2=Berlin&location3=Paris

以下代码可以处理不同数量的航点并在地图上显示它们,但我想简化它。

function calculateAndDisplayRoute(directionsService, directionsDisplay) {
waypoint_dict = parseStringToDictionary(document.getElementById('waypoints').value);
var waypoint_array = [];
counter_waypoints = 0;
for(var property in waypoint_dict) {
waypoint_array.push(waypoint_dict[property]);
counter_waypoints += 1
}
switch (counter_waypoints) {
case 0:
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('destination').value, 
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
}
});
break;
break;
case 1:
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('destination').value,
waypoints: [{location: waypoint_array[0]}],
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
}
});
break;
case 2:
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('destination').value,
waypoints: [{location: waypoint_array[0]},{location: waypoint_array[1]}],
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
}
});
break;
case 3:
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('destination').value,
waypoints: [{location: waypoint_array[0]},{location: waypoint_array[1]}, {location: waypoint_array[2]}],
travelMode: 'DRIVING'
}, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
}
});
break;
}
}

您可以在调用directionsService之前构建您的对象,下面是对代码的轻微修改,这应该足够了。

function calculateAndDisplayRoute(directionsService, directionsDisplay) {
var waypoint_dict = parseStringToDictionary(document.getElementById('waypoints').value);
var options = {
origin: document.getElementById('start').value,
destination: document.getElementById('destination').value, 
travelMode: 'DRIVING',
waypoints: []
};
for(var property in waypoint_dict) {
options.waypoints.push({location: waypoint_dict[property]});
}
directionsService.route(options, function(response, status) {
if (status === 'OK') {
directionsDisplay.setDirections(response);
} else {
}
});
...
}

相关内容

  • 没有找到相关文章

最新更新