使用谷歌地图删除路线

时间:2011-03-08 12:56:19

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

我有一个使用谷歌地图的方向服务功能的小应用程序。它运行良好,我可以改变路线,但我遇到一个小问题,用户可以在追踪路线后回到标记列表。

我找不到用谷歌地图删除路线的方法。对于标记我存储并执行setMap(null),在这里看不到方法......

8 个答案:

答案 0 :(得分:48)

你也可以使用:

directionsDisplay.setDirections({routes: []});

通过这种方式,您可以继续为所有路线使用一个带有一个渲染器的地图。

答案 1 :(得分:32)

如果您使用DirectionsRenderer显示路线,您也可以在其上调用setMap(null)。这样就可以删除显示的路径。

在此处使用示例代码 http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

只需致电

directionsDisplay.setMap(null);

答案 2 :(得分:6)

因为在每次调用时,DirectionRenderer的新实例都会创建这就是为什么每个新实例都不知道之前的实例。

移动

var directionsDisplay = new google.maps.DirectionsRenderer();

到全局(在所有其他全局变量已初始化的顶部。)

通过这样做,每次使用DirectionRenderer的单个实例。

答案 3 :(得分:5)

其他答案对我不起作用。我找到了this question

的解决方案

仅定义directionsDisplay一次(在click - 处理程序之外)

答案 4 :(得分:5)

这是修复

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

答案 5 :(得分:1)

我有类似的问题,我尝试使用send,但它没有用。

问题是我创建的directionsDisplay.setMap(null);对象是在本地声明的。

我将其更改为全局,每次调用该函数时,它将使用相同的全局directionsDisplay对象并对其进行更改。这肯定会删除同一对象上显示的先前路线。

答案 6 :(得分:0)

设置strokeWeight:0然后折线将隐藏

答案 7 :(得分:0)

重要的是-至少在我的情况下-directionsDisplay可以全局声明,但必须在map对象之后创建实例,否则会产生引用错误

    var map;
    var directionsDisplay;

    function initMap() { 

        map = new google.maps.Map(...);

        directionsDisplay = new google.maps.DirectionsRenderer(...);

     }

     function yourFunction() {

        // your code

        directionsDisplay.addListener(...);

     }