我有一个谷歌地图,用户在输入字段中搜索起点和终点,然后在绘制路线后,他们可以通过添加和拖动航点来自定义路线。提交时,路线会保存为 XML,然后在需要时在新地图上重新绘制。问题是此刻我只有保存到 XML 的起点和终点。
我一直在使用此文档:https ://developers.google.com/maps/documentation/javascript/directions#Waypoints ,但我在这里完全被难住了。
我建议这样做的方式与起点和终点相同 - 将 lat 和 long 值保存到 XML 中。下面的 JS 获取航点的数据。我已经控制台记录了它以查看数组的结构。我在这里遇到的问题是我不知道如何遍历每个航路点(如果有多个航路点)并将每个航路点保存为一个新变量,以便我可以将它们添加到我的表单以进行 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();