2

我有一个谷歌地图,用户在输入字段中搜索起点和终点,然后在绘制路线后,他们可以通过添加和拖动航点来自定义路线。提交时,路线会保存为 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();
4

1 回答 1

1

当您的问题只是通过航点的循环时,它是这样的:

for(var i=0;i<waypoints.length;++i){
  console.log(waypoints[i].lat(),waypoints[i].lng());
}
于 2013-04-06T19:42:04.303 回答