【问题标题】:Remove directions from google map api v3从 google map api v3 中删除路线
【发布时间】:2011-08-04 11:50:00
【问题描述】:

我有一个使用 API v3 的谷歌地图,它可以获取从一个位置到另一个位置的路线。该应用程序运行良好,但获取方向的窗口是地图上的叠加层。我想要它,所以当这个窗口关闭时,方向会从地图中移除,但其他标记仍然存在。

我尝试了以下方法:

$('#content .close').live('click', function() {
$('#content').hide();
directionDisplay = new google.maps.DirectionsRenderer();
directionDisplay.suppressMarkers = true;
directionDisplay.setMap(map);
return false;
});

这似乎按预期隐藏了窗口,但对于从地图中删除方向没有任何作用。

非常感谢任何帮助。

戴夫。

【问题讨论】:

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


【解决方案1】:

您可以将 DirectionsRenderer 的地图绑定更改为“null”以移除方向覆盖

directionDisplay.setMap(null);

【讨论】:

  • 类似地,如果您使用面板来显示路线,您可以通过 directionDisplay.setPanel(null); 来清除它
  • 如果我想用同一张地图显示另一组路线怎么办?我再次在渲染器上设置地图?必须有更好的方法来做到这一点!
【解决方案2】:

你可以试试这个,不要失去对地图的参考

directionDisplay.set('directions', null);

【讨论】:

  • 这是一个有用的补充,对我有帮助,因为我需要维护参考。谢谢!
  • 我觉得这应该被标记为答案。 Google 支持的 API 文档在初始化时将 DirectionsDistplay 对象绑定到地图和面板。因此,在使用页面事件操作路线时,清除路线内容似乎更有意义,而不是取消与地图和面板的连接。
  • 这是最好的答案:它允许在不重新初始化地图的情况下显示/隐藏方向。
【解决方案3】:

您还可以使用: directionsDisplay.setDirections({routes: []});

【讨论】:

    【解决方案4】:

    应该是这样的:

    directionDisplay.setMap(null);
    

    【讨论】:

    【解决方案5】:

    以上都不适合我,这是我需要的:

    // Clear past routes
        if (directionsDisplay != null) {
            directionsDisplay.setMap(null);
            directionsDisplay = null;
        }
    

    【讨论】:

    • 这与其他答案有何不同?
    • 天哪,这是很久以前的事了,但我想仅仅将“setMap”属性设为空是不够的,我还必须将它的父级设为空才能使其按要求工作。
    【解决方案6】:

    使用directionDisplay.setMap(null); 将删除整个方向渲染器覆盖,包括标记。如果您只想删除保留标记的路线,您可以在初始化后使用setOptionssuppressPolylines 更改 DirectionsRenderer 的选项设置

    directionsDisplay.setOptions({
        suppressPolylines: true
      });
    

    (另见我的另一个similar answer

    【讨论】:

    • 如果你抑制折线,那么它们将永远不会显示。这里问题的上下文不同
    猜你喜欢
    • 2018-08-25
    • 2011-02-25
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多