ArcGIS Runtime SDK for Android 学习(6):绘制几何图形

1.创建Android项目   

2.添加Runtime SDK依赖   

3.添加权限及OpenGL ES支持

前三步本文省略,初学者可参照ArcGIS Runtime SDK for Android 学习笔记(1):第一个地图应用程序(二维)

4.设置界面布局

在layout中的布局XML中添加:

    <!-- MapView控件 -->
    <com.esri.arcgisruntime.mapping.view.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.esri.arcgisruntime.mapping.view.MapView>

5.编写代码:

(1)变量准备:

private MapView mMapView;

(2)绘制方法代码:

private Envelope createEnvelope() {
    //通过最大最小xy坐标和一个空间参考创建外接矩形
    Envelope envelope = new Envelope(-123.0, 33.5, -101.0, 48.0, SpatialReferences.getWgs84());
    return envelope;
  }

  private Point createPoint() {
    //通过xy坐标和一个空间参考创建一个点
    Point pt = new Point(34.056295, -117.195800, SpatialReferences.getWgs84());
    return pt;
  }

  private Multipoint createMultipoint() {
    //通过PointCollection对象创建一个多点对象
    PointCollection stateCapitalsPST = new PointCollection(SpatialReferences.getWgs84());
    stateCapitalsPST.add(-121.491014, 38.579065); 
    stateCapitalsPST.add(-122.891366, 47.039231); 
    stateCapitalsPST.add(-123.043814, 44.93326); 
    stateCapitalsPST.add(-119.766999, 39.164885);
    Multipoint multipoint = new Multipoint(stateCapitalsPST);
    return multipoint;
  }

  private Polyline createPolyline() {
    //通过PointCollection对象创建多线
    PointCollection borderCAtoNV = new PointCollection(SpatialReferences.getWgs84());
    borderCAtoNV.add(-119.992, 41.989);
    borderCAtoNV.add(-119.994, 38.994);
    borderCAtoNV.add(-114.620, 35.0);
    Polyline polyline = new Polyline(borderCAtoNV);
    return polyline;
  }

  private Polygon createPolygon() {
    //通过PointCollection对象创建多边形
    PointCollection coloradoCorners = new PointCollection(SpatialReferences.getWgs84());
    coloradoCorners.add(-109.048, 40.998);
    coloradoCorners.add(-102.047, 40.998);
    coloradoCorners.add(-102.037, 36.989);
    coloradoCorners.add(-109.048, 36.998);
    Polygon polygon = new Polygon(coloradoCorners);
    return polygon;
  }

(3)Activity的onCreate方法中:

    // 通过Layout中获取MapView控件对象
    mMapView = (MapView) findViewById(R.id.mapView);
    //创建一个以地形图为地图的地图对象
    final ArcGISMap mMap = new ArcGISMap(Basemap.createTopographic());
    //设置地图在MapView控件中显示
    mMapView.setMap(mMap);
    //为绘制图形创建color颜色和symbol符号对象
    SimpleMarkerSymbol markerSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.Style.TRIANGLE, Color.BLUE, 14);
    SimpleFillSymbol fillSymbol = new SimpleFillSymbol(SimpleFillSymbol.Style.CROSS, Color.BLUE, null);
    SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbol.Style.SOLID, Color.BLUE, 3);

    //添加一个点、多点、多线、多边形图形
    GraphicsOverlay overlay = new GraphicsOverlay();
    mMapView.getGraphicsOverlays().add(overlay);
    overlay.getGraphics().add(new Graphic(createPolygon(), fillSymbol));
    overlay.getGraphics().add(new Graphic(createPolyline(), lineSymbol));
    overlay.getGraphics().add(new Graphic(createMultipoint(), markerSymbol));
    overlay.getGraphics().add(new Graphic(createPoint(), markerSymbol));

    //使用外接矩形设置地图的视点
    mMapView.setViewpointGeometryAsync(createEnvelope(), getResources().getDimension(R.dimen.viewpoint_padding));

6.运行APP:


感谢luq老师的指导

感谢luq老师的指导

猜你喜欢

转载自blog.csdn.net/smart3s/article/details/81046361