Google Maps API v3 удаляет все полилинии - PullRequest
18 голосов
/ 01 марта 2012

Маленький фон. У меня есть настройки навигации, когда вы нажимаете на определенный элемент навигации, он создает markers на карте. Если вы щелкнете по другому элементу навигации, он удалит предыдущий markers и настроит новые.

Что ж, сейчас я работаю с polylines и пытаюсь создать здесь ту же концепцию с polylines, однако мне трудно. Вот что у меня есть:

    // Global variable for array of lines
    var points= [];

Настройте мои очки.

    line1 = new google.maps.LatLng(line1Start, line1Finish);
    line2 = new google.maps.LatLng(line2Start, line2Finish);
    line3 = new google.maps.LatLng(line3Start,line3Finish);

    points.push(line1, line2, line3);

Настройте мои полилинии.

    var polyline = new google.maps.Polyline({
       path:points,
       strokeColor:"#FF0000",
       strokeOpacity:1.0,
       strokeWeight:2
    });

Инициализировать карту с помощью линий.

    polyline.setMap(map);

Все работает хорошо. Линии созданы и отображаются между моими маркерами. Теперь давайте удалим их (или нет ...)

    function removeLines() {
      if (points) {
           points.length = 0;
      }
      points = [];
    }

В начале функции вызывается removeLines (), чтобы очистить их, затем устанавливаются новые. Это действительно очищает мои точки в массиве точек, однако на самой карте polylines все еще отображается и не исчезает, как мои маркеры.

Что дает?!

Ответы [ 2 ]

35 голосов
/ 01 марта 2012

Вы должны сделать polyline.setMap(null), чтобы удалить линию с карты. Документация .

15 голосов
/ 09 мая 2013

полилиния - это просто массив объектов LatLng, а не отдельные полилинии.Я думаю, что вам, вероятно, нужен отдельный массив для полилиний, который вы можете затем зациклить, чтобы удалить их все.Создайте глобальную строку массива.

 var line = [];
 polyline = new google.maps.Polyline({
        path: points,
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });
 line.push(polyline);

Теперь вы помещаете все объекты полилинии в строку массива.Вы можете сделать его невидимым или удалить его с карты, зациклив его так:

for (i=0; i<line.length; i++) 
{                           
  line[i].setMap(null); //or line[i].setVisible(false);
}
...