布局文件:
<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
tools:context=".QueryFeatureActivity"
>
<Button android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/select"
android:text="查找"
android:onClick="onSelect"/>
<com.esri.android.map.MapView
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mmapView"
>
</com.esri.android.map.MapView>
</LinearLayout>
点击Button 之后会查询MapView当前范围中符合查询条件的图斑。
public class QueryFeatureActivity extends Activity {
MapView mMapView ;
private GraphicsLayerglayer;
private Graphic[]graphics;
private StringmapUrl;
/** Calledwhen the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mMapView = (MapView) findViewById(R.id.mmapView);
mapUrl="http://services.arcgisonline.com/ArcGIS/rest/services/Demographics/USA_Average_Household_Size/MapServer";
ArcGISTiledMapServiceLayer tile=new ArcGISTiledMapServiceLayer(mapUrl);
glayer=new GraphicsLayer();
SimpleRendererred=new SimpleRenderer(new SimpleFillSymbol(Color.RED));
glayer.setRenderer(red);
mMapView.addLayer(tile);
mMapView.addLayer(glayer);
}
//查询按钮点击事件
public void onSelect(View v){
Queryquery=new Query();
Envelopeen=new Envelope();
mMapView.getExtent().queryEnvelope(en);
query.setGeometry(en);//查询范围
query.setOutSpatialReference(mMapView.getSpatialReference());//设置输入的空间参考
query.setInSpatialReference(mMapView.getSpatialReference());//设置输出的空间参考
query.setReturnGeometry(true);//返回查询
query.setWhere("AVGHHSZ_CY>1.5");//查询条件
MyQueryTasktask=new MyQueryTask();
task.execute(query);
}
//查询异步类
class MyQueryTaskextends AsyncTask<Query, Void,FeatureSet>{
private ProgressDialogdia;
private QueryTasktask;
protected FeatureSet doInBackground(Query... params) {
Query query=params[0];
FeatureSet res=null;
try {
res= task.execute(query);
} catch (Exception e) {
e.printStackTrace();
}
return res;
}
protected void onPreExecute() {
dia=new ProgressDialog(QueryFeatureActivity.this);
dia.setMessage("正在查询。。。");
dia.show();
task=new QueryTask(mapUrl.concat("/3"));//设置查询图层
}
protected void onPostExecute(FeatureSet result) {
String message="没有找到。。。";
if(result!=null){
graphics=result.getGraphics();
if(graphics.length>0){//有数据返回
glayer.addGraphics(graphics);//把graphics[]添加到GraphicLayer中显示出来
message="查询到"+graphics.length +"结果";
}
}
Toast.makeText(QueryFeatureActivity.this, message, Toast.LENGTH_SHORT).show();
dia.dismiss();
}
}
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onPause() {
super.onPause();
mMapView.pause();
}
@Override protectedvoid onResume() {
super.onResume();
mMapView.unpause();
}
}