Suite

Suppression des graphiques de l'API Javascript Esri

Suppression des graphiques de l'API Javascript Esri


Salut les gars, nouveau sur ESRI et l'API javascript. J'ai la fonction suivante qui, lorsque vous cliquez sur la carte, ajoute un graphique circulaire à la carte à ces emplacements géographiques lat et long. Mais ce qui est fatiguant à accomplir, c'est que lorsque vous cliquez sur la carte, le cercle est ajouté et lorsque vous cliquez à nouveau sur la carte, les emplacements du cercle sont mis à jour. Toute aide est la bienvenue.

function update_circle(first, second) { //ajouter un cercle à la carte pour l'emplacement actuel var gl = new GraphicsLayer(); var p = nouveau Point(premier, deuxième); var s = new SimpleMarkerSymbol().setSize(60); var g = nouveau graphique(p, s); map.removeLayer(gl); gl.add(g); map.addLayer(gl); }

Vous créez un nouveau calque graphique videglmais quand tu appelles ensuitemap.removeLayer(gl)cela ne fera rien car cette nouvelle couche vide n'a pas encore été ajoutée à la carte. Je suppose que vous vouliez supprimer la couche graphique précédemment créée. Vous pouvez le faire en donnant à la couche graphique un identifiant spécifique lorsque vous la créez, puis en récupérant cette couche existante dans la collection de couches de la carte. Par exemple, créez le calque graphique comme ceci :

var gl = new GraphicsLayer({ id: "circles" });

Vous pouvez maintenant récupérer ultérieurement une référence à cette couche en utilisant :

var gl = map.getLayer("cercles");

Vous pouvez donc utiliser ce qui précède dans votreupdate_circlefonction pour récupérer et supprimer l'ancienne couche graphique qui devrait fonctionner. Cependant, une autre option, plutôt que de supprimer et de recréer un calque à chaque fois, serait de simplement supprimer l'ancien graphique du calque et d'en ajouter un nouveau, en laissant le même calque utilisé :

function update_circle(first, second) { // Obtenir le calque, le créer s'il n'existe pas encore var gl = map.getLayer("circles"); if (!gl) { gl = new GraphicsLayer({ id: "circles" }); map.addLayer(gl); } // Efface la couche des anciens graphiques gl.clear(); //ajout d'un cercle à la carte pour l'emplacement actuel var p = new Point(first, second); var s = new SimpleMarkerSymbol().setSize(60); var g = nouveau graphique(p, s); gl.add(g); }

Vous pouvez même supprimer un seul graphique plutôt que d'effacer tout le calque si vous souhaitez utiliser le calque pour plusieurs graphiques (c'est-à-dire que vous pouvez simplement supprimer le graphique en cercle). Consultez l'API pour obtenir de l'aide :

https://developers.arcgis.com/javascript/jsapi/graphicslayer-amd.html


Voir la vidéo: SMAART - 58. ELIMINACIÓN DE ACOPLES en el sistema de MONITORES - ECUALIZADOR GRÁFICO vs PARAMÉTRICO