如何查询MapImageLayer的数据? ArcGIs for android 100.x

问题描述 投票:0回答:1

我希望能够从 MapImageLayer 查询数据 但是我好像找不到相关的教程和API

FeatureLayer有这样一个方法

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

然后获取图形(高亮)和属性

那么怎么做。

在 javascript 中,我使用子层。 creatureLayer 实现目标 但是android中没有这样的方法。感谢您的观看和回答

我尝试使用 MapImageLayer.getTables()

从中获取 ServiceFeatureTable 以使用 queryFeaturesAsync()

但是 getTables().size=0

arcgis arcgis-android-api
1个回答
0
投票

我还是不能直接用MapImageLayer查询 但是使用sublayer的url创建一个ServiceFeatureTable来查询 目前可以查询相关数据

MapImageLayer 是

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

ServiceFeatureTable 是

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

得到一些桌子后

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();
        }
    });
}

值得提醒的是,使用setSpatialRelationship时,参数最好设置为INTERSECTS 目前我还在尝试把获取到的特征显示在地图上,使用高亮的方式 还是期待有人的回答

© www.soinside.com 2019 - 2024. All rights reserved.