`

IdentifyTask--要素识别 ----长按某一点后查询,并将查询结果高亮显示

 
阅读更多

public class HighlightFeatures extends Activity {

	private MapView mapView;
	private ArcGISTiledMapServiceLayer tiledMapServiceLayer;
	private GraphicsLayer graphicsLayer;
	private Graphic[] highlightGraphics;

	private String mapURL = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/PublicSafety/PublicSafetyBasemap/MapServer";

	@SuppressWarnings("serial")
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.main);

		mapView = (MapView) findViewById(R.id.map);
		mapView.setOnLongPressListener(new OnLongPressListener() {
			public void onLongPress(float x, float y) {
				identifyPoint(x, y);
			}
		});

		tiledMapServiceLayer = new ArcGISTiledMapServiceLayer(mapURL);
		graphicsLayer = new GraphicsLayer();

		mapView.addLayer(tiledMapServiceLayer);
		mapView.addLayer(graphicsLayer);
	}

	// 要素识别长按点
	protected void identifyPoint(float x, float y) {
		try {
			graphicsLayer.removeAll();
			Point pointClicked = mapView.toMapPoint(x, y);

			IdentifyParameters params = new IdentifyParameters();
			params.setGeometry(pointClicked);
			params.setLayers(new int[] { 28 });
			Envelope env = new Envelope();
			mapView.getExtent().queryEnvelope(env);
			params.setSpatialReference(mapView.getSpatialReference());
			params.setMapExtent(env);
			params.setDPI(96);
			params.setMapHeight(mapView.getHeight());
			params.setMapWidth(mapView.getWidth());
			params.setTolerance(10);

			// 执行查询任务
			MyIdentifyTask mIdenitfy = new MyIdentifyTask();
			mIdenitfy.execute(params);

		} catch (Exception ex) {
			ex.printStackTrace();
		}

	}

	@Override
	protected void onPause() {
		super.onPause();
		mapView.pause();
	}

	@Override
	protected void onResume() {
		super.onResume();
		mapView.unpause();
	}

	private class MyIdentifyTask extends
			AsyncTask<IdentifyParameters, Void, IdentifyResult[]> {

		IdentifyTask mIdentifyTask;

		@Override
		protected IdentifyResult[] doInBackground(IdentifyParameters... params) {
			IdentifyResult[] mResult = null;
			if (params != null && params.length > 0) {
				IdentifyParameters mParams = params[0];
				try {
					mResult = mIdentifyTask.execute(mParams);
				} catch (Exception e) {
					e.printStackTrace();
				}

			}
			return mResult;
		}

		@Override
		protected void onPostExecute(IdentifyResult[] results) {

			if (results != null && results.length > 0) {
				highlightGraphics = new Graphic[results.length];
				for (int i = 0; i < results.length; i++) {

					Geometry geom = results[i].getGeometry();// 得到几何对象
					String typeName = geom.getType().name();// 图层类型
					lightShow(i, typeName, geom);// 高亮显示

					IdentifyResult result = results[i];
					Log.i("andli", "图层名称---" + result.getLayerName());
					Log.i("andli", "图层id ---" + result.getLayerId());
					Log.i("andli", "图层类型---" + typeName);
				}
			} else {
				Toast.makeText(HighlightFeatures.this, "查询结果为空", 3000).show();
			}

		}

		@Override
		protected void onPreExecute() {
			mIdentifyTask = new IdentifyTask(mapURL);
		}

	}

	public void lightShow(int i, String typeName, Geometry geom) {
		// 高亮显示查询结果
		Random r = new Random();
		int color = Color.rgb(r.nextInt(255), r.nextInt(255), r.nextInt(255));// 生成随机色
		if (typeName.equalsIgnoreCase("point")) {
			SimpleMarkerSymbol sms = new SimpleMarkerSymbol(color, 20,
					STYLE.SQUARE);
			highlightGraphics[i] = new Graphic(geom, sms);
		} else if (typeName.equalsIgnoreCase("polyline")) {
			SimpleLineSymbol sls = new SimpleLineSymbol(color, 5);
			highlightGraphics[i] = new Graphic(geom, sls);
		} else if (typeName.equalsIgnoreCase("polygon")) {
			SimpleFillSymbol sfs = new SimpleFillSymbol(color);
			sfs.setAlpha(75);
			highlightGraphics[i] = new Graphic(geom, sfs);
		}

		graphicsLayer.addGraphic(highlightGraphics[i]);

	}
}
 
分享到:
评论

相关推荐

    Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回

    Activiti6-流程跟踪监控图-节点-流程线高亮显示-支持通过、不通过、驳回、退回 支持内容: 已完成节点高亮显示、当前执行中节点红色显示 支持一个节点多条流出线,包括通过、不通过、驳回、退回,按照已执行操作正确...

    arcengine实现属性查询,查询结果闪烁居中并高亮显示

    - **居中显示**:查询完成后,代码会计算查询结果的中心坐标,并将地图视图中心移动到这个位置,使查询结果位于屏幕中央。 - **高亮显示**:对于查询结果,可以通过修改其符号样式来实现高亮显示,比如改变颜色、...

    C#+ARCGIS ENGINE开发查找地图元素并高亮显示代码

    - 对于查询结果中的每个要素,可以通过`SetSelected`或类似的方法来实现高亮显示。 ### 五、总结 本文详细解析了“C#+ARCGIS ENGINE开发查找地图元素并高亮显示代码”的关键知识点。通过分析可知,该示例展示了...

    Cross Words Highlight 划词高亮-1.1.3.zip

    名称:Cross Words Highlight 划词高亮 -------------------- 版本:1.1.3 作者:1776243356a 分类:其他 -------------------- 概述:网页划词高亮,随时随地添加批注,记录笔记,方便快捷的管理正在阅读的网页文档...

    AD20快捷高亮显示元器件与网络.docx

    高亮显示功能可以帮助设计师迅速识别出关注的电路元素,从而更高效地进行调试、验证以及后续的修改工作。此外,这一功能还有助于团队协作时的交流,使其他成员能更快地理解设计意图。 #### 三、操作步骤详解 1. **...

    Android长按圆型有颜色变化显示进度,长按结束事件

    Android长按圆型有颜色变化显示进度,长按结束事件:长按按钮是一个圆,加入了OnTouchListener事件的监听。长按后该圆会慢慢的变颜色,等到整个圆的颜色变化完成后,则触发另一事件。适用于长按结束事件,增加用户...

    泛微E9流程修改字段高亮显示

    - **序号红色**:表示这是一条被删除的明细行,所有被删除的明细行都会被标上删除线,并显示为红色,便于用户快速识别。 #### 四、代码内容 具体的实现代码包括了前后端的交互逻辑以及前端的渲染代码等。例如,`...

    vue高亮显示插件

    重启 Sublime Text 后,Vue.js 代码应该就能显示高亮了。 总的来说,Vue.js 语法高亮插件是 Sublime Text 开发者不可或缺的工具,它能够优化 Vue 项目的编码环境,帮助开发者更高效地编写和维护代码。合理利用这些...

    高亮img、pdf重点部分(html2canvas、pdfjs-dist、react-pdf)demo

    4. 如果需要,`html2canvas`可以用来捕获高亮后的HTML内容并转换为图像,以便用户可以下载或分享。 总的来说,这个项目展示了如何利用现代Web技术,如React、HTML2Canvas和PDF.js,来增强用户与图像和PDF文档的交互...

    Elasticsearch实现复合查询高亮结果功能

    一.Es的配置 实现es的全文检索功能的第一步,首先从与es进行连接开始,这里我使用的是es的5.x java api语法. public TransportClient esClient() throws UnknownHostException{ Settings settings = Settings....

    Word插入代码显示行号并高亮着色显示

    在Word中插入代码并实现与IDE(集成开发环境)类似的显示效果,主要是通过设置行号和应用代码高亮样式来实现。以下将详细介绍如何操作。 首先,为了在Word中显示代码行号,你可以采取以下步骤: 1. **插入代码样式...

    pascal高亮显示文件

    - 指定哪些文件扩展名会被识别为Pascal文件并应用相应的高亮显示规则。这里定义了`.PAS`、`.INC`和`.DEF`三种文件扩展名。 - **注释**: - `BlockCommentOn=(* BlockCommentOff=*) BlockCommentOnAlt={ ...

    使用activiti工作流引擎显示流程图时高亮显示流程图中已执行节点和已执行路径方法源代码

    在使用Activiti时,为了更好地理解流程状态和追踪执行过程,开发者往往需要实现流程图的高亮显示功能,突出已执行的节点和路径。本篇文章将深入探讨如何实现这一功能。 首先,我们要了解Activiti的基本概念。...

    高亮显示关键字 -- js插件

    这个"高亮显示关键字 -- js插件"显然是一款用JavaScript编写的插件,旨在帮助用户更清晰地识别和突出显示特定的关键字或短语。JavaScript作为一种广泛使用的客户端脚本语言,适用于在用户的浏览器上运行,实现动态...

    excel-vba-高亮显示当前行代码.doc

    excel-vba-高亮显示当前行代码.doc

    lucene高亮显示

    Lucene的高亮显示是指在搜索结果中,对匹配查询关键词的部分进行突出显示,通常用不同颜色或者加粗等方式实现。这不仅能够帮助用户迅速识别搜索结果的相关性,还能提高搜索结果的可读性和吸引力。 #### 二、高亮...

    C++代码高亮显示

    在本文中,我们将深入探讨C++语言在Visual Studio 2010(VS2010)中的代码高亮显示特性,以及如何在该环境中启用和使用这一功能。 首先,代码高亮显示是指在编辑器中使用不同的颜色和样式来突出显示代码的不同部分...

    Unity3D鼠标点击物体高亮显示

    基于Highlighting System插件的鼠标选中物体时,使物体高亮显示。在这个插件的基础上,改动部分没必要的功能,使物体可以高亮显示。直接调用该脚本里的方法就可实现物体高亮显示。

    代码高亮显示javascript插件

    "代码高亮显示JavaScript插件"是专门用于在Web页面中美化和突出显示JavaScript代码的工具,它能够将原始的黑白文本代码转换为具有不同颜色、字体和样式的视觉盛宴。本文将深入探讨这一主题,详细介绍JavaScript代码...

    react-reactmarker高亮显示关键字并为您的文字添加颜色

    React-ReactMarker是一款用于在文本中高亮显示关键字并为文字添加颜色的库,特别适合于需要突出显示代码示例、搜索结果或者任何其他需要强调特定词汇的场景。这款库是基于React构建的,因此它能够很好地融入到React...

Global site tag (gtag.js) - Google Analytics