J'utilise l'API Heatmaplayer API https://developers.google.com / Cartes / Documentation / JavaScript / Calques # JsheatMaps
Je génère la chaleur comme ceci: P>
heatmap = new google.maps.visualization.HeatmapLayer({ data: heatmapData, radius: 50 }); heatmap.setMap(google_map);
5 Réponses :
Les documents suggèrent que vous pouvez supprimer une couche en appelant dans Votre jsfiddle Vous déclarez votre Voici votre jsfiddle mise à jour p> heatmap.setmap (null) code> p>
HeatMap code> variable dans la portée de chaque
Cliquez sur CODE> Event. Pour faire fonctionner votre code, j'ai déplacé la variable code> Heatmap CODE> pour exister globalement, puis vérifiées pour vous assurer qu'un nouveau
HeatMap code> n'a pas écrasé à un existant. P>
Merci, j'ai mis à jour ma question avec une démo, sa ne fonctionne pas correctement
Jetez un coup d'oeil à la documentation ici Google Jsheatmaps .
Consultez ce exemple . Vous pouvez afficher la logique pour le bouton bascule. P>
heatmap.setMap(null)
Voir ma question mise à jour avec un exemple de code, sa ne fonctionne pas d'une manière ou d'une autre
Utiliser Afin de supprimer les données que vous devez procéder comme suit. P>
J'espère que cela vous aidera. M'a pris un certain temps pour le comprendre, mais cela a certainement travaillé. P> heatmap.setmap (null) code> cachera uniquement votre couche de chaleur.
Si vous tapez ultérieurement
heatmap.setmap (carte) code>, vous verrez votre couche de chaleur à nouveau, de sorte que cela ne soit pas vraiment supprimé. P>
heatmap.setmap (null) code> // Cela masquera la couche de chaleur p>
heatmap.getdata (). J = []; code> // C'est ce qui définit réellement la matrice de coordonnées à zéro. P>
heatmap.setmap (carte) code> // Maintenant, lorsque vous basculez sur la carte, The Heatlayer est parti et vous pouvez en créer un nouveau. P>
Ne faites pas référence à un nom de propriété interne comme .j Comme Google modifie régulièrement ces lettres de référence dans leur système de minécution pour de nouvelles versions. Au lieu de cela, do Heatmap.setdata ([])
Pour quelqu'un d'autre à la recherche d'une solution des années après le poste d'origine, j'ai trouvé les suivants travaillés. Commencez par déclarer la variable en tant que global qui tiendra la chaleur MVCOBJECT.
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 });
Vous devez déclarer le HeatMap CODE> globalement, puis lorsque vous souhaitez afficher de nouvelles données sur la chaleur, faites ceci:
let heatmap;
setData(heatmapData) {
if (heatmap) {
// Clear heatmap data
heatmap.setMap(null);
heatmap.setData([]);
}
heatmap = new google.maps.visualization.HeatmapLayer({
data: heatmapData
});
heatmap.setMap(this.map);
}