web-dev-qa-db-fra.com

supprimer l'itinéraire avec google map

J'ai une petite application qui utilise la fonction Direction Service de Google Map. Cela fonctionne bien, je peux changer de route, mais j'ai un petit problème, où un utilisateur pourrait revenir à une liste de marqueurs après avoir tracé une route.

Je ne trouve aucun moyen de supprimer des itinéraires avec google map. Pour les marqueurs je les stocke et fais setMap(null), ne vois pas de chemin ici ...

29
Cedric Dugas

si vous utilisez DirectionsRenderer pour afficher les itinéraires, vous pouvez également appeler setMap (null) dessus. De cette façon, vous supprimez l'itinéraire affiché.

En utilisant l'exemple de code ici http://code.google.com/apis/maps/documentation/javascript/examples/directions-simple.html

il suffit d'appeler

directionsDisplay.setMap(null);
32
Tomik

Vous pouvez également utiliser:

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

De cette façon, vous pouvez continuer à utiliser une carte avec un moteur de rendu pour tous les itinéraires.

49
thomaux

Étant donné qu'à chaque appel, une nouvelle instance de DirectionRenderer créée, c'est pourquoi chaque nouvelle instance n'est pas au courant de l'instance précédente.

Bouge toi

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

au global (en haut où toutes les autres variables globales ont été initialisées.)

Ce faisant, chaque fois que vous utiliserez une seule instance de DirectionRenderer.

6
shubhamkes

Les autres réponses n'ont pas fonctionné pour moi. J'ai trouvé une solution de cette question

définir directionsDisplay une seule fois (en dehors du gestionnaire click-)

5
joshuahedlund

C'est le correctif

// Clear past routes
if (directionsDisplay != null) {
    directionsDisplay.setMap(null);
    directionsDisplay = null;
}
5
Friendly Code

J'ai eu un problème similaire, j'ai essayé avec directionsDisplay.setMap(null); mais cela n'a pas fonctionné.

Le problème était que l'objet directionsDisplay que j'ai créé a été déclaré localement.

Je l'ai changé en global et chaque fois que la fonction est appelée, elle utilisera le même objet global directionsDisplay et y apportera des modifications. Cela supprimera définitivement l'itinéraire précédent affiché sur le même objet.

1
safian syed

Il est important - du moins c'était dans mon cas - que bien que directionsDisplay puisse être déclaré globalement, l'instance doit être créée après l'objet map sinon elle a donné une erreur de référence

    var map;
    var directionsDisplay;

    function initMap() { 

        map = new google.maps.Map(...);

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

     }

     function yourFunction() {

        // your code

        directionsDisplay.addListener(...);

     }
0
Szél Lajos

set strokeWeight: 0 alors la polyligne se cachera

0
Rajkumar