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

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

HighlightFeatures

要素高亮化功能,相信有其他gis开发经营的开发人员都有过相应的实现经验,对于高亮要素,简单说起来就是我们查询的或识别出来的要素进行渲染,让其突出显示而已,这个例子中涉及后面要介绍的识别的内容,我们只简单介绍相关的知识,主要介绍要素对象的渲染(也就是所谓的高亮),来看代码:




mapView.setOnLongPressListener(new OnLongPressListener() {

public
void
 onLongPress(float x,float y)
{

try {

if (tiledMapServiceLayer.isInitialized()
&& selectedLayerIndex >= 0) {

graphicsLayer.removeAll();

/*

*点击地图的点

*/

Point pointClicked = mapView.toMapPoint(x, y);

/*

* 识别任务所需的参数,初始化相应的值

*/

IdentifyParameters inputParameters
new IdentifyParameters();

inputParameters.setGeometry(pointClicked);

inputParameters.setLayers(new int[] {
layerIndexes[selectedLayerIndex] });

Envelope env = new Envelope();

mapView.getExtent().queryEnvelope(env);

inputParameters.setSpatialReference(mapView.getSpatialReference());

inputParameters.setMapExtent(env);

inputParameters.setDPI(96);

inputParameters.setMapHeight(mapView.getHeight());

inputParameters.setMapWidth(mapView.getWidth());

inputParameters.setTolerance(10);

/*

* 这是我们自己扩展的类,在其中主要实现了IdentifyTask的请求

*/

MyIdentifyTask mIdenitfy
new MyIdentifyTask();

//执行异步操作并将参数传入异步操作中

mIdenitfy.execute(inputParameters);

else {

Toast toast = Toast.makeText(getApplicationContext(), "Please
select a layer to identify features from.",

Toast.LENGTH_SHORT);

toast.show();

}

catch (Exception ex) {

ex.printStackTrace();

}

}

});

上面的代码中,主要给地图添加了一个长按地图事件监听,在事件处理函数中主要做了初始化识别任务的参数及其执行我们扩展的MyIdentifyTask操作,MyIdentifyTask其实就是一个异步请求类,下面我们来看看,这异步请求类做了什么,代码如下:




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) {

// TODO Auto-generated method stub

if (results
!= null && results.length > 0) {

//生成要素对象数组

highlightGraphics
new Graphic[results.length];

Toast toast = Toast.makeText(getApplicationContext(),
results.length + " features identified\n",

Toast.LENGTH_LONG);

toast.setGravity(Gravity.BOTTOM, 0, 0);

toast.show();

for (int i
= 0; i < results.length; i++) {

Geometry geom = results[i].getGeometry();

String typeName = geom.getType().name();

//在这里我们进行要素的高亮显示,也就是要素渲染工作

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]);

clearButton.setEnabled(true);

}

else {

Toast toast = Toast.makeText(getApplicationContext(), "No
features identified.", Toast.LENGTH_SHORT);

toast.show();

}

}

@Override

protected
void
 onPreExecute()
{

mIdentifyTask
new IdentifyTask(mapURL);//初始化识别任务实例

}

}

在这里我们可以看到,这个异步类主要做了实例化识别任务对象,并且执行识别任务,返回的结果再进行渲染显示,对于Android中的异步类AsyncTask应该有所了解吧,简单介绍一下他的执行过程,当我们生成AsyncTask实例并执行execute()方法后,他的内部还是执行顺序为onPreExecute()à
doInBackground()àonPostExecute()

这样我们的高亮功能示例就介绍完成了,要想实现不同的、五彩缤纷的效果那就需要我们深入了解要素的渲染类及其相关的特性。

时间: 2024-10-24 00:13:05

ArcGIS for Android示例解析之高亮要素-----HighlightFeatures的相关文章

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

转自:http://blog.csdn.net/wozaifeiyang0/article/details/7327423 LocalTiledLayer 看到这个标题是否是很激动,如题,该示例就是添加一个离线地图,这应该是很多开发人员期盼已久的功能了吧,正式版一处这个应该是一个很大的亮点,原来操作离线地图如此简单,下面来看一下代码: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceSta

ArcGIS for Android示例解析之空间查询-----QueryTask

转自:http://blog.csdn.net/wozaifeiyang0/article/details/7331450 QueryTask 查询功能在GIS中是一个不可或缺的重要功能,示例中提供了一个属性查询的Demo,下面来看一下在Android中我们怎样实现一个查询功能, 1.              我们在布局文件中添加了一个按钮,并且在代码中添加了这个按钮的点击事件监听: 2.              自定义一个 AsyncTask的扩展类,在此类中我们实现了查询功能. 3.  

Android 图表绘制 achartengine 示例解析

作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38420197 一. AChartEngine 简介 1. 项目地址 AChartEngine 简介 : AChartEngine 是 Android 平台的图表开发库, 能绘制 折线图, 饼图, 气泡图, 柱状图, 散点图, 面积图等统计图表; 最新版本 : 1.1.0 版本; AChartEngine 地址 : https://code.google.co

ArcGIS for Android离线数据编辑实现原理

来自:http://blog.csdn.net/arcgis_mobile/article/details/7565877 ArcGIS for Android中现已经提供了离线缓存图片的加载功能,极大的提高了我们访问地图的效率,对于离线的数据编辑暂时还不支持,而现在对于离线数据编辑操作的需求越来越多,那我们如何才能实现离线数据编辑功能呢?下面我们介绍一下,通过sqlite来实现离线数据编辑的解决方案.     一.离线数据编辑解决方案 离线编辑无非就是将所需的数据下载到我们的手持端进行存储,当

ArcGIS for Android地图控件的5大常见操作

原文地址: ArcGIS for Android地图控件的5大常见操作 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/7801467   GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for

ArcGIS for Android学习(一)

GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map.MapControl类的作用是一样的. 地图常见的操作有缩放.旋转.平移.获取范围.比例尺.分辨率等信息,以及常用的手势操作,其中,经常使用到的功能和常见问题有以下几个: 1)将地图缩放到指定的比例尺/

Arcgis for Android解决定位结果与地图偏移的简单处理思维

在进行Arcgis for Android的开发时,遇到过这样的问题:Arcgis Online上的地图资源与GPS定位结果不能够匹配,如下图所示: 这个效果可不是我们所需要的,所以必须对地图或者GPS信号做纠正,但是如果你用的是Arcgis Online上的地图资源的话,地图这一块你是无法做解析的,只能从GPS信号着手. 首先,我调用的Arcgis Online上的地图资源的url为http://cache1.arcgisonline.cn/ArcGIS/rest/services/China

Arcgis for android的离线数据库小记

最近在使用arcgis for android,要实现本地数据的编辑,esri的解决方案搞的太复杂,遇到了不少问题,特此记录 1.Desktop生成的runtime geodatabase无法在本地进行编辑,该数据库是只读的. 2.加载Desktop生成的runtime geodatabase后,如果需要从Server下载geodatabase,会出现下载失败的情况. 我这里服务的日志显示的是unable create srs from json,我的Desktop生成的runtime geod

外业数据采集平台(GPS+Android Studio+Arcgis for android 100.2.1)

欢迎加入QQ沟通交流群:186178114(群名:外业数据采集(GIS+GPS)) 外业数据采集平台 1. 综述 在室外,通过平板或者手机接收GPS坐标,实时绘制点.线.面数据,以便为后续进行海域监测.土地确权.地图绘图提供有效数据和依据. 2. 技术路线 Android studio3.0.1+Arcgis for android 100.2.1+GPS 2.1 Android studio工具: 2.2 Android studio工具下载地址: http://www.android-stu