【问题标题】:Google Maps v3 API: How to update markers' location when changing route by dragging?Google Maps v3 API:通过拖动更改路线时如何更新标记的位置?
【发布时间】:2014-03-23 21:10:46
【问题描述】:

根据GoogleMapsv3APIExample 的示例,我正在尝试以下方法:

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

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

  • 在第 37-39 行,我为 directions_changed 事件添加了一个侦听器
  • recalculateMarkers 中,我将所有标记设置为 null 并将它们再次放置在地图上
  • directionsDisplay.directions 似乎仍然包含旧路线(拖动前)
  • 我得到的结果是这样的:

有什么建议吗?

谢谢!

【问题讨论】:

    标签: javascript google-maps-api-3


    【解决方案1】:

    问题出在directions_changed 事件中:当呈现的方向发生变化时触发此事件,无论是设置了新的 DirectionsResult 还是当用户完成将更改拖动到方向路径时。 p>

    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

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2011-09-05
      • 2010-12-28
      • 2015-10-27
      • 2013-03-03
      • 2013-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多