android ayntask原理,ArcGIS for Android示例解析之空间查询-----QueryTask

吴开宇
2023-12-01

转自: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 {

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示例解析之高亮要素-----HighlightFeatures

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

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

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

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

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

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

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

Arcgis for Js实现graphiclayer的空间查询

本节讲的是Arcgis for Js的针对graphiclayer的空间查询,内容很简单,代码如下:

& ...

Arcgis for android 离线查询

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

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

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

ArcGIS Engine空间查询功能的实现(QueryFilterClass&plus;SpatialFilterClass)

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

ArcGIS Engine开发之空间查询

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

随机推荐

Python ZIP 文件创建与读取

Automate the Boring Stuff 学习笔记 02 Python 内置的 zipfile 模块可以对文件(夹)进行ZIP格式的压缩和读取操作.要进行相关操作,首先需要实例化一个 Zip ...

hihocoder挑战赛13A

#1191 : 小W与网格 描述 给定一个n*m的网格,左上角(1, 1),右下角(n, m). 小w在(i, j),他会从"上左下右"四个方向中选定两个不同但正交的方向,然后他只 ...

SQLSERVER复制的要点

SQLSERVER复制的要点 在论坛里经常有人问:SQLSERVER复制出问题了!!SQLSERVER复制不运行了!!SQLSERVER复制遇到阻塞了!! 然后最后来一句:“怎麽办?????????? ...

wamp集成环境 开启rewrite伪静态支持

什么是伪静态 伪静态就是:动态网页通过重写URL的方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面. 伪静态的目的 最主要的就是迎合搜索引擎方便搜索引擎蜘蛛(Spider) ...

Hdu Binary Tree Traversals

Problem Description         A binary tree is a finite set of vertices that is either empty or consis ...

wordpress常见的问题

nginx如webserver,wordpress上传主题错误 413 Request Entity Too Large 解决: vim /usr/local/nginx/conf/nginx.con ...

Two 观察者 observer pattern

Two 观察者 定义 在对象之间定义一对多的依赖,当一个对象改变状态,依赖它的对象都会收到通知.并自动更新. 可以观察者自取,也可以主题去推送 其实就是设计两个接口. 相关原则 为交互对象之前的松耦合 ...

PAT L3-020 至多删三个字符

https://pintia.cn/problem-sets/994805046380707840/problems/994805046946938880 给定一个全部由小写英文字母组成的字符串,允许 ...

Swift 里 Set(五)Adding & Removing Elements

Adding Elements internal func _unsafeInsertNew(_ element: __owned Element) { _internalInvariant(coun ...

IO流入门-第十一章-PrintStream&lowbar;PrintWriter

DataInputStream和DataOutputStream基本用法和方法示例 /* java.io.PrintStream:标准的输出流,默认打印到控制台,以字节方式 java.io.Print ...

 类似资料: