如上图,点击某块,然后高亮显示选中的这块区域(本例中是红色的那个块)。

---------------------------

编码过程:

1.注册 mapView的单击事件

  mMapView.setOnSingleTapListener(mOnSingleTapListener);

2.实现单击的时间的监听器

  OnSingleTapListener mOnSingleTapListener = new OnSingleTapListener() {    @Override    public void onSingleTap(float x, float y) {      new AsyncQueryTask().execute(x, y);    }  };

  我们具体在一个AsyncQueryTask里异步执行查询和显示。

在上面的onSingleTap方法里有有两个参数(float x, float y) ,这个是一个坐标点,表示里你点击的位置,是个屏幕坐标,在查询时,我们需要将其转成 地图坐标点,使用方法

  mMapView.toMapPoint(x,y)
class AsyncQueryTask extends AsyncTask<Float, Void, FeatureSet> {        String errMsg = null;        @Override        protected FeatureSet doInBackground(Float... params) {            float x = params[0];            float y = params[1];            if (mMapView.isLoaded()) {                // AlertMsg("单击,屏幕像素坐标点:  x=%s,y=%s", x, y);                // Point mapPoint = mMapView.toMapPoint(new Point(x, y));                Point pt = mMapView.toMapPoint(x, y);                Query query = new Query();                query.setGeometry(pt);                query.setReturnGeometry(true);                //query.setOutFields(new String[] {"*"});                query.setOutFields(new String[] { "县名称_1", "乡名称_1", "村名称_1",                        "地块名称", "统一编号" });                QueryTask queryTask = new QueryTask(mMapServiceUrl + "/4");//这里参数是地图的服务地址,后面的4,标识了是其中某一个图层。                try {                    FeatureSet fs = queryTask.execute(query);                    return fs;                } catch (Exception e) {                    e.printStackTrace();                    errMsg = e.getMessage();                }            }            return null;        }

  我们构建一个 query 和 queryTask 进行查询,

  查询条件:query.setGeometry(pt);

  返回的字段内容:query.setOutFields(new String[] { "县名称_1", "乡名称_1", "村名称_1","地块名称", "统一编号" });

  返回的结果是FeatureSet 就是想要获得区域。

3.从返回的结果中拿到 grphics 并绘制在一个 自定义的图层上 ,并指定绘制方式。

        @Override        protected void onPostExecute(FeatureSet fs) {            if (fs == null) {                if (errMsg != null) {                    Toast.makeText(CT_Area_ViewActivity.this, errMsg, 0).show();                }                Toast.makeText(CT_Area_ViewActivity.this, "查询的结果为空", 0).show();                return;            }            try {                Toast.makeText(CT_Area_ViewActivity.this,                        "查询到" + fs.getGraphics().length + "个结果", 0).show();                SimpleFillSymbol symbol = new SimpleFillSymbol(Color.RED);                CT_Area_ViewActivity.this.gLayer                        .setRenderer(new SimpleRenderer(symbol));                CT_Area_ViewActivity.this.gLayer.removeAll();                CT_Area_ViewActivity.this.gLayer.addGraphics(fs.getGraphics());                if (fs.getGraphics().length > 0) {                    Graphic graphic = fs.getGraphics()[0];                    // String[] names = graphic.getAttributeNames();                    String xian = getValue(graphic, "县名称_1", "");                    String xiang = getValue(graphic, "乡名称_1", "");                    String cun = getValue(graphic, "村名称_1", "");                    String dikuai = getValue(graphic, "地块名称", "");                    String id = getValue(graphic, "统一编号", "");                    ShowDialog_Detail(xian + xiang + cun + "\n" + dikuai, id);                }            } catch (Exception e) {                e.printStackTrace();                Toast.makeText(CT_Area_ViewActivity.this, e.getMessage(), 0)                        .show();            }        }        String getValue(Graphic graphic, String key, String defaultVal) {            Object obj = graphic.getAttributeValue(key);            if (obj == null)                return defaultVal;            else                return obj.toString();        }    }

别忘了声明一些 类变量:

    com.esri.android.map.MapView mMapView;    ArcGISDynamicMapServiceLayer agmServiceLayer;    GraphicsLayer gLayer;

更多相关文章

  1. Android(安卓)SQLite 使用 query 查询特定行数据
  2. Android的多媒体信息获取
  3. Android(安卓)studio 打包自定义apk名称
  4. android的存储GreenDao数据库
  5. Android(安卓)| 1. Fragment中使用SQLite实现简单存储及查询
  6. android之AsyncQueryHandler详解
  7. Android获取应用程序的版本名称和版本号
  8. Android(安卓)顶部灰条标题栏不显示的方法
  9. GreenDAO 3.x项目开发实战持续更新ing — Android(安卓)ORM框架(

随机推荐

  1. Android开发技术周报 Issue#56
  2. 关于android的4.2的0文件夹的详解
  3. Handler全面解析
  4. Android(安卓)图片对比(图片相似度)代码
  5. Android(安卓)APK的反编译方法
  6. 安卓-开发常见问题之修改android工程的ja
  7. 在配置文件(manifest file)中声明activit
  8. Android(安卓)Studio使用jni、so库
  9. Android(安卓)ViewPager前两页显示空白
  10. Android监听输入法弹窗和关闭的实现方法