我让自己成为了一个路线管理器,它具有几个选项(例如:voidTolls,travelMode,avoidHighways,路标)和可拖动路线。

我创建了var lastRequest = []来存储上一次渲染的DirectionsRequest properties

代码如下:

directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
        var directions = parseDirections(response, mode, tolls)
        directionsDisplay.setDirections(response)
    }
});

google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
    refreshReq(directionsDisplay.getDirections())
})

function refreshReq(response)
{
    //
}

我一直在寻找一种解决方案,以用directions_changed中的新数据刷新lastRequest['waypoints']上的response,因此我的脚本将能够随时存储路标对象并重做lastRequest

当我从response中获取所需的路标数组时,就会遇到困难。

尝试了几种变体:lastRequest['waypoints'] = response['routes'][0]['legs'][0]['via_waypoints']但这不是那样。

下一步是使用new google.maps.LatLng()逐个重新生成每个航路点,但是由于某种原因,即使我使用eval()将它们推入数组后也无法正常工作。

将中途停留时间更改为false / true,尝试了其他操作,但没有任何操作,必定缺少某些内容。

最佳答案

我由php生成的点js数组需要从via_waypoints刷新

for (var p in req.routes[0].legs[0].via_waypoints)
  points[p]['location'] = req.routes[0].legs[0].via_waypoints[p]

09-06 01:49