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 ...
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);
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.
É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.
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
-)
C'est le correctif
// Clear past routes
if (directionsDisplay != null) {
directionsDisplay.setMap(null);
directionsDisplay = null;
}
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.
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(...);
}
set strokeWeight: 0 alors la polyligne se cachera