2011-03-08 29 views
26

Obtuve una pequeña aplicación que utiliza la función del servicio de dirección de Google Map. Está funcionando bien, puedo cambiar las rutas, pero tengo un pequeño problema, donde un usuario puede volver a una lista de marcadores después de rastrear una ruta.eliminar ruta con el mapa de google

No encuentro la forma de eliminar rutas con el mapa de google. Para marcadores los almaceno y hago setMap(null), no veo el camino aquí ...

Respuesta

28

si está usando DirectionsRenderer para mostrar las rutas, puede llamar también a setMap (null). De esta forma, eliminará la ruta mostrada.

Utilizando el código de ejemplo aquí http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

sólo llamar

directionsDisplay.setMap(null); 
+3

Si hace esto, solo regresa cuando intenta sobrescribir con otra ruta, por lo que obtiene las dos rutas que se muestran en el mapa. – ajbraus

+0

¡Eso no es verdad! Acabo de probar en un pequeño POC. Cuando ejecuta 'directionsDisplay.setDirections (directions)' y agrega el renderizador al mapa con 'directionsDisplay.setMap (map)' funciona correctamente. Solo muestra una ruta (el contenido de la variable 'directions'). Debe haber algún otro problema en su código. – Tomik

+2

Esto funciona para eliminar el objeto directionsDisplay de su mapa, pero si está reemplazando una ruta por otra simplemente agrega la reemplazada al mapa. – ajbraus

41

También es posible usar:

directionsDisplay.setDirections({routes: []}); 

De esta manera, se puede seguir usando una mapa con un procesador de todas las rutas

+2

Esta es una solución mejor para mí, porque si intenta obtener direcciones nuevamente, la primera solución arrojará un error JS. Sin embargo, hice 'directionsDisplay.setDirections ({routes: []});' – DemitryT

+1

Estoy de acuerdo, utilizando el literal es una mejor solución que el uso de la nueva palabra clave, he actualizado mi respuesta. – thomaux

+1

Esto no me permitió seguir usando el mismo mapa. Simplemente apila las rutas una encima de la otra en el mismo mapa. – ajbraus

4

Las otras respuestas no funcionaron para mí. He encontrado una solución a partir de this question

definir directionsDisplay a sólo 1 hora (fuera del click -handler)

1

tuve problema similar, he intentado con directionsDisplay.setMap(null); pero no funcionó.

El problema fue que el objeto directionsDisplay que creé se declaró localmente.

Lo cambié a global y cada vez que se llama a la función, utilizará el mismo objeto global directionsDisplay y le hará cambios. Esto eliminará definitivamente la ruta anterior que se muestra en el mismo objeto.

3

Ésta es la solución

// Clear past routes 
if (directionsDisplay != null) { 
    directionsDisplay.setMap(null); 
    directionsDisplay = null; 
} 
+0

Definitivamente la mejor respuesta, gracias! – SachaDee

0

conjunto strokeWeight: 0 entonces polilínea se esconderán

3

Dado que en cada llamada, nueva instancia de DirectionRenderer creado es por eso que cada nueva instancia no es consciente de la instancia anterior.

Mover

var directionsDisplay = new google.maps.DirectionsRenderer(); 

a lo global (en la parte superior, donde se han inicializado todas las demás variables globales.)

De esta manera, cada vez que se estaría utilizando solo caso de DirectionRenderer.

Cuestiones relacionadas