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

Why can't I delete directions by calling setMap(null)?

本文关键字:null 删除 方向 setMap 不能 调用 为什么      更新时间:2023-09-26

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

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,方向也不会被移除。

只有当我有多个方向时才会出现这个错误。

你知道哪里出了问题吗?

是的,你有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);
}