A API JS do ArcGIS Server contém uma nova classe FeatureTable , que mostra a tabela de atributos correspondente a um FeatureLayer. Existe uma opção syncSelection que:
Permite uma interação entre o mapa e a tabela de recursos. Definir essa propriedade como true permite a seleção de um recurso em um mapa clicando na linha da tabela e a seleção da linha de uma tabela clicando em um recurso no mapa
No entanto, isso não parece honrar um conjunto de seleção feito programaticamente contra a camada.
Tomando a amostra em https://developers.arcgis.com/javascript/3/sandbox/sandbox.html?sample=featuretable , se eu aplicar uma seleção ao FeatureLayer, isso não será refletido na 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)
Isso aplica corretamente a seleção à camada de feição (observe que o mapa contém apenas um ponto), mas não à tabela de feições (lista todos os 1146 pontos com 0 selecionado):
Existe uma maneira de atualizar a tabela de recursos para refletir o conjunto de seleção?
fonte
Respostas:
A partir das 3.16 e posteriores, a implementação desse
SyncSelection
booleano é um pouco diferente do que você descreveu:Então, eu sei que é uma dor real, mas acredito que você precisa percorrer os recursos selecionados das camadas do mapa e selecioná-los novamente chamando o evento de clique de seleção neles (programaticamente).
fonte
Esta é a minha solução para visualizar apenas o que é visível no mapa (na visualização :)
...
fonte
Conecte-se ao
selection-complete
evento, usegetSelectedFeatures()
, mapeie o resultado para uma matriz de IDs e passe-o para aFeatureTable
viaselectRows
. Em seguida, conecte-selectFeatures
se aoclick
evento e pronto.Como uma ideia aproximada:
fonte