2010-12-30 11 views
9

Quindi ho controllato le domande precedenti su questo argomento, che riguardano tutte V2, il che non è di alcun aiuto.Google Maps Polyline - Come lo rimuovo?

Così, ho creare due marcatori, salvarli in un array come marcatori [ "a"] e marcatori [ "da"]

quindi aggiungerli alla presente

function route(){ 
     for(var key in markers) { 
      flightPlanCoordinates.push(markers[key].position); 
     } 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
    }); 
    flightPath.setMap(map); 
} 

brillante. Ma. La prossima volta che lo uso (con nuovi marker nell'array) aggiunge solo una polilinea lì senza rimuovere quella precedente. Mi sembra di aver provato tutto, rimuovendo dal primo array, il flightPath, setMap (null) e così via.

Qual è il modo corretto di rimuovere la riga precedente prima di disegnarne una nuova?

EDIT: risolto Soluzione

function route(){ 
    var flightPlanCoordinates = []; 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) { 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map); 
    } 
} 

Motivo: flightPlanCoordinates deve essere inizializzato nell'ambito, questo resetta l'array ogni volta che viene usato, pulizia correttamente. (Grazie anche per l'ingresso di seguito per rendere il codice un po 'più bello.

+0

Puoi condividere un collegamento di funzionamento di questo progetto? Sto facendo qualcosa di simile per una compagnia aerea locale. – andufo

risposta

3

Non vedo var prima flightPath = new..., quindi presumo flightPath è una variabile globale.

function route(){ 
    //flightPath.setMap(null); Doesnt't work!? 
    for(var key in markers) { 
     flightPlanCoordinates.push(markers[key].position); 
    } 
    if(flightPath) {//If flightPath is already defined (already a polyline) 
     flightPath.setPath(flightPlanCoordinates); 
    } else { 
     flightPath = new google.maps.Polyline({ 
      path: flightPlanCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 
     flightPath.setMap(map);//It's not necessary to setMap every time 
    } 

} 
+0

flightPath è davvero nel campo di applicazione. Tuttavia, setMap (null) non * funziona * – Mantar

1

function traffic(map){ 
// polyline 
this.path=null; 
this.map = google.maps.Map(ele, opt); 
} 
traffic.prototype._draw = function() 
{ 
    //create new polyline 
    var path = new google.maps.Polyline({ 
     path: this.get('latlngArr'), 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
    //delete old 
    var prepath = this.path; 
    if(prepath){ 
     prepath.setMap(null); 
    } 
    //new polyline 
    path.setMap(this.map); 

    this.path = path; 
} 
7

Partendo dal presupposto che " mypolyline" è l'oggetto poligonale, si può anche provare:

mypolyline.setPath([]); 

in questo modo, si sta assumendo le coordinate dalla Polilinea, che in effetti lo rimuoverò dalla mappa.

1

flightPath è 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 = []; 
flightPath = new google.maps.Polyline({ 
     path: flightPlanCoordinates, 
     strokeColor: "#FF0000", 
     strokeOpacity: 1.0, 
     strokeWeight: 2 
    }); 
line.push(flightPath); 

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

set strokeWeight: 0 allora polilinea nasconderà

Problemi correlati