ArcGIS for Android 10.2.9(4):在线服务图层查询,并且选中该点所在区域,高亮显示

查询异步任务类:

package com.example.administrator.arcgis1029.task;

import android.os.AsyncTask;
import android.text.TextUtils;
import android.widget.TextView;

import com.esri.core.geometry.Point;
import com.esri.core.geometry.SpatialReference;
import com.esri.core.map.FeatureResult;
import com.esri.core.map.Field;
import com.esri.core.tasks.ags.query.Query;
import com.esri.core.tasks.query.QueryParameters;
import com.esri.core.tasks.query.QueryTask;
import com.example.administrator.arcgis1029.constant.AppConstant;

import java.util.List;

/**
 * Created by xiaoyehai on 2018/3/19 0019.
 */

public class AsyncQueryTask extends AsyncTask<Object, Void, FeatureResult> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected FeatureResult doInBackground(Object... params) {
        String url = (String) params[0];
        Point point = (Point) params[1];
        String whereClause = (String) params[2];

        //创建查询参数对象
        QueryParameters parameters = new QueryParameters();

        //设置识别位置
        if (point != null) {
            parameters.setGeometry(point);
        }

        //指定是否返回几何对象
        parameters.setReturnGeometry(true);

        //设置查询条件
        if (!TextUtils.isEmpty(whereClause)) {
            parameters.setWhere(whereClause);
        }
        //设置空间参考坐标系
        //SpatialReference sr = SpatialReference.create(4326);

        //设置输出坐标系
        //parameters.setOutSpatialReference(sr);

        //设置返回字段内容
        parameters.setOutFields(new String[]{"*"});

        //        parameters.setOutFields(new String[] { "县名称_1", "乡名称_1", "村名称_1",
        //                "地块名称", "统一编号" });

        //查询
        QueryTask queryTask = new QueryTask(url);
        try {
            FeatureResult featureResult = queryTask.execute(parameters);
            return featureResult;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(FeatureResult result) {
        super.onPostExecute(result);

        //接口回调返回数据
        if (onReturnDataListener != null) {
            onReturnDataListener.onReturnData(result);
        }
    }

    public interface OnReturnDataListener {
        void onReturnData(FeatureResult result);
    }

    private OnReturnDataListener onReturnDataListener;

    public void setOnReturnDataListener(OnReturnDataListener onReturnDataListener) {
        this.onReturnDataListener = onReturnDataListener;
    }
}

使用:

/**
 * 点击某点,选中该点所在区域,高亮显示
 */
public class Main9Activity extends AppCompatActivity {

    private MapView mMapView;

    private String url1 = "http://192.168.1.228:6080/arcgis/rest/services/jcsj/dzdt/MapServer";

    /**
     * 指定查询的服务图层
     * "http://192.168.1.228:6080/arcgis/rest/services/jcsj/xzqh/MapServer/2"
     */
    private String url2 = "http://192.168.1.228:6080/arcgis/rest/services/jcsj/xzqh/MapServer";

    private ArcGISTiledMapServiceLayer mArcGISTiledMapServiceLayer;
    private GraphicsLayer mGraphicsLayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main9);

        mMapView = (MapView) findViewById(R.id.mapview);

        addTiledLayer(url1);

        mGraphicsLayer = new GraphicsLayer();
        mMapView.addLayer(mGraphicsLayer);

        addDynamicLayer(url2, 2);


        mMapView.setOnSingleTapListener(new OnSingleTapListener() {
            @Override
            public void onSingleTap(float v, float v1) {
                Point point = mMapView.toMapPoint(v, v1);

                AsyncQueryTask asyncQueryTask = new AsyncQueryTask();
                asyncQueryTask.execute(url2 + "/2", point, null);

                asyncQueryTask.setOnReturnDataListener(new AsyncQueryTask.OnReturnDataListener() {
                    @Override
                    public void onReturnData(FeatureResult result) {
                        if (result != null) {
                            Iterator<Object> iterator = result.iterator();
                            if (iterator.hasNext()) {
                                Feature feature = (Feature) iterator.next();
                                Map<String, Object> attributes = feature.getAttributes();
                                Symbol symbol = feature.getSymbol();
                                Geometry geometry = feature.getGeometry();

                                printAttributes(attributes);

                                //自定义高亮显示样式
                                //SimpleLineSymbol lineSymbol = new SimpleLineSymbol(Color.RED, 3, SimpleLineSymbol.STYLE.SOLID);
                                //SimpleFillSymbol fillSymbol = new SimpleFillSymbol(Color.parseColor("#ECC8AC"));
                                // fillSymbol.setOutline(lineSymbol);

                                Graphic graphic = new Graphic(geometry, symbol, attributes);

                                //设置高亮显示的颜色
                                SimpleRenderer sr = new SimpleRenderer(new SimpleFillSymbol(Color.RED));
                                mGraphicsLayer.setRenderer(sr);

                                mGraphicsLayer.removeAll();
                                mGraphicsLayer.addGraphic(graphic);

                            }
                        }

                    }
                });
            }
        });

    }

    private void printAttributes(Map<String, Object> attributes) {
        Set<String> set = attributes.keySet();
        for (String key : set) {
            Log.e("xyh", "key==" + key + ";  value==" + attributes.get(key));
        }
    }


    /**
     * 添加底图
     *
     * @param url
     */
    public void addTiledLayer(String url) {
        mArcGISTiledMapServiceLayer = new ArcGISTiledMapServiceLayer(url);
        mMapView.addLayer(mArcGISTiledMapServiceLayer);
    }

    /**
     * 添加动态图层
     *
     * @param url
     */
    public void addDynamicLayer(String url, int layer_table) {
        ArcGISDynamicMapServiceLayer dynamicLayer = new ArcGISDynamicMapServiceLayer(url, new int[]{layer_table});
        mMapView.addLayer(dynamicLayer);
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.unpause();
    }


}

查询结果:

18760/com.example.administrator.arcgis1029 E/xyh: key==OBJECTID;  value==156
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==BSM;  value==120000271
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==YSDM;  value==1000600100
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==XZQDM;  value==460106104208
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==XZQMC;  value==美仁坡村
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==XZQQC;  value==美仁坡村委会
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SSZJDM;  value==460106104
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SSZJMC;  value==龙泉镇
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SSXZQDM;  value==460106
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SSXZQMC;  value==龙华区
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==KZMJ;  value==7505805.69
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==JSMJ;  value==7505805.69
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==MSSM;  value==00
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==是否主城区_1;  value==0
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==ZCQMJ;  value==0.0
04-18 16:57:28.215 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==ZCQYWMJ;  value==7506646.20575
04-18 16:57:28.216 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SHAPE.AREA;  value==7506646.2057457
04-18 16:57:28.216 18760-18760/com.example.administrator.arcgis1029 E/xyh: key==SHAPE.LEN;  value==21640.3050074288

高亮显示:

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值