15

Poco sfondo. Ho una configurazione di navigazione per quando fai clic su un determinato elemento di navigazione, crea markers sulla mappa. Se fai clic su un elemento di navigazione diverso, rimuove il precedente markers e ne configura di nuovi.API v3 di Google Maps rimuovi tutte le polilinee

Bene ora sto lavorando con polylines e sto provando a creare lo stesso concetto qui con lo polylines, tuttavia sto avendo un momento difficile. Ecco cosa ho:

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

Imposta i miei punti.

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); 

Imposta le mie polilinee.

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

Inizializzare la mappa con le linee.

polyline.setMap(map); 

Tutto funziona bene. Le linee sono create e appaiono tra i miei marcatori. Ora lascia rimuoverli (o no ...)

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

removeLines() viene chiamato all'inizio della funzione per cancellare loro, allora quelli nuovi sono installati. Questo in effetti cancella i miei punti nell'array dei punti, tuttavia sulla mappa stessa il polylines appare ancora e non scompare come fanno i miei marcatori.

Cosa dà ?!

risposta

30

Devi fare polyline.setMap(null), che rimuoverà la linea dalla mappa. Documentation.

+2

Wow .. che facevo prima, però stavo facendo un ciclo sulla matrice punti e facendo punti [i] .setMap (null); Ovviamente questo deve essere sulla polilinea e non sull'array dei punti ... DUH. +1 grazie per avermi aiutato a capire che :) – Romes

12

polilinea è solo una matrice di oggetti LatLng, non singole polilinee. Penso che tu abbia probabilmente bisogno di un array separato per le polilinee, che puoi quindi ripetere ciclicamente per rimuoverle tutte. Creare una linea di array globale.

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

Ora si stanno spostando tutti gli oggetti polilinea in una linea di matrice. Si può rendere invisibile o rimuoverlo dalla mappa da loop in questo modo:

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

quella linea si aggiorna un'istanza del GoogleMap

+1

TypeError: map.clear non è una funzione – johnlowvale

+0

Funziona alla grande per Android! –

+0

il metodo clear() semplicemente non esiste per l'oggetto mappa di Google! –