将图形叠加添加到地图视图
-
在文件app > java > {your.package.name} > MainActivity.java中,创建一个新的成员变量来保存对图形叠加层的引用。您将使用此图形叠加层作为容器在地图上显示点,线和多边形。
private GraphicsOverlay mGraphicsOverlay;
-
创建一个名为的新成员函数
createGraphicsOverlay
。在其中,创建一个GraphicsOverlay
对象,将其分配给成员变量,并将其添加到地图视图中。private void createGraphicsOverlay() { mGraphicsOverlay = new GraphicsOverlay(); mMapView.getGraphicsOverlays().add(mGraphicsOverlay); }
添加点图形
-
将点图形添加到图形叠加层。创建一个名为的新成员函数
createPointGraphics
。在新函数内部,创建点几何和标记符号,然后将这些符号分配给图形。然后将图形添加到图形叠加层。将图形叠加添加到地图视图中的叠加集合后,添加以下代码。private void createPointGraphics() { Point point = new Point(-118.69333917997633, 34.032793670122885, SpatialReferences.getWgs84()); SimpleMarkerSymbol pointSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.CIRCLE, Color.rgb(226, 119, 40), 10.0f); pointSymbol.setOutline(new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 2.0f)); Graphic pointGraphic = new Graphic(point, pointSymbol); mGraphicsOverlay.getGraphics().add(pointGraphic); }
添加折线图
-
要绘制到地图的线图,请创建一个名为的新成员函数
createPolylineGraphics
。在新函数内部,从点集合和线符号创建线几何,然后将它们分配给新图形。将图形添加到图形叠加层。private void createPolylineGraphics() { PointCollection polylinePoints = new PointCollection(SpatialReferences.getWgs84()); polylinePoints.add(new Point(-118.67999016098526, 34.035828839974684)); polylinePoints.add(new Point(-118.65702911071331, 34.07649252525452)); Polyline polyline = new Polyline(polylinePoints); SimpleLineSymbol polylineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 3.0f); Graphic polylineGraphic = new Graphic(polyline, polylineSymbol); mGraphicsOverlay.getGraphics().add(polylineGraphic); }
添加多边形图形
-
添加多边形图形。创建一个名为的新成员函数
createPolygonGraphics
。在新函数内部,从点集合和填充符号创建多边形几何,然后将这些几何分配给多边形图形。将图形添加到图形叠加层。private void createPolygonGraphics() { PointCollection polygonPoints = new PointCollection(SpatialReferences.getWgs84()); polygonPoints.add(new Point(-118.70372100524446, 34.03519536420519)); polygonPoints.add(new Point(-118.71766916267414, 34.03505116445459)); polygonPoints.add(new Point(-118.71923322580597, 34.04919407570509)); polygonPoints.add(new Point(-118.71631129436038, 34.04915962906471)); polygonPoints.add(new Point(-118.71526020370266, 34.059921300916244)); polygonPoints.add(new Point(-118.71153226844807, 34.06035488360282)); polygonPoints.add(new Point(-118.70803735010169, 34.05014385296186)); polygonPoints.add(new Point(-118.69877903513455, 34.045182336992816)); polygonPoints.add(new Point(-118.6979656552508, 34.040267760924316)); polygonPoints.add(new Point(-118.70259112469694, 34.038800278306674)); polygonPoints.add(new Point(-118.70372100524446, 34.03519536420519)); Polygon polygon = new Polygon(polygonPoints); SimpleFillSymbol polygonSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.SOLID, Color.rgb(226, 119, 40), new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 2.0f)); Graphic polygonGraphic = new Graphic(polygon, polygonSymbol); mGraphicsOverlay.getGraphics().add(polygonGraphic); }
把它们放在一起
-
创建一个新的成员函数来组装新图形,首先创建图形叠加,然后调用每个创建图形函数。
private void createGraphics() { createGraphicsOverlay() createPointGraphics() createPolylineGraphics() createPolygonGraphics() }
-
更新
onCreate()
后调用新createGraphics()
函数setupMap()
。protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMapView = findViewById(R.id.mapView); setupMap(); // ** ADD ** createGraphics(); }
-
按Control-R在模拟器中运行应用程序。您应该看到多边形图形轮廓佩珀代因大学校园,马里布海滩上的一个点,以及从海滩到山脉的线段。
恭喜你,你已经完成了!