在Google Maps JavaScript API中拖动路线(即新航点)时触发某些事件

时间:2017-08-27 15:07:13

标签: javascript google-maps google-maps-api-3

基本上我希望能够从Google地图视图中提取路线中的起点,终点和任何航点的纬度和经度信息。

目前我正在使用此示例https://developers.google.com/maps/documentation/javascript/examples/places-autocomplete-directions

在对此进行测试时,我只是将我需要的信息存储在全局范围内名为“route”的变量中。

var saveRoute = function (directionsDisplay) {
    var final_waypoints=[], waypoints;
    var route_legs = directionsDisplay.directions.routes[0].legs[0];
    if(!route_legs) {
      return
    }
    route.start = {'lat': route_legs.start_location.lat(), 'lng': route_legs.start_location.lng()}
    route.end = {'lat': route_legs.end_location.lat(), 'lng': route_legs.end_location.lng()}
    var waypoints = route_legs.via_waypoints 

    for(var i=0;i<waypoints.length;i++) {
      final_waypoints[i] = [waypoints[i].lat(), waypoints[i].lng()] 
    }
    route.waypoints = final_waypoints;
}

我最初可以通过在'setupPlaceChangedListener'中调用我自己的函数来获取我需要的信息,该函数从DirectionsRenderer对象中读取信息并将其保存在变量中。但是,我想允许用户拖动显示的路线,允许他们更改确切的路线(不一定是开始和目的地)。

最初我希望我可以在发生更改时触发某些事件来重新运行我的功能。 “dragend”功能仅在拖动地图时有效,并且只有在拖动包含新航点时才会执行任何操作。

有没有办法做到这一点?我这样滥用Google Maps API吗?有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

来自Draggable Directions的文档:

  

由于可拖动路线被修改并呈现在客户端,您可能希望监控并处理DirectionsRenderer上的directions_changed事件,以便在用户修改显示的路线时收到通知。