转自: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. Mustache

    简要介绍 玩过node的人应该都知道ejs,jade. mustache和他们一样都是模板渲染引擎,我个人喜欢mustache,因为他非常简洁,代码量才600多行. mustache既可以在前端使用, ...

  2. Newtonsoft.Json随手记

    private static Newtonsoft.Json.JsonSerializerSettings CreateSettings(string dateFormat) { Newtonsoft ...

  3. Kali-Linux之开启ssh服务

    需求:通过putty软件ssh到Kali-Linux系统 问题:默认情况下,Kali系统的ssh服务并没有开启 操作方法: 1.编辑sshd_config文件 root@kali:~# vi /etc ...

  4. Make和Makefile

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  5. lnmp 虚拟主机配置及重写

    lnmp安装与调试,请看 http://www.cnblogs.com/lin3615/p/4376224.html 虚拟主机的配置编辑nginx配置文件 nginx.conf此为主配置文件 vim ...

  6. aix5下安装python和cx_Oracle

    之前写了一个 linux下安装python和cx_Oracle 这次其实差不多. 1.解压安装包: Python-2.5.4.tar.bz2 cx_Oracle-5.0.4.tar.gz 2.安装py ...

  7. hdu 2079 选课时间

    hdu 2079 选课时间 题意:选的学分总和为n,并且学分为a的课有b种,总共有K(1<=k<=8)种学分不同的课,并且要选的学分最多为40:问选课方案有多少种?(学分相同的课即认为相同 ...

  8. [Linux发行版] 常见Linux系统下载

    本专题页汇总最受欢迎的Linux发行版基本介绍和下载地址,如果您是一位刚接触Linux的新手,这里的介绍可能对您有所帮助,如果您是以为Linux使用前辈,也可以在评论处留下您宝贵意见和经验,以便让更多 ...

  9. gei shilei d

    body, p { margin: 0; padding: 0; font-size: 16px; } div { margin: 0 auto; } .wrapper { width: 1080px ...

  10. css3创建动画

    @keyframes ico{ 0% { top: -100%; } 100%{ top:4%; } } @-webkit-keyframes ico{ 0% { top: -100%; } 100% ...