Android GIS开发系列-- 入门季(4) GraphicsLayer的点击查询要素
上一讲中我们学会了如何在MapView中添加Graphic要素,那么在百度或高德地图中,当我们点击要素时,会显示出相应的详细信息。在GraphicsLayer中也提供了这样的方法。下面我们来学习在GraphicsLayer中如何点击查找要素。 首先在MapView中添加两个Graphic要素。代码如下,注意这里用Graphic(Geometry geometry, Symbol symbol, Map<String, Object> attributes)来实例化Graphic,Map<String, Object> attributes是要素的属性值。详细见以下代码。TILED_WORLD_STREETS_URL为网络图层地址。
- private void initLayer() {
 - mapView.addLayer(new ArcGISTiledMapServiceLayer(
 - TILED_WORLD_STREETS_URL));
 - graphicsLayer = new GraphicsLayer();
 - mapView.addLayer(graphicsLayer);
 - Polygon polygon = new Polygon();
 - polygon.startPath(new Point(1.2575908509778766E7,2879410.9266042486));
 - polygon.lineTo(new Point(1.284360696117901E7,3021972.232083669));
 - polygon.lineTo(new Point(1.2826182801620414E7,2713089.403544925));
 - Map<String, Object> attr1 = new HashMap<>();
 - attr1.put("name", "广州");
 - attr1.put("mark", "广州是南方的城市");
 - Graphic graphic1 = new Graphic(polygon, new SimpleFillSymbol(Color.RED),attr1);
 - graphicsLayer.addGraphic(graphic1);
 - Polygon polygon2 = new Polygon();
 - polygon2.startPath(new Point(1.3388507951011453E7,3611225.628065273));
 - polygon2.lineTo(new Point(1.3607101952746565E7,3858331.890896268));
 - polygon2.lineTo(new Point(1.3613438010767872E7,3449656.14852193));
 - Map<String, Object> attr2 = new HashMap<>();
 - attr2.put("name", "上海");
 - attr2.put("mark", "上海是中部的城市");
 - Graphic graphic2 = new Graphic(polygon2, new SimpleFillSymbol(Color.GREEN),attr2);
 - graphicsLayer.addGraphic(graphic2);
 - }
 
效果图如下:
准备工作完成后,设置MapView的点击事件,
- mapView.setOnSingleTapListener(new OnSingleTapListener() {
 - @Override
 - public void onSingleTap(float x, float y) {
 - // TODO Auto-generated method stub
 - handleSingleTap(x,y);
 - }
 - });
 
在handleSingleTap方法中来处理查询事件,GraphicsLayer查询要用到getGraphicIDs(float x, float y, int tolerance, int numberOfResults)或者getGraphicIDs(float x, float y, int tolerance)方法,前面两个参数是地图点击时的
x与y的值,tolerance是围绕x与y这个点所查询的范围,numberOfResults是要返回结果的大小。
- /**
 - * GraphicsLayer的点击查询
 - * @param x
 - * @param y
 - */
 - protected void handleSingleTap(float x, float y) {
 - int[] graphicIds = graphicsLayer.getGraphicIDs(x, y, 8);
 - if (graphicIds!=null&&graphicIds.length>0) {
 - for (int i = 0; i < graphicIds.length; i++) {
 - Graphic graphic = graphicsLayer.getGraphic(graphicIds[i]);
 - Map<String,Object> attr = graphic.getAttributes();
 - Log.i(TAG, attr.get("name")+"===="+attr.get("mark"));
 - }
 - }
 - }这样当我们点击要素时,会打出以下的信息。 
 
Android GIS开发系列-- 入门季(4) GraphicsLayer的点击查询要素的更多相关文章
- Android GIS开发系列-- 入门季(14)FeatureLayer之范围查询
		
Android GIS开发系列-- 入门季(5),这篇文章中,我们知道如何去查找要素.现在有一个需求,查找某点5000米范围的要素,那如何来做呢?首先我们需要在地图上画个5000米半径的圆,然后根据Q ...
 - Android GIS开发系列-- 入门季(5) FeatureLayer加载本地shp文件与要素查询
		
FeatureLayer是要素图层,也是Arcgis的主要图层.用这个图层可以加载本地的shp文件.下面我们看怎样加载shp文件到MapView中.查看ArcGis API可知FeatureLayer ...
 - Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面
		
GraphicsLayer是图形图层,可以自定义图形添加到地图上.调用GraphicsLayer的addGraphic方法就能添加图形,此方法要一个Graphic对象,此对象的构造方法是Graphic ...
 - Android GIS开发系列-- 入门季(6)GraphicsLayer添加文字与图片标签
		
一.GraphicsLayer添加图片 GraphicLayer添加图片Graphic,要用到PictureMarkerSymbol,也是样式的一种.添加代码如下: Drawable drawable ...
 - Android GIS开发系列-- 入门季(1) 起点
		
前言 这个系列,待最终完成更新,大家体谅点,第一版本全部是参考的网络教程,最近会逐步的细化更新为可以直接使用的情况. 本系列的开发基于AS ( Android Studio ), 和ArcGIS 的 ...
 - Android GIS开发系列-- 入门季(2) MapView与图层介绍
		
一.MapView MapView是Arcgis中的最基本的类,与高德地图SDK的MapView的重要性一样.MapView的创建有两种方法,一种是在Layout文件中直接写控件.一种是实例化,Map ...
 - Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
		
Gdal是用来读写栅格与矢量数据的,在Gdal官网,可以下载相关的资源进行平台的编译.其实Arcgis底层也是用Gdal来读取shp文件的,那在Android中可以直接读写shp文件吗,是可以的.这里 ...
 - Android GIS开发系列-- 入门季(12) 显示载天地图
		
在项目中可以经常需要动态加载一些图层,像投影地图服务.投影地图服务器.其实网上有大量这样的服务,比如天地图官网, . 随便点开一个服务,里面有相关的信息.那如何加载这样图层服务呢. 一.首先感谢这篇博 ...
 - Android GIS开发系列-- 入门季(10) MapView快速定位到Geometry
		
我们知道某个Geometry的坐标,但不知道具体的位置,该如何使地图快速定位呢?这时需要用到MapView.setExtent方法,来看下这个方法的介绍:Zooms the map to the gi ...
 
随机推荐
- 通过创建元素从而实现三个下拉框的联动效果(create.Element("option"))和提交表单时的验证p.match("请选择")
			
<html> <head> <meta charset="utf-8"> <title>下拉框</title> < ...
 - java 键盘输入多种方法
			
转! 分类: java学习2012-11-04 09:58 8427人阅读 评论(1) 收藏 举报 一.java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有Buf ...
 - LINQ数据库技术
			
LINQ(Language Integrated Qyery),中文名字是语言集成查询.它提供一个统一的编程概念和语法,编程人员不需要关心将要访问的是关系数据库还是XML数据,或是远程的对象,它都采用 ...
 - ES6:Generator函数(1)
			
Generator函数是ES6提供的一种异步编程解决方案.它会返回一个遍历器对象 function* helloWorldGenerator(){ yield “hello”; yield “worl ...
 - 【ZT】在微信上有哪些高情商的说话方式 | M周刊(听语音需要60秒,看文字只需10秒)
			
https://baijiahao.baidu.com/s?id=1590547145580792217&wfr=spider&for=pc https://yuedu.baidu.c ...
 - 如何让不同浏览器调用不同的CSS样式
			
如何让不同浏览器调用不同的CSS样式 由 于对W3C标准支持程度的不同,往往导致同一个CSS样式表在各种Web浏览器中的呈现大相径庭.以目前市场占有率最高的两个浏览器Microsoft Interne ...
 - C语言中结构体大小计算
			
1.普通结构体 struct student { char sex; char a; char b; int age; char name[100]; }; 该结构体大小为108 解答:1.先算str ...
 - dutacm.club_1087_Common Substrings_(KMP)_(结合此题通俗理解kmp的next数组)
			
1087: Common Substrings Time Limit:3000/1000 MS (Java/Others) Memory Limit:163840/131072 KB (Java/ ...
 - HDU_1232_畅通工程
			
Problem Description 某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇.省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道 ...
 - Vue2.0 —生命周期和钩子函数
			
vue生命周期简介 咱们从上图可以很明显的看出现在vue2.0都包括了哪些生命周期的函数了. 生命周期探究 对于执行顺序和什么时候执行,看上面两个图基本有个了解了.下面我们将结合代码去看看钩子函数的执 ...