ユーザーが入力フィールドで開始点と終了点を検索する Google マップがあります。ルートが描画されたら、ウェイポイントを追加およびドラッグしてルートをカスタマイズできます。送信すると、ルートは XML として保存され、必要に応じて新しいマップに再描画されます。問題は、現時点では開始点と終了点しか XML に保存されていないことです。
私はこのドキュメントから作業してきました: https://developers.google.com/maps/documentation/javascript/directions#Waypointsですが、ここで完全に困惑しています。
私が提案した方法は、開始点と終了点と同じで、緯度と経度の値を XML に保存します。以下の JS は、ウェイポイントのデータを取得します。配列がどのように構成されているかを確認するために console.logged しました。ここでの問題は、各ウェイポイント (複数ある場合) をループし、それぞれを新しい変数として保存して、PHP 送信用のフォームに追加できるようにする方法がわからないことです。
//What to do when a waypoint has been added/changed
google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
var waypoints = directionsDisplay.getDirections().routes[0].legs[0].via_waypoints;
console.log(waypoints);
console.log(waypoints[0].kb);
});
私が言ったように、おそらくもっと簡単な方法があります。上記は私がこれまでに試したことです。これは console.log(waypoints) の結果です...
非表示の入力に値を与えるJSは以下のとおりです...
$('form.add-journix').submit(function() {
$('#startlat').attr('value', startLatVal);
$('#startlng').attr('value', startLongVal);
$('#endlat').attr('value', endLatVal);
$('#endlng').attr('value', endLongVal);
});
これは、XMLとして保存するPHPです...
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("title", $row['title']);
$newnode->setAttribute("description", $row['description']);
$newnode->setAttribute("startlat", $row['startlat']);
$newnode->setAttribute("startlng", $row['startlng']);
$newnode->setAttribute("endlat", $row['endlat']);
$newnode->setAttribute("endlng", $row['endlng']);
}
echo $dom->saveXML();