要素识别
要素识别就是ArcGIS中的Identify,它和上面的Query的区别在于可以执行多个图层的空间过滤,并可以指定一定的容差。要素识别的功能在ArcGIS Android API中的“HighlightFeatures”例子中被使用到了,我们先运行一下这个例子:
图 28 对地图服务进行要素识别
这样的功能实现上和QueryTask非常的类似,只不过调用的对象是IdentifyTask,让我们来简单看一下代码的实现:
IdentifyParameters inputParameters = new IdentifyParameters();
inputParameters.setGeometry(pointClicked);
inputParameters.setUrl("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services
/PublicSafety/PublicSafetyBasemap/MapServer/identify");
inputParameters.setLayers(new int[] { layerIndexes[selectedLayerIndex] });
inputParameters.setMapExtent(mapView.getExtent());
inputParameters.setDPI(96);
inputParameters.setMapHeight(mapView.getHeight());
inputParameters.setMapWidth(mapView.getWidth());
inputParameters.setTolerance(10);
final IdentifyTask identifyAction = new IdentifyTask(inputParameters);
IdentifyResult[] results = identifyAction.execute();
从代码就可以看出来,Identify功能的使用和其它所有的ArcGIS Server API几乎如出一辙,用起来就如同遇见一个老朋友一样。Identify需要指定的最重要参数的就是包括的图层和容差,分别使用setLayers和setTolerance方法实现,这样,ArcGIS Android API就知道需要根据容差对查询的几何对象进行缓冲,然后在上述的若干图层中分别进行空间查询,最后把结果汇总后返回到客户端。