地图标绘(点线面)
/** * 绘制点线面:点击“添加额外服务”后,地图放大缩小拖拽等功能失效 */ add_gService = (Button) findViewById(R.id.add_gservice); add_gService.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { gLayer = new GraphicsLayer(); map.addLayer(gLayer); map.setOnTouchListener(new View.OnTouchListener() { Point previous = null; Polygon polygon = null; @Override public boolean onTouch(View v, MotionEvent event) { float x = event.getX(); float y = event.getY(); Point currPoint = map.toMapPoint(x, y); if (isChoose == true) { previous = null; polygon = null; } if (type == Geometry.Type.POINT) { Graphic graphic = new Graphic(currPoint, symbol); gLayer.addGraphic(graphic); } else { if (previous == null) { previous = currPoint; Graphic graphic = new Graphic(previous, new SimpleMarkerSymbol(Color.RED, 7, SimpleMarkerSymbol.STYLE.CIRCLE)); gLayer.addGraphic(graphic); } else { Graphic graphic = new Graphic(currPoint, new SimpleMarkerSymbol(Color.RED, 7, SimpleMarkerSymbol.STYLE.CIRCLE)); gLayer.addGraphic(graphic); Line line = new Line(); line.setStart(previous); line.setEnd(currPoint); if (type == Geometry.Type.POLYLINE) { Polyline polyline = new Polyline(); polyline.addSegment(line, true); Graphic graphic1 = new Graphic(polyline, symbol); gLayer.addGraphic(graphic1); } else if (type == Geometry.Type.POLYGON) { if (polygon == null) { polygon = new Polygon(); } polygon.addSegment(line, false); Graphic graphic1 = new Graphic(polygon, fillSymbol); gLayer.addGraphic(graphic1); } } } isChoose = false; previous = currPoint; return false; } }); }
});
/** * 动态加载菜单:不占用地图显示空间 */ @Override public boolean onCreateOptionsMenu(Menu menu) { SubMenu pointSubMenu = menu.addSubMenu("点"); pointSubMenu.setHeaderTitle("绘制点"); pointSubMenu.add(0, 0, 0, "红点"); pointSubMenu.add(0, 1, 0, "绿点"); pointSubMenu.add(0, 2, 0, "蓝点"); SubMenu lineSubMenu = menu.addSubMenu("线"); lineSubMenu.setHeaderTitle("绘制线"); lineSubMenu.add(1, 0, 0, "红线"); lineSubMenu.add(1, 1, 0, "绿虚线"); lineSubMenu.add(1, 2, 0, "蓝线"); SubMenu polygonSubMenu = menu.addSubMenu("面"); polygonSubMenu.setHeaderTitle("绘制面"); polygonSubMenu.add(2, 0, 0, "红面"); polygonSubMenu.add(2, 1, 0, "绿面半透明"); polygonSubMenu.add(2, 2, 0, "蓝面"); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem mi) { isChoose = true; switch (mi.getGroupId()) { case 0: type = Geometry.Type.POINT; switch (mi.getItemId()) { case 0: symbol = new SimpleMarkerSymbol(Color.RED, 7, SimpleMarkerSymbol.STYLE.CIRCLE); break; case 1: symbol = new SimpleMarkerSymbol(Color.GREEN, 7, SimpleMarkerSymbol.STYLE.CIRCLE); break; case 2: symbol = new SimpleMarkerSymbol(Color.BLUE, 7, SimpleMarkerSymbol.STYLE.CIRCLE); break; default: break; } break; case 1: type = Geometry.Type.POLYLINE; switch (mi.getItemId()) { case 0: symbol = new SimpleLineSymbol(Color.RED, 5, SimpleLineSymbol.STYLE.SOLID); break; case 1: symbol = new SimpleLineSymbol(Color.GREEN, 5, SimpleLineSymbol.STYLE.DASH); break; case 2: symbol = new SimpleLineSymbol(Color.BLUE, 5, SimpleLineSymbol.STYLE.SOLID); break; default: break; } break; case 2: type = Geometry.Type.POLYGON; switch (mi.getItemId()) { case 0: fillSymbol = new SimpleFillSymbol(Color.RED, SimpleFillSymbol.STYLE.SOLID); break; case 1: fillSymbol = new SimpleFillSymbol(Color.GREEN); fillSymbol.setAlpha(50); break; case 2: fillSymbol = new SimpleFillSymbol(Color.BLUE, SimpleFillSymbol.STYLE.SOLID); break; default: break; } break; default: break; } return false; }
转载自:https://blog.csdn.net/u011967995/article/details/52777599