天天看點

arcgis for android 查詢geodatabase資料庫

@Override
    public void sortDataA(final String name , final int code) {
        final String sql="BZDM LIKE '%"+name+"%' or DMLB LIKE '%"+name+"%'";

        mMapList=new ArrayList<>();
        mGeometries=new ArrayList<>();
        if (mFeatureLayers!=null&&mFeatureLayers.size()>0){
            for (FeatureLayer featureLayer:mFeatureLayers){
                mMainView.getMap().getOperationalLayers().remove(featureLayer);
            }
            mFeatureLayers.clear();
        }
        final Geodatabase geodatabase=new Geodatabase(mSharedPreferences.getString("shp","")+"zhongshan.geodatabase");
        geodatabase.loadAsync();
        geodatabase.addDoneLoadingListener(new Runnable() {
            @Override
            public void run() {
                QueryParameters queryParameters=new QueryParameters();
                queryParameters.setWhereClause(sql);
                List<GeodatabaseFeatureTable> geodatabaseFeatureTables=geodatabase.getGeodatabaseFeatureTables();
                if (geodatabaseFeatureTables==null||geodatabaseFeatureTables.size()==0){
                    return;
                }
                FeatureLayer featureLayer=new FeatureLayer(geodatabaseFeatureTables.get(code));
                mFeatureLayers.add(featureLayer);
                FeatureTable mTable = featureLayer.getFeatureTable();//得到查詢屬性表
                final ListenableFuture<FeatureQueryResult> featureQueryResult
                        = mTable.queryFeaturesAsync(queryParameters);

                featureQueryResult.addDoneListener(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            FeatureQueryResult features =featureQueryResult.get();
                            for (Object element : features) {
                                if (element instanceof Feature) {
                                    Feature mFeatureGrafic = (Feature) element;
                                    Map<String, Object> mQuerryString = mFeatureGrafic.getAttributes();
                                    int b=0;
                                    for (int a=0;a<mMapList.size();a++){
                                        if (mMapList.get(a).get("BZDM").equals(mQuerryString.get("BZDM"))){
                                            ++b;
                                        }
                                    }
                                    if (b==0){
                                        mMapList.add(mQuerryString);
                                        mGeometries.add(mFeatureGrafic.getGeometry());
                                    }

                                }

                            }

                            if (mGeometries!=null&&mGeometries.size()>0){
                                mMainView.setViewpointCenterAsync(mGeometries.get(0).getExtent().getCenter());

                            }

                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        } catch (ExecutionException e) {
                            e.printStackTrace();
                        }
                    }
                });
                mMainView.getMap().getOperationalLayers().add(featureLayer);

            }
        });
    }