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 ...
随机推荐
- 全面学习ORACLE Scheduler特性(9)创建Chains
五.使用Chains 今天要来认识一位新同学:CHAIN(注意不要敲成CHINA).CHAIN可以被视做一组Programs的复合,举个简单的例子:运行PROGRAM:A以及PROGRAM:B,如果成 ...
- Kafka~消费的有效期
消息的过期时间 我们在使用Kafka存储消息时,如果已经消费过了,再永久存储是一种资源的浪费,所有,kafka为我们提供了消息文件的过期策略,可以通过配置server.properies来实现# vi ...
- 读《实战GUI自动化测试》之:第三步,如何提高测试结果分析的效率
转自:http://www.ibm.com/developerworks/cn/rational/r-cn-guiautotesting3/ 所谓自动化测试,就是“自动化”+“测试”.自动化本身显然不 ...
- Java学习3_一些基础3_16.5.7
字符串的一些常用方法: int length() String replace(CharSequence oldString,CharSequence newString) 用新字符串代替原字符串,返 ...
- DropDownList 递归绑定分子公司信息
/// <summary> /// 绑定下拉框 /// </summary> /// <param name="ddl">绑定控件名称</ ...
- JS模拟CSS3动画-贝塞尔曲线
一.什么是贝塞尔曲线 1962年,法国工程师皮埃尔·贝塞尔(Pierre Bézier),贝塞尔曲线来为为解决汽车的主体的设计问题而发明了贝塞尔曲线.如今,贝赛尔曲线是计算机图形学中相当重要的一种曲线 ...
- 类似倒圆角方法输入半径选择实体 kword
ads_name ename; ads_point adspt; acedInitGet(NULL, TEXT("R")); while (1) { int rc = acedEn ...
- Python基础之简介
参考原文 廖雪峰Python教程 什么是Python? Python是一种计算机程序设计语言,又被称为胶水语言,它是高级的编程语言. Python能干什么? 网站后端程序员.自动化运维.数据分析师.游 ...
- mac os 10.10解决pod问题
转一下 http://leancodingnow.com/how-to-get-cocoapods-work-on-yosemite/
- Javascript 原型链与constructor
Javascript中的constructor与prototype 在学习javascript面向对象编程的过程中, constructor和prototype一直让我觉得理解不透,慢慢的学习过程中记 ...