转自:http://blog.csdn.net/wozaifeiyang0/article/details/7331450

QueryTask

查询功能在GIS中是一个不可或缺的重要功能,示例中提供了一个属性查询的Demo,下面来看一下在Android中我们怎样实现一个查询功能,

1、              我们在布局文件中添加了一个按钮,并且在代码中添加了这个按钮的点击事件监听;

2、              自定义一个 AsyncTask的扩展类,在此类中我们实现了查询功能。

3、              在按钮的事件监听类中执行我们自定义的异步类。

相关代码如下:

querybt.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

if (blQuery) {

String targetLayer = targetServerURL.concat("/3");

String[] queryParams = { targetLayer, "AVGHHSZ_CY>3.5" };

AsyncQueryTask ayncQuery = new AsyncQueryTask();

ayncQuery.execute(queryParams);

} else {

gl.removeAll();

blQuery = true;

querybt.setText("Average Household > 3.5");

}

}

});

上面代码中定义了一个按钮的点击事件监听,并在监听中执行我们自定义的异步类,异步类中实现了查询功能,下面我们来看一下这个类都做了什么,代码如下:

private class AsyncQueryTask extends AsyncTask<String, Void, FeatureSet> {

protected void onPreExecute() {

//在未查询出结果时显示一个进度条

progress = ProgressDialog.show(AttributeQuery.this, "",

"Please wait....query task is executing");

}

protected FeatureSet doInBackground(String... queryParams) {

if (queryParams == null || queryParams.length <= 1)

return null;

//查询条件和URL参数

String url = queryParams[0];

//查询所需的参数类

Query query = new Query();

String whereClause = queryParams[1];

SpatialReference sr = SpatialReference.create(102100);

query.setGeometry(new Envelope(-20147112.9593773, 557305.257274575,

-6569564.7196889, 11753184.6153385));//设置查询空间范围

query.setOutSpatialReference(sr);//设置查询输出的坐标系

query.setReturnGeometry(true);//是否返回空间信息

query.setWhere(whereClause);//where条件

QueryTask qTask = new QueryTask(url);//查询任务类

FeatureSet fs = null;

try {

fs = qTask.execute(query);//执行查询,返回查询结果

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

return fs;

}

return fs;

}

protected void onPostExecute(FeatureSet result) {

String message = "No result comes back";

if (result != null) {

Graphic[] grs = result.getGraphics();

if (grs.length > 0) {

gl.addGraphics(grs);  //将查询结果添加到图层上

message = (grs.length == 1 ? "1 result has " : Integer

.toString(grs.length) + " results have ")

+ "come back";

}

}

progress.dismiss();//停止进度条

Toast toast = Toast.makeText(AttributeQuery.this, message,

Toast.LENGTH_LONG);

toast.show();

querybt.setText("Clear graphics");

blQuery = false;

}

}

通过注释和代码可以看出,要做一个查询其实一点都不麻烦,只需要配置好两个类:Query和QueryTask。Query是要查询的因子,QureyTask是查询任务的执行者,我们只需给Query设定好要查询的相关参数,并给QureyTask指定查询的URL路径,查询功能就可以顺利完成。

ArcGIS for Android示例解析之空间查询-----QueryTask的更多相关文章

  1. ArcGIS for Android示例解析之高亮要素-----HighlightFeatures

    转自:http://blog.csdn.net/wozaifeiyang0/article/details/7323606 HighlightFeatures 要素高亮化功能,相信有其他gis开发经营 ...

  2. ArcGIS for Android示例解析之离线地图-----LocalTiledLayer

    转自:http://blog.csdn.net/wozaifeiyang0/article/details/7327423 LocalTiledLayer 看到这个标题是否是很激动,如题,该示例就是添 ...

  3. Arcgis for Js之featurelayer实现空间查询和属性查询

    空间查询和属性查询是常用的两种对数据的检索与查询方式,在本节,将讲述Arcgis for Js下如何实现featurelayer的这两种查询方式,先贴图给大家看看: 实现界面 属性查询 空间查询 看完 ...

  4. Arcgis for Js实现graphiclayer的空间查询(续)

    上文中,实现了简单的针对graphiclayer的空间查询工作,在本节,将更加详细的介绍针对graphiclayer的空间查询.首先,空间查询的方式:提供多种类型的空间查询,包括点周边.线周边.面内等 ...

  5. Arcgis for Js实现graphiclayer的空间查询

    本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容很简单,代码如下: <!DOCTYPE html> <html> <head> & ...

  6. Arcgis for android 离线查询

    参考.. 官方API demo ... 各种资料 以及.. ArcGIS for Android示例解析之高亮要素-----HighlightFeatures ttp://blog.csdn.net/ ...

  7. 使用ArcGIS API for Silverlight 进行复合多条件空间查询

    原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进 ...

  8. ArcGIS Engine空间查询功能的实现(QueryFilterClass+SpatialFilterClass)

    地图中包含大量的信息,为了快速地了解所需信息,必须借助为空间数据专门编写的空间查询功能. 空间查询主要有两种类型: 基于属性的查询,也称为属性查询. 基于空间位置的查询,也称为空间查询. 查询类的基本 ...

  9. ArcGIS Engine开发之空间查询

    空间查询功能是通过用户选择的空间几何体以及该几何体与当前地图中要素之间的几何关系进行空间查找,从而得到查询结果的操作. 相关类与接口 空间查询相关的类主要是SpatialFilter类,其实现的接口主 ...

随机推荐

  1. HttpWatch网络抓包工具的使用

    HttpWatch网络抓包工具是专为IE浏览器集成的一款网络拽包工具.   是一款强大的网页数据分析软件,是最好用的抓包工具,httpwatch可以抓到上传视屏图片的包,一般的抓包软件是抓不到的.打开 ...

  2. centos svn安装

    http://fengjunoo.iteye.com/blog/1759265(参考) 以前在ubuntu上安装过一次svn,那次弄得有些麻烦. 这次记录下centos环境下安装svn的步骤 其实简单 ...

  3. mysql---左连接、右连接、内连接之间的区别与联系

    现有两张表 第一张表为男生表,记录了男生的姓名和配偶的编号 第二张表为女生表,记录了女生的姓名和自己的编号 第一种情况:主持人请所有男生都上台,并且带上自己的配偶.这时不管男生有没有配偶都要上台,所以 ...

  4. [C#]判断是否是合法的IP4,IP6地址

    判断一个字符串如果没有端口的话,利用IPAddress.TryParse很好判断,那么有端口怎么判断呢,正则表达式?还是其他方式? 关键代码: /// <summary> /// 判断是否 ...

  5. JavaScript 判断用户输入的邮箱及手机格式是否正确

    JavaScript判断用户输入的邮箱格式是否正确.判断用户输入的手机号格式是否正确,下面有个不错的示例,感兴趣的朋友可以参考下. 复制代码代码如下: /*  * 功能:判断用户输入的邮箱格式是否正确 ...

  6. Chrome 浏览器各版本下载大全

    随着最近64位版本的 Chrome 浏览器正式版的推出,Chrome 浏览器再次受到广大浏览迷的重点关注,今天我们就整理一下各版本的 Chrome 浏览器 32位及64位的下载地址,方便各位浏览迷选择 ...

  7. C99标准中的部分新特性

    我有点怀疑我会不会C语言了. 1.变长数组(VLA) ; scanf("%d", &n); int arr[n]; 2.数组初始化 ] = {[] = , [] = , [ ...

  8. OpenGL列主元矩阵的运算

    大学线性代数课本是用的行主元矩阵,OpenGL使用的是列主元矩阵.有什么差别呢,对于线性代数学得不够扎实的孩纸来说,还挺烦的. 其实明白了就觉得很简单: 从课本的角度来看,平移矩阵是诸如这样的: 平移 ...

  9. codevs 1743 反转卡片

    题目描述 Description [dzy493941464|yywyzdzr原创] 小A将N张卡片整齐地排成一排,其中每张卡片上写了1~N的一个整数,每张卡片上的数各不相同. 比如下图是N=5的一种 ...

  10. sharepoint 2013 sp1

    http://www.microsoft.com/en-us/download/details.aspx?id=42544 http://soussi-imed.over-blog.com/artic ...