9
votes

Supprimer Heatmaplayer de Google Maps

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


0 commentaires

5 Réponses :


12
votes

Les documents suggèrent que vous pouvez supprimer une couche en appelant heatmap.setmap (null)

mise à jour

dans Votre jsfiddle Vous déclarez votre HeatMap variable dans la portée de chaque Cliquez sur Event. Pour faire fonctionner votre code, j'ai déplacé la variable Heatmap pour exister globalement, puis vérifiées pour vous assurer qu'un nouveau HeatMap n'a pas écrasé à un existant.

Voici votre jsfiddle mise à jour


1 commentaires

Merci, j'ai mis à jour ma question avec une démo, sa ne fonctionne pas correctement



1
votes

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)


1 commentaires

Voir ma question mise à jour avec un exemple de code, sa ne fonctionne pas d'une manière ou d'une autre



2
votes

Utiliser heatmap.setmap (null) cachera uniquement votre couche de chaleur. Si vous tapez ultérieurement heatmap.setmap (carte) , vous verrez votre couche de chaleur à nouveau, de sorte que cela ne soit pas vraiment supprimé.

Afin de supprimer les données que vous devez procéder comme suit.

heatmap.setmap (null) // Cela masquera la couche de chaleur

heatmap.getdata (). J = []; // C'est ce qui définit réellement la matrice de coordonnées à zéro.

heatmap.setmap (carte) // Maintenant, lorsque vous basculez sur la carte, The Heatlayer est parti et vous pouvez en créer un nouveau.

J'espère que cela vous aidera. M'a pris un certain temps pour le comprendre, mais cela a certainement travaillé.


1 commentaires

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 ([])



5
votes

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


0 commentaires

2
votes

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


0 commentaires