0

I want to be able to query data from MapImageLayer But I can't seem to find relevant tutorials and APIs

FeatureLayer has such a method

public ListenableFuture<FeatureQueryResult> selectFeaturesAsync​(QueryParameters query, FeatureLayer.SelectionMode selectionMode)

then get graphic(highlight) and attributes

so how to do it.

In javascript, I use sublayer. creatureLayer to achieve the goal But there is no such method in android. Thank you for your watching and answer

I try to use MapImageLayer.getTables()

Get ServiceFeatureTable from it to use queryFeaturesAsync()

But getTables().size=0

1 Answers1

0

I still can't use MapImageLayer to query directly But use the url of the sublayer to create a ServiceFeatureTable to query At present, relevant data can be queried

MapImageLayer is http://host/arcgis/rest/services/test/MapServer

ServiceFeatureTable is http://host/arcgis/rest/services/test/MapServer/id

after get some Tables

QueryParameters parameters = new QueryParameters();
parameters.setGeometry(selectBuffer.getGeometry());
parameters.setOutSpatialReference(SpatialReferences.getWebMercator());
parameters.setReturnGeometry(true);
parameters.setSpatialRelationship(QueryParameters.SpatialRelationship.INTERSECTS);
for(ServiceFeatureTable table : layerList){    ListenableFuture<FeatureQueryResult> listenableFuture = table.queryFeaturesAsync(parameters);
    listenableFuture.addDoneListener(() -> {
        try {
            FeatureQueryResult queryResult = listenableFuture.get();
            for(Feature feature:queryResult){
                //TODO
            }
        } catch (ExecutionException | InterruptedException e) {
            e.printStackTrace();
        }
    });
}

It is worth reminding that when using setSpatialRelationship, it is better to set the parameter to INTERSECTS At present, I am still trying to display the acquired features on the map, using the highlighted method Still looking forward to someone's answer