Die ArcGIS Server JS-API enthält eine neue FeatureTable- Klasse, die die Attributtabelle anzeigt , die einem FeatureLayer entspricht. Es gibt eine Option syncSelection, die:
Aktiviert eine Interaktion zwischen der Karte und der Feature-Tabelle. Wenn Sie diese Eigenschaft auf true setzen, können Sie ein Feature auf einer Karte auswählen, indem Sie auf die Zeile in der Tabelle klicken, und die Zeile einer Tabelle auswählen, indem Sie auf ein Feature auf der Karte klicken
Dies scheint jedoch einen Auswahlsatz nicht zu berücksichtigen, der programmgesteuert für die Ebene erstellt wurde.
Wenn ich das Beispiel unter https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=featuretable nehme, wird es in der FeatureTable nicht wiedergegeben, wenn ich eine Auswahl auf den FeatureLayer anwende:
// 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)
Dadurch wird die Auswahl korrekt auf den Feature-Layer angewendet (beachten Sie, dass die Karte nur einen Punkt enthält), jedoch nicht auf die Feature-Tabelle (sie listet alle 1146 Punkte mit 0 ausgewählt auf):
Gibt es eine Möglichkeit, die Feature-Tabelle zu aktualisieren, um den Auswahlsatz widerzuspiegeln?
quelle
Antworten:
Ab 3.16 und später unterscheidet sich die Implementierung dieses
SyncSelection
Booleschen Werts geringfügig von der von Ihnen beschriebenen:Ich weiß also, dass es ein königlicher Schmerz ist, aber ich glaube, Sie müssen die ausgewählten Features der Kartenebenen durchlaufen und sie WIEDER auswählen, indem Sie das Auswahlklick-Ereignis aufrufen (programmgesteuert).
quelle
Dies ist meine Lösung, um nur das anzuzeigen, was auf der Karte sichtbar ist (in Ansicht :)
...
quelle
Verknüpfen Sie das
selection-complete
Ereignis, verwenden SiegetSelectedFeatures()
, ordnen Sie das Ergebnis einem Array von IDs zu und übergeben Sie es an dieFeatureTable
ViaselectRows
. Dann haken Sie sichselectFeatures
in dieclick
Veranstaltung ein und Sie sind fertig.Als grobe Idee:
quelle