为什么我不能通过调用setMap(null)来删除方向?

时间:2016-09-29 08:29:12

标签: javascript google-maps-api-3

我必须像这样画出多个方向:

A-> B B-> C C-> D

在同一张地图上。

这很好用,但当我尝试删除B-> C时,方向仍在地图上。

为了绘制方向,我这样做:

      directionsDisplay = new google.maps.DirectionsRenderer({
        suppressMarkers: true,
        polylineOptions: polylineOptionsActual,
        preserveViewport: true
      });
      createItinerary : function(eventA, eventB, transportationMode, counter)
      {
            if (eventDate.getDate() == currentDay.getDate())
              directionsDisplay.setDirections(result);
      }

然后,每当我删除一条路时,我都会打电话

if (directionsDisplay != null)
{
  directionsDisplay.setMap(null);
  directionsDisplay = null;
}

我可以随时调用它,即使directionDisplay为null,也不会删除方向。

当我有多个方向时,我只有这个错误。

任何可能出错的想法?

1 个答案:

答案 0 :(得分:1)

是的,你有一个循环中的directionsDisplay = new google.maps.DirectionsRenderer ....你必须做的是将变量存储在一个数组中。

示例(我假设一些for循环):

var directionsDisplayArray = [];
for(var i in data) {
  directionsDisplay = new google.maps.DirectionsRenderer({
    suppressMarkers: true,
    polylineOptions: polylineOptionsActual,
    preserveViewport: true
  });
  directionsDisplayArray.push(directionsDisplay);
}

然后您可以循环删除这些显示

for(var i in directionsDisplayArray) {
  directionsDisplayArray[i].setMap(null);
}