API Карт Google v3 удаляет все полилинии

Маленький фон. У меня есть настройка навигации, когда вы нажимаете на определенный элемент навигации, он создает на карте 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 все еще появляется и не исчезает, как это делают мои маркеры.

Что дает?!

Ответы

Ответ 1

Вы должны сделать polyline.setMap(null), который удалит строку с карты. Documentation.

Ответ 2

полилиния - это всего лишь массив объектов 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);
}

Ответ 3

mMap.clear()

эта строка обновит ваш экземпляр GoogleMap