如何在页面加载时自动计算路由?

时间:2013-01-02 15:46:28

标签: php javascript google-maps

我有一张Google地图,我希望使用预先填充的路线自动加载(取自一系列PHP表单提交)。

目前,PHP表单最终会出现在其上有Google Map的页面中,以及一些预先填充起始点和结束点的下拉框(来自之前的PHP表单提交),以及下载的onChange函数 - 向下计算路线的菜单(onChange="calcRoute();",在下面的示例中)。这样可以正常工作,但实际上,每个最终形式最终都只有一个路线选项。因此,让用户“选择”路径的起点和终点是没有价值的 - 每个下拉菜单中只有一个选项,所以我不妨在页面中自动加载这些选项和计算出的路径负荷。

有没有办法做到这一点?

我的路线功能如下:

    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false"></script>
<?PHP
$Start_latLng = $_POST["start-latitude"] . ", " . $_POST["start-longitude"];
$End_latLng = $_POST["end-latitude"] . ", " . $_POST["end-longitude"];
?>
    <script>
      var directionDisplay;
      var directionsService = new google.maps.DirectionsService();
      var map;

      function initialize() {
        directionsDisplay = new google.maps.DirectionsRenderer();
        var mapOptions = {
          zoom:7,
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          center: new google.maps.LatLng(54.219218, -2.905669)
        }
        map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
        directionsDisplay.setMap(map);
      }

      function calcRoute() {
        var start = document.getElementById('start').value;
        var end = document.getElementById('end').value;
        var request = {
            origin:start,
            destination:end,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
        directionsService.route(request, function(response, status) {
          if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
          }
        });
      }
    </script>

...我的下拉菜单由PHP $ _POST函数的结果填充。

显然,在我计算路线之前,我需要等待地图加载,因此可能需要注入暂停 - 任何想法?

1 个答案:

答案 0 :(得分:0)

感谢@Robot Woods: 你能解雇calcRoute();作为初始化函数的最后一行? - 机器人伍兹