ルート付きの地図があります (複数の目的地 - 以下のページのように A、B だけではありません)。方向はドラッグ可能です。変更したルートを保存したいのですが。以下のページは私が行っていたものです...
これが私が持っているものです:
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
console.log('reroute');
var rleg_count = directionsDisplay.directions.routes[0].legs.length;
data.start = {
'lat':directionsDisplay.directions.routes[0].legs[0].start_location.lat(),
'lng':directionsDisplay.directions.routes[0].legs[0].start_location.lng()
};
data.end = {
'lat':directionsDisplay.directions.routes[0].legs[rleg_count-1].end_location.lat(),
'lng':directionsDisplay.directions.routes[0].legs[rleg_count-1].end_location.lng()
};
var wp=[];
var w = [];
var route = directionsDisplay.directions.routes[0];
for (var l = 0; l < route.legs.length; l++)
{
for(var j = 0; j < route.legs[l].via_waypoints.length; j++)
{
w.push({
location:{'lat':route.legs[l].via_waypoints[j].lat(), 'lng':route.legs[l].via_waypoints[j].lng()},
stopover:true
});
}
}
data.waypoints = w;
});
SetRoute 関数:
function setRoute(os)
{
var wp = [];
for(var i=0;i<os.waypoints.length;i++)
{
wp[i] = {
'location': new google.maps.LatLng(os.waypoints[i].location.lat, os.waypoints[i].location.lng),
'stopover': os.waypoints[i].stopover
}
}
var request = {
'origin':new google.maps.LatLng(os.start.lat, os.start.lng),
'destination':new google.maps.LatLng(os.end.lat, os.end.lng),
'waypoints': wp,
optimizeWaypoints: false,
avoidHighways: false,
avoidTolls: false,
travelMode: google.maps.TravelMode.DRIVING,
}
directionsService.route(request, function(res,sts){
// console.log(res);
// console.log(sts);
if(sts=='OK')
directionsDisplay.setDirections(res);
});
}
問題は、目的地が 2 つ (A、B) しかない場合にコードが機能することですが、目的地がさらに増えるとすぐに... 正しく機能しません... 他の目的地を無視します。
私が知る限り、ウェイポイントは正しいです。複数の宛先に問題があるようで、修正方法がわかりません。
ありがとう!