L'API ArcGIS Server JS contient une nouvelle classe FeatureTable , qui montre la table d'attributs correspondant à une FeatureLayer. Il existe une option syncSelection qui:
Permet une interaction entre la carte et la table d'entités. La définition de cette propriété sur true permet de sélectionner une entité sur une carte en cliquant sur la ligne dans le tableau et de sélectionner la ligne d'une table en cliquant sur une entité sur la carte
Cependant, cela ne semble pas honorer un jeu de sélection effectué par programmation contre le calque.
En prenant l'exemple sur https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=featuretable , si j'applique une sélection au FeatureLayer, elle ne sera pas reflétée dans le FeatureTable:
// Create the feature layer
myFeatureLayer = new FeatureLayer("https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/Warren_College_Trees/FeatureServer/0", {
mode: FeatureLayer.MODE_SELECTION,
visible: true,
outFields: ["*"],
id: "fLayer"
});
var myQuery = new Query();
myQuery.where = "Spp_Code ='SABA'";
myFeatureLayer.selectFeatures(myQuery,FeatureLayer.SELECTION_NEW)
Cela applique correctement la sélection à la couche d'entités (notez que la carte ne contient qu'un seul point), mais pas à la table d'entités (elle répertorie tous les 1146 points avec 0 sélectionné):
Existe-t-il un moyen d'actualiser la table d'entités pour refléter l'ensemble de sélection?
la source
Réponses:
À partir de la version 3.16 et ultérieure, l'implémentation de ce
SyncSelection
booléen est légèrement différente de celle que vous avez décrite:Donc, je sais que c'est une douleur royale, mais je crois que vous devez parcourir les entités sélectionnées des couches de carte et les sélectionner ENCORE en appelant l'événement de clic de sélection sur elles (par programme).
la source
Ceci est ma solution pour visualiser uniquement ce qu'il est visible sur la carte (en vue :)
...
la source
Accrochez-vous à l'
selection-complete
événement, utilisezgetSelectedFeatures()
, mappez le résultat à un tableau d'ID et transmettez-le auFeatureTable
viaselectRows
. Accrochez-vous ensuiteselectFeatures
à l'click
événement et vous avez terminé.Comme une idée approximative:
la source