Arcgis for Android的地图操作里,放大缩小地图、图层切换、定位、测距测面等都是它的一些基本操作,封装后一般调用就是了,很简单。不过最近有了个需求,在地图上画一个多边形时候同时进行多边形的边长、周长和面积的计算,于是重新又写了下这个方法。代码不难,但是觉得挺有意思,于是写博文记录一下。
首先,需要在地图上画多边形。我们看到的每个地图都是一个图层,要在地图上画个多边形,就是在图层上加载一个图形,而这个图形就是用Graphic类来实现的。从Graphic最简单的构造函数:
public Graphic(Geometry geometry, Symbol symbol)我们可以看出,它主要由一个Geometry和一个Symbol构成。Geometry代表着所有0.1.2维几何图形,常用的包含了Point(点),Line(线段),Polyline(折线),Polygon(面)等。Symbol代表着这些几何图形的样式,比如点线面的大小和颜色等。
了解了基本信息以后,首先要执行的是点击地图画多边形,点击事件是:
mMapView.setOnSingleTapListener(new OnSingleTapListener() { @Override public void onSingleTap(float v, float v1) { PointToDrawPolygon(v, v1); } });传的两个参数分别是屏幕的坐标。
然后就是画多边形了。首先每次先要把图层清空一下,如果不清空,将会保留之前画的图形。想象一下,就是比如我们第三个点时候画了一个三角形,然后按第四个点时候画了一个四边形,如果不清空的话,就是四边形覆盖在三角形上的样子。
if (messureGraphicsLayer!=null){ messureGraphicsLayer.removeAll(); }接下来是将屏幕点转为地图上的点,并设置样式画上去:
Point mPoint = diitMapView.toMapPoint(v, v1);//选择点 mPoints.add(mPoint);//选择点加入点的集合 Graphic messurePoint = new Graphic(mPoint, symbolFactory.createMeasureMarkerSymbol());//点的要素初始化 messureGraphicsLayer.addGraphic(messurePoint);//点的要素添加到图层这里说下Symbol类,主要有一下几种: