web-dev-qa-db-fra.com

L'API Google Maps v3 supprime tous les polylignes

Peu de fond. J'ai une configuration de navigation car lorsque vous cliquez sur un élément de navigation, cela crée markers sur la carte. Si vous cliquez sur un autre élément de navigation, il supprime le précédent markers et en configure de nouveaux.

Eh bien maintenant, je travaille avec polylines et j'essaie de créer le même concept ici avec le polylines, mais j'ai des difficultés. Voici ce que j'ai:

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

Configurer mes points.

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

Configurer mes polylignes.

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

Initialisez la carte avec des lignes.

    polyline.setMap(map);

Tout fonctionne bien. Les lignes sont créées et apparaissent entre mes marqueurs. Permet maintenant de les supprimer (ou pas ...)

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

removeLines () est appelée au début de la fonction pour les effacer, puis de nouvelles sont configurées. Cela efface en effet mes points dans le tableau de points, mais sur la carte elle-même, le polylines apparaît toujours et ne disparaît pas comme mes marqueurs.

Ce qui donne?!

20
Romes

Vous devez faire polyline.setMap(null), qui supprimera la ligne de la carte. Documentation .

37
friism

la polyligne n'est qu'un tableau d'objets LatLng, et non des polylignes individuelles. Je pense que vous avez probablement besoin d'un tableau séparé pour les polylignes, que vous pouvez ensuite boucler pour les supprimer toutes. Créez une ligne de tableau global.

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

Vous placez maintenant tous les objets de polyligne dans une ligne de tableau. Vous pouvez le rendre invisible ou le supprimer de la carte en le bouclant comme ceci:

for (i=0; i<line.length; i++) 
{                           
  line[i].setMap(null); //or line[i].setVisible(false);
}
15
Aravind Asok