从谷歌地图API V3中删除方向

41
我有一个使用API v3的谷歌地图,可以从一个位置到另一个位置获取方向。这个应用程序非常好用,但显示方向的窗口是覆盖在地图上的。我希望当关闭此窗口时,方向被从地图中删除,但其他标记仍然保留。
我尝试了以下方法:
$('#content .close').live('click', function() {
$('#content').hide();
directionDisplay = new google.maps.DirectionsRenderer();
directionDisplay.suppressMarkers = true;
directionDisplay.setMap(map);
return false;
});

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

非常感谢任何帮助。

Dave。


问题已经解决!首先搜索,然后再提问。 - lesyk
尝试使用以下代码:directionsDisplay.setDirections({routes: []}); 该代码可用于删除Google地图上的路线。 - Pr Shadoko
可能是删除谷歌地图路线的重复问题。 - Keith
6个回答

61
您可以将DirectionsRenderer的地图绑定更改为“null”以删除方向覆盖层。
directionDisplay.setMap(null);

4
同样地,如果您正在使用面板显示方向信息,可以通过执行 directionDisplay.setPanel(null); 来清除该面板。 - totallyNotLizards
如果我想使用同一张地图来显示另一组方向,该怎么办?我需要再次在渲染器上设置setMap吗?肯定有更好的方法来解决这个问题! - Aamir Khan

54
您可以尝试这样做,而不失去地图的引用。
directionDisplay.set('directions', null);

1
这是一个有用的补充,帮助我维护引用。谢谢! - David
1
我觉得这应该标记为答案。Google支持的API文档将directionsDisplay对象绑定到地图和面板上进行初始化。因此,在使用页面事件操纵方向时,清除方向内容似乎比解除与地图和面板的连接更有意义。 - Mark W Dickson
2
这是最好的答案:它允许在不重新初始化地图的情况下显示/隐藏方向。 - Vadim

9
你也可以使用:directionsDisplay.setDirections({routes: []});

1

应该这样写:

directionDisplay.setMap(null);

我在https://dev59.com/0XA75IYBdhLWcg3wfpKr上找到了它。 - B L Praveen

1

以上方法都对我没有用,这是我需要的:

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

这有什么不同于其他答案吗? - Clint
天啊,这是很久以前的事情了,但我想仅仅将“setMap”属性设置为空是不够的,我还必须将其父级也设置为空才能使其按照要求正常工作。 - Friendly Code

-2

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

directionsDisplay.setOptions({
    suppressPolylines: true
  });

(请参阅我的其他类似答案


如果你抑制多段线,它们将永远不会显示。这里问题的上下文是不同的。 - Jassi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接