ArcGIS for Android FeatureLayer 查询图层所有要素

查询所有要素

ServiceFeatureTable table = new ServiceFeatureTable("url");
FeatureLayer layer = new FeatureLayer(table);
private void query1(FeatureLayer layer, ServiceFeatureTable t){
    Envelope envelope = layer.getFeatureTable().getExtent();
    parameters.setGeometry(envelope);
    mapView.setViewpointGeometryAsync(envelope, 20);
    ListenableFuture<FeatureQueryResult> future = t.queryFeaturesAsync(parameters, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);
    future.addDoneListener(() -> {
        try {
            for (Feature feature: future.get()) {
                Log.e("----------->", feature.getAttributes().toString());
                Map<String , Object> maps = feature.getAttributes();
                for (String key: maps.keySet()) {
                    Log.e("  " + key, maps.get(key) + "");
                }
            }
        } catch (ExecutionException | InterruptedException e) {
            e.printStackTrace();
        }
    });
}

private void query2(FeatureLayer layer){
        Envelope envelope = layer.getFeatureTable().getExtent();
        parameters.setGeometry(envelope);
        FeatureTable table = layer.getFeatureTable();
        mapView.setViewpointGeometryAsync(envelope, 20);
        ListenableFuture<FeatureQueryResult> future = table.queryFeaturesAsync(parameters);
        future.addDoneListener(() -> {
            try {
                for (Feature feature: future.get()) {
                    Log.e("----------->", feature.getAttributes().toString());
                    Map<String , Object> maps = feature.getAttributes();
                    for (String key: maps.keySet()) {
                        Log.e("  " + key, maps.get(key) + "");
                    }
                }
            } catch (ExecutionException | InterruptedException e) {
                e.printStackTrace();
            }
        });
    }

直接查询并绘制边界或者图形

ServiceFeatureTable table = new ServiceFeatureTable("url");
table.loadAsync();
table.addDoneLoadingListener(() -> {
    Envelope envelope = table.getExtent();
    if (envelope != null)
        mapView.setViewpointGeometryAsync(envelope, 20);

    parameters.setGeometry(table.getExtent());
    ListenableFuture<FeatureQueryResult> future = table.queryFeaturesAsync(
            parameters, ServiceFeatureTable.QueryFeatureFields.LOAD_ALL);
    future.addDoneListener(() -> {
        try {
            for (Feature feature : future.get()) {
                Geometry element = feature.getGeometry();
                //边界
                SimpleLineSymbol lineSymbol = new SimpleLineSymbol(
                        SimpleLineSymbol.Style.SOLID, 0xFFF7FCEF, 1F);
                //图形
                SimpleFillSymbol fillSymbol = new SimpleFillSymbol(
                        SimpleFillSymbol.Style.SOLID, 0x5528B36E, null);
                overlay.getGraphics().add(new Graphic(element, fillSymbol));
            }
        } catch (ExecutionException | InterruptedException e) {
            e.printStackTrace();
        }
    });
});

查询所有要素并高亮

private void query(FeatureLayer layer){
    Envelope envelope = layer.getFeatureTable().getExtent();
    parameters.setGeometry(envelope);
    ListenableFuture<FeatureQueryResult> future = layer.selectFeaturesAsync(parameters, FeatureLayer.SelectionMode.NEW);
    future.addDoneListener(() -> {
        try {
            Log.e("--------->", future.get() + "");
            for (Feature feature: future.get()) {

                Map<String , Object> maps = feature.getAttributes();

                for (String key: maps.keySet()) {
                    Log.e("  " + key, maps.get(key) + "");
                }

            }

        } catch (ExecutionException | InterruptedException e) {
            e.printStackTrace();
        }

    });
}

点击查询

mapView.setOnTouchListener(new DefaultMapViewOnTouchListener(this, mapView){

            @Override
            public boolean onSingleTapConfirmed(MotionEvent e) {

                point = new android.graphics.Point(Math.round(e.getX()), Math.round(e.getY()));

                ListenableFuture<List<IdentifyLayerResult>> future =
                        mapView.identifyLayersAsync(point, 15.0, false, -1);

                future.addDoneListener(() -> {

                    try {

                        Log.e("---总图层数->", future.get().size() + "");

                        for (IdentifyLayerResult result: future.get()) {

                            Log.e("---z长度->", "弹窗 " + result.getPopups().size() + " -元素 " + result.getElements().size()
                                    + " -图层 " + result.getSublayerResults().size());

                            Log.e("---地图names->", result.getLayerContent().getName());

                            for (LayerContent content: result.getLayerContent().getSubLayerContents()) {
                                Log.e("---地图name->", content.getName());
                            }

//                            for (IdentifyLayerResult layerResult: result.getSublayerResults()) {
//                                for (int i = 0; i < layerResult.getElements().size(); i++) {
//                                    GeoElement element = layerResult.getElements().get(i);
//
//                                    Map<String, Object> map = element.getAttributes();
//                                    for (String key: map.keySet()) {
//                                        Log.e("Sublayer-->  " + key,  map.get(key) + "");
//                                    }
//                                    Log.e("--" + i + "--Sublayer--几何形状->", element.getGeometry().toJson());
//
//                                }
//                            }

                            for (int i = 0; i < result.getElements().size(); i++) {
                                GeoElement element = result.getElements().get(i);

                                Map<String, Object> map = element.getAttributes();
                                for (String key: map.keySet()) {
                                    Log.e("Elements-->  " + key,  map.get(key) + "");
                                }

                                Log.e("--" + i + "--Elements--几何形状->", element.getGeometry().toJson());

                                Envelope envelope = element.getGeometry().getExtent();

//                                query(envelope);

                            }
                        }

                    } catch (ExecutionException | InterruptedException executionException) {
                        executionException.printStackTrace();
                    }
                });

                return super.onSingleTapConfirmed(e);
            }

        });
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值