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为网络图层地址。

 

  1. private void initLayer() {  
  2.           
  3.         mapView.addLayer(new ArcGISTiledMapServiceLayer(  
  4.                 TILED_WORLD_STREETS_URL));  
  5.           
  6.         graphicsLayer = new GraphicsLayer();  
  7.         mapView.addLayer(graphicsLayer);  
  8.   
  9.         Polygon polygon = new Polygon();  
  10.         polygon.startPath(new Point(1.2575908509778766E7,2879410.9266042486));  
  11.         polygon.lineTo(new Point(1.284360696117901E7,3021972.232083669));  
  12.         polygon.lineTo(new Point(1.2826182801620414E7,2713089.403544925));  
  13.         Map<String, Object> attr1 = new HashMap<>();  
  14.         attr1.put("name", "广州");  
  15.         attr1.put("mark", "广州是南方的城市");  
  16.         Graphic graphic1 = new Graphic(polygon, new SimpleFillSymbol(Color.RED),attr1);  
  17.         graphicsLayer.addGraphic(graphic1);  
  18.           
  19.           
  20.         Polygon polygon2 = new Polygon();  
  21.         polygon2.startPath(new Point(1.3388507951011453E7,3611225.628065273));  
  22.         polygon2.lineTo(new Point(1.3607101952746565E7,3858331.890896268));  
  23.         polygon2.lineTo(new Point(1.3613438010767872E7,3449656.14852193));  
  24.         Map<String, Object> attr2 = new HashMap<>();  
  25.         attr2.put("name", "上海");  
  26.         attr2.put("mark", "上海是中部的城市");  
  27.         Graphic graphic2 = new Graphic(polygon2, new SimpleFillSymbol(Color.GREEN),attr2);  
  28.         graphicsLayer.addGraphic(graphic2);  
  29.           
  30.   
  31.     }

效果图如下:


准备工作完成后,设置MapView的点击事件,

 

  1. mapView.setOnSingleTapListener(new OnSingleTapListener() {  
  2.               
  3.             @Override  
  4.             public void onSingleTap(float x, float y) {  
  5.                 // TODO Auto-generated method stub  
  6.                 handleSingleTap(x,y);  
  7.             }  
  8.         });

 

在handleSingleTap方法中来处理查询事件,GraphicsLayer查询要用到getGraphicIDs(float x, float y, int tolerance, int numberOfResults)或者getGraphicIDs(float x, float y, int tolerance)方法,前面两个参数是地图点击时的

x与y的值,tolerance是围绕x与y这个点所查询的范围,numberOfResults是要返回结果的大小。

 

 

 

  1. /**  
  2.  * GraphicsLayer的点击查询  
  3.  * @param x  
  4.  * @param y  
  5.  */  
  6. protected void handleSingleTap(float x, float y) {  
  7.       
  8.     int[] graphicIds = graphicsLayer.getGraphicIDs(x, y, 8);  
  9.     if (graphicIds!=null&&graphicIds.length>0) {  
  10.         for (int i = 0; i graphicIds.length; i++) {  
  11.             Graphic graphic = graphicsLayer.getGraphic(graphicIds[i]);  
  12.             Map<String,Objectattr = graphic.getAttributes();  
  13.             Log.i(TAG, attr.get("name")+"===="+attr.get("mark"));  
  14.         }  
  15.     }  
  16. }这样当我们点击要素时,会打出以下的信息。 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751872.html ,如需转载请自行联系原作者




相关文章
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
251 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
221 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
552 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
3月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
511 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
2月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
135 0
|
API Android开发 容器
Android官方入门文档[17]构建灵活的UI
Android官方入门文档[17]构建灵活的UI Building a Flexible UI构建灵活的UI   This lesson teaches you to1.
1067 0
|
Android开发 容器
Android官方入门文档[18]与其他碎片通信
Android官方入门文档[18]与其他碎片通信 Communicating with Other Fragments与其他碎片通信   This lesson teaches you to1.
1053 0
|
XML Android开发 数据格式
Android官方入门文档[6]添加Action按钮
Android官方入门文档[6]添加Action按钮   Adding Action Buttons添加Action按钮   This lesson teaches you to1.
1115 0
|
Android开发 UED
Android官方入门文档
Android官方入门文档   欢迎来到为Android开发者的培训。在这里,你会发现套课中,描述了如何实现代码示例中的应用程序,你可以重复使用一个特定的任务类。
1261 0
|
开发工具 Android开发 开发者
Android官方入门文档[2]运行你的应用程序
Android官方入门文档[2]运行你的应用程序   Running Your App运行你的应用程序   This lesson teaches you to1.
1278 0