15

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

Ну, теперь я работаю с 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 все еще появляются и не исчезают, как мои маркеры.

Что дает ?!

ответ

30

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

+2

Вау .. Я делал это раньше, но я делал цикл по массиву точек и выполнение точек [i] .setMap (null); Очевидно, что это должно быть на полилинии, а не в массиве точек ... DUH. +1 спасибо за то, что помогли мне понять, что :) – Romes

12

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

, что линия будет обновить экземпляр вашего GoogleMap в

+1

ТипError: map.clear не является функцией – johnlowvale

+0

Отлично подходит для Android! –

+0

метод clear() просто не существует для объекта карты Google! –