Android培训之arcgis

1.注册mapView的单击事件
  mMapView.setOnSingleTapListener(mOnSingleTapListener);
  2.实现单击的时间的监听器
  OnSingleTapListenermOnSingleTapListener=newOnSingleTapListener(){
  @Override
  publicvoidonSingleTap(floatx,floaty){
  newAsyncQueryTask().execute(x,y);
  }
  };
  我们具体在一个AsyncQueryTask里异步执行查询和显示。
  在上面的onSingleTap方法里有有两个参数(floatx,floaty),这个是一个坐标点,表示里你点击的位置,是个屏幕坐标,在查询时,我们需要将其转成地图坐标点,使用方法
  mMapView.toMapPoint(x,y)
  classAsyncQueryTaskextendsAsyncTask<Float,Void,FeatureSet>{
  StringerrMsg=null;
  @Override
  protectedFeatureSetdoInBackground(Float...params){
  floatx=params[0];
  floaty=params[1];
  if(mMapView.isLoaded()){
  //AlertMsg("单击,屏幕像素坐标点:x=%s,y=%s",x,y);
  //PointmapPoint=mMapView.toMapPoint(newPoint(x,y));
  Pointpt=mMapView.toMapPoint(x,y);
  Queryquery=newQuery();
  query.setGeometry(pt);
  query.setReturnGeometry(true);
  //query.setOutFields(newString[]{"*"});
  query.setOutFields(newString[]{"县名称_1","乡名称_1","村名称_1","地块名称","统一编号"});
  QueryTaskqueryTask=newQueryTask(mMapServiceUrl+"/4");//这里参数是地图的服务地址,后面的4,标识了是其中某一个图层。
  try{
  FeatureSetfs=queryTask.execute(query);
  returnfs;
  }catch(Exceptione){
  e.printStackTrace();
  errMsg=e.getMessage();
  }
  }
  returnnull;
  }
  我们构建一个query和queryTask进行查询,查询条件:query.setGeometry(pt);
  返回的字段内容:query.setOutFields(newString[]{"县名称_1","乡名称_1","村名称_1","地块名称","统一编号"});
  返回的结果是FeatureSet就是想要获得区域。
  3.从返回的结果中拿到grphics并绘制在一个自定义的图层上,并指定绘制方式。
  @Override
  protectedvoidonPostExecute(FeatureSetfs){
  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();
  SimpleFillSymbolsymbol=newSimpleFillSymbol(Color.RED);
  CT_Area_ViewActivity.this.gLayer
  .setRenderer(newSimpleRenderer(symbol));
  CT_Area_ViewActivity.this.gLayer.removeAll();
  CT_Area_ViewActivity.this.gLayer.addGraphics(fs.getGraphics());
  if(fs.getGraphics().length>0){
  Graphicgraphic=fs.getGraphics()[0];
  //String[]names=graphic.getAttributeNames();
  Stringxian=getValue(graphic,"县名称_1","");
  Stringxiang=getValue(graphic,"乡名称_1","");
  Stringcun=getValue(graphic,"村名称_1","");
  Stringdikuai=getValue(graphic,"地块名称","");
  Stringid=getValue(graphic,"统一编号","");
  ShowDialog_Detail(xian+xiang+cun+"\n"+dikuai,id);
  }
  }catch(Exceptione){
  e.printStackTrace();
  Toast.makeText(CT_Area_ViewActivity.this,e.getMessage(),0)
  .show();
  }
  }
  StringgetValue(Graphicgraphic,Stringkey,StringdefaultVal){
  Objectobj=graphic.getAttributeValue(key);
  if(obj==null)
  returndefaultVal;
  else
  returnobj.toString();
  }
  }
  别忘了声明一些类变量:
  com.esri.android.map.MapViewmMapView;
  ArcGISDynamicMapServiceLayeragmServiceLayer;  GraphicsLayergLayer;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值