2.ArcGIS Runtime SDK for Android-使用渲染器在地图中添加图形覆盖物
2018-03-13 16:45
1096 查看
1-思路
2-几个概念
3-添加图形覆盖物的方法
4添加点、线及多边形
首先按照1.ArcGIS Runtime SDK for Android-第一个地图应用做好准备,在其基础上进行下面的操作。
图形:图形是内存中的功能,它提供了在地图上显示几何图形的基本方法。图形是独一无二的,因为它们可以使用渲染器为包含它们的叠加层或通过将符号直接应用于图形来符号化。
渲染器:顾名思义,渲染器是决定图层中的特征或图形如何在显示器上呈现(绘制)的对象。渲染器然后使用符号绘制它们。
使用渲染器可以实现:
①无论属性值如何,对图层中的所有要素(或叠加层中的所有图形)使用一个符号
②根据一个或多个属性值对图层中的要素(或叠加层中的图形)进行不同的标记
结果图如下所示:
2-几个概念
3-添加图形覆盖物的方法
4添加点、线及多边形
首先按照1.ArcGIS Runtime SDK for Android-第一个地图应用做好准备,在其基础上进行下面的操作。
1-思路
以点为例(线和多边形思路相同),思路如下:2-几个概念
符号:符号定义图形或特征外观的所有非地理方面,包括颜色,大小,边框和透明度。符号不是在地图上表示的东西。相反,它控制着这些东西(图形或功能)的显示方式。图形:图形是内存中的功能,它提供了在地图上显示几何图形的基本方法。图形是独一无二的,因为它们可以使用渲染器为包含它们的叠加层或通过将符号直接应用于图形来符号化。
渲染器:顾名思义,渲染器是决定图层中的特征或图形如何在显示器上呈现(绘制)的对象。渲染器然后使用符号绘制它们。
使用渲染器可以实现:
①无论属性值如何,对图层中的所有要素(或叠加层中的所有图形)使用一个符号
②根据一个或多个属性值对图层中的要素(或叠加层中的图形)进行不同的标记
3-添加图形覆盖物的方法
首先在onCreate方法中添加如下代码,此处将添加图形覆盖物的方法提取出来://获取MapView对象 mMapView = findViewById(R.id.mapView); //创建一个具有底图的底图,类型为TOPOGRAPHIC ArcGISMap mMap = new ArcGISMap(Basemap.Type.TOPOGRAPHIC, 15.169193, 16.333479, 2); //添加图形覆盖物 addGraphicsOverlay(); //设置在视图中显示地图 mMapView.setMap(mMap);
4添加点、线及多边形
完整代码如下,讲解看注释:public class MainActivity extends AppCompatActivity {
private MapView mMapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取MapView对象 mMapView = findViewById(R.id.mapView); //创建一个具有底图的底图,类型为TOPOGRAPHIC ArcGISMap mMap = new ArcGISMap(Basemap.Type.TOPOGRAPHIC, 15.169193, 16.333479, 2); //添加图形覆盖物 addGraphicsOverlay(); //设置在视图中显示地图 mMapView.setMap(mMap);
}
private void addGraphicsOverlay() {
//1、创建一个虚拟的点,,包含x,y坐标及空间参考
Point poinGeometry = new Point(40e5, 40e5, SpatialReferences.getWebMercator());
//2、将虚拟的点变为图形
Graphic pointGraphic = new Graphic(poinGeometry);
//3、创建一个表示点的符号-红色、菱形、大小为10
SimpleMarkerSymbol pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.DIAMOND, Color.RED, 10);
//4、创建简单的渲染器,并将线的符号添加到渲染器
SimpleRenderer pointRenderer = new SimpleRenderer(pointSymbol);
//5、为点创建图形覆盖物
GraphicsOverlay pointGraphicsOverlay = new GraphicsOverlay();
//6、将渲染器和图形添加到图形覆盖物中
pointGraphicsOverlay.setRenderer(pointRenderer);
pointGraphicsOverlay.getGraphics().add(pointGraphic);
//7、添加图形覆盖物到MapView中
mMapView.getGraphicsOverlays().add(pointGraphicsOverlay);
//1、创建一条虚拟的线,包含两个点及空间参考
PolylineBuilder lineGeometry = new PolylineBuilder(SpatialReferences.getWebMercator());
lineGeometry.addPoint(-10e5,40e5);
lineGeometry.addPoint(20e5,50e5);
//2、将虚拟的线变为图形
Graphic lineGraphic = new Graphic(lineGeometry.toGeometry());
//3、创建一个表示改线的符号-实心、蓝线、宽度为5
SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 5);
//4、创建一个简单的渲染器,并将表示线的符号添加到渲染器
SimpleRenderer lineRenderer = new SimpleRenderer(lineSymbol);
//5、创建图形覆盖物
GraphicsOverlay lineGraphicsOverlay = new GraphicsOverlay();
//6、将渲染器和图像添加到覆盖物中
lineGraphicsOverlay.setRenderer(lineRenderer);
lineGraphicsOverlay.getGraphics().add(lineGraphic);
//7、最终将创建的线图形覆盖物添加到地图视图中
mMapView.getGraphicsOverlays().add(lineGraphicsOverlay);
//1、创建一个虚拟的多边形
PolygonBuilder polygonGeometry = new PolygonBuilder(SpatialReferences.getWebMercator());
polygonGeometry.addPoint(-20e5, 20e5);
polygonGeometry.addPoint(20e5, 20e5);
polygonGeometry.addPoint(20e5, -20e5);
polygonGeometry.addPoint(-20e5, -20e5);
//2、将虚拟的多边形变为图形
Graphic polygonGraphic = new Graphic(polygonGeometry.toGeometry());
//3、创建一个表示多边形的符号,实心、黄色
SimpleFillSymbol polygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.YELLOW, null);
//4、创建一个渲染器,并将符号添加到渲染器
SimpleRenderer polygonRenderer = new SimpleRenderer(polygonSymbol);
//5、创建图形覆盖物,并将渲染器和图形添加到覆盖物当中
GraphicsOverlay polygonGraphicOverlay = new GraphicsOverlay();
polygonGraphicOverlay.setRenderer(polygonRenderer);
polygonGraphicOverlay.getGraphics().add(polygonGraphic);
//6、将图形覆盖物添加到地图视图中
mMapView.getGraphicsOverlays().add(polygonGraphicOverlay);
}
@Override
protected void onPause() {
super.onPause();
mMapView.pause();
}
@Override
protected void onResume() {
super.onResume();
mMapView.resume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mMapView.dispose();
}
}
结果图如下所示:
相关文章推荐
- ArcGIS for Android Runtime 100 升级实践(一)地图加载,图形和符号初始化
- ArcGIS Runtime SDK for iOS开发地图图层-图形图层
- ArcGIS for Android Runtime100 基本操作(六)——移动地图包MMPK的使用
- ArcGIS Runtime SDK For Android 10.2.x版本之地图弹框Callout
- 《ArcGIS Runtime for Android 100.2.1学习笔记》一:配置在线SDK及加载在线地图
- 1.ArcGIS Runtime SDK for Android-第一个地图应用
- ArcGIS Runtime SDK for Android 10.2.5新开发平台安装配置指南
- 使用ArcGIS API for Flex构建Android和iOS移动地图应用程序
- ArcGIS Runtime SDK for Android开发之调用GP服务(异步调用)
- ArcGIS Runtime SDK for Android 2.0发布啦!
- ArcGIS for Android示例解析之添加地图服务-----AddLayer
- ArcGIS Runtime SDK for iOS 开发之地图范围(map extent)
- ArcGIS Runtime for Android 使用异步GP服务绘制等值线
- Arcgis Runtime sdk for android 授权
- ArcGIS Runtime SDK for iOS 开发之加载地图
- ArcGIS Runtime SDK for iOS开发系列教程(8)——Geoprocessor使用
- ArcGIS for Android 之本地离线地图添加(LocalTitledLayer)
- ArcGIS Runtime for Android 使用异步GP服务绘制等值线
- 【移动产品】ArcGIS Runtime SDK for Android v1.1.1发布
- ArcGIS Runtime SDK For Android 授权方法(去除水印)