javascript - 谷歌地图 v3 API : How to update markers' location when changing route by dragging?

标签 javascript google-maps-api-3

我正在根据 GoogleMapsv3APIExample 中的示例尝试以下操作:

  • 我有一条从 A 到 B 的路线,并带有一些标记: enter image description here
  • 我通过拖动“过渡航路点”(以白色圆圈显示)来修改路线
  • 我希望将标记更新为新路线

我改编了此 gist中的链接示例:

  • 在第 37-39 行,我为 directions_changed 事件添加了一个监听器
  • recalculateMarkers中,我将所有标记设置为空,并将它们重新放置在 map 上
  • 似乎directionsDisplay.directions仍然包含旧路线(拖动之前)
  • 我得到的结果是这样的:enter image description here

有什么建议吗?

谢谢!

最佳答案

问题出在 directions_changed 事件中:当渲染的方向发生变化时(设置新的 DirectionsResult 或用户完成将更改拖动到方向路径时),会触发此事件。

calcRoute() 完成时,会创建两组标记:一组来自 recalculateMarkers(),另一组来自 calcRoute()

必须将事件监听器移至 calcRoute() 并在路由成功时进行设置:

function calcRoute() {

    var request = {
        origin: 'Sydney, NSW',
        destination: 'Broken Hill, NSW',
        travelMode: google.maps.TravelMode.DRIVING
    };

    directionsService.route(request, function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(response);
            showSteps(response);

            google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
                console.log('directions_changed');
                recalculateMarkers();
            });
        }
    });
}

参见example at jsbin .

关于javascript - 谷歌地图 v3 API : How to update markers' location when changing route by dragging?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22590812/

相关文章:

google-maps - 谷歌地图 API : How to calculate the building surface area?

ios - Google Maps API-如何从坐标获取最近的地名,而忽略非特定结果

javascript - 如何让鼠标事件只作用于外层DIV?

javascript - jQuery 文件上传总是失败并显示 "File upload aborted"

javascript - 我可以使用JavaScript删除ASP.NET身份验证cookie(.ASPXAUTH)吗?

javascript - Angular 谷歌地图 api key 未通过

javascript - 如何从 DateTimePicker 检索以毫秒为单位的纪元值并将该值传递给 Google API Direction 请求?

google-maps-api-3 - 如何使用 Google Places API 获取特定类型的地点?

javascript - 如何通过 webpack 导入 bootstrap?

javascript - 回文检查器需要帮助