15

Poco de fondo. Tengo una configuración de navegación para cuando hace clic en un elemento de navegación determinado, crea markers en el mapa. Si hace clic en un elemento de navegación diferente, elimina el markers anterior y configura otros nuevos.Google Maps API v3 eliminar todas las polilíneas

Bueno, ahora estoy trabajando con polylines y tratando de crear el mismo concepto aquí con el polylines, sin embargo, estoy teniendo un momento difícil. Esto es lo que tengo:

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

Configure mis puntos.

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

Configurar mis polilíneas.

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

Inicialice el mapa con líneas.

polyline.setMap(map); 

Todo funciona bien. Las líneas se crean y se muestran entre mis marcadores. Ahora vamos a quitar (o no ...)

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

removeLines() se está llamando al comienzo de la función para eliminarlas, a continuación, los nuevos son de configuración. Esto, de hecho, borra mis puntos en la matriz de puntos, sin embargo, en el mapa en sí, el polylines todavía aparece y no desaparece como lo hacen mis marcadores.

¿Qué da ?!

Respuesta

30

Tienes que hacer polyline.setMap(null), que eliminará la línea del mapa. Documentation.

+2

Wow .. yo estaba haciendo esto antes, sin embargo yo estaba haciendo un bucle en la matriz de puntos y haciendo puntos [i] .setMap (nulo); Obviamente, esto necesita estar en la polilínea y no en la matriz de puntos ... DUH. +1 gracias por ayudarme a darme cuenta de que :) – Romes

12

polyline es solo una matriz de objetos LatLng, no polilíneas individuales. Creo que probablemente necesite una matriz separada para las polilíneas, que luego puede recorrer para eliminarlas todas. Crea una línea de matriz global.

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

Ahora está empujando todos los objetos de la polilínea en una línea de matriz. Puede hacerlo invisible o eliminarlo del mapa al enrollarlo como esto:

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

esa línea refrescará ejemplo de su GoogleMap

+1

TypeError: map.clear no es una función – johnlowvale

+0

¡Funciona muy bien para Android! –

+0

el método clear() simplemente no existe para Google map object! –

Cuestiones relacionadas