我让自己成为了一个路线管理器,它具有几个选项(例如: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]