Supprimer HeatmapLayer de google maps

J’utilise l’API HeatmapLayer https://developers.google.com/maps/documentation/javascript/layers#JSHeatMaps.

Je génère la carte thermique comme ceci:

heatmap = new google.maps.visualization.HeatmapLayer({ data: heatmapData, radius: 50 }); heatmap.setMap(google_map); 

Lorsque je veux afficher une autre carte thermique en utilisant la même fonction que ci-dessus (j’utilise ajax et j’ai de nouveaux marqueurs à afficher, je dois donc modifier la carte thermique aussi), la couche de carte thermique rest sur la carte et, dans ce cas, i avoir 2 cartes thermiques qui se chevauchent sur ma carte. Comment puis-je supprimer le heatmaplayer actuel en premier?

Voici mon code de démonstration, si vous cliquez sur le lien situé en dessous de la carte, la carte thermique est ajoutée. Si vous cliquez à nouveau, vous devez la supprimer, mais vous devez la dupliquer encore et encore:

http://jsfiddle.net/LpL3P/

Les docs suggèrent que vous pouvez supprimer un calque en appelant heatmap.setMap(null)

Mettre à jour

Dans votre jsfiddle, vous déclariez votre variable heatmap dans le cadre de chaque événement de click . Pour que votre code fonctionne, j’ai déplacé la variable heatmap afin qu’elle existe globalement, puis j’ai vérifié que toute nouvelle heatmap ne heatmap pas une carte existante.

Voici votre jsfiddle mis à jour

Pour ceux qui recherchaient une solution des années après le post initial, j’ai trouvé que ce qui suit fonctionnait. Commencez par déclarer la variable en tant que variable globale contenant la heatmap MVCObject.

 var mvcObj; 

Ensuite, dans la fonction que vous utilisez pour append la carte thermique

 if( typeof( mvcObj )=='object' ) mvcObj.clear(); /* locations is an array of latlngs */ mvcObj = new google.maps.MVCArray( locations ); /* this.map is a reference to the map object */ var heatmap = new google.maps.visualization.HeatmapLayer({ data: mvcObj, map: this.map }); 

Consultez la documentation ici google JSHeatMaps .

Découvrez cet exemple . Vous pouvez afficher la logique du bouton bascule.

 heatmap.setMap(null) 

L’utilisation de heatmap.setMap(null) ne heatmap.setMap(null) que votre calque heatmap. Si vous tapez ultérieurement heatmap.setMap(map) , vous verrez à nouveau votre calque heatmap, de sorte qu’il ne soit pas vraiment supprimé.

Afin de supprimer les données, vous devez suivre les étapes suivantes.

heatmap.setMap(null) // Ceci cachera le calque heatmap

heatmap.getData().j = []; // C’est ce qui définit réellement le tableau de coordonnées à zéro.

heatmap.setMap(map) // Maintenant, lorsque vous revenez sur la carte, la couche de chaleur est partie et vous pouvez en créer une nouvelle.

J’espère que cela t’aides. Il m’a fallu un peu de temps pour le comprendre, mais cela a définitivement fonctionné.