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老师的指导