地图标绘(点线面)

来源:互联网 发布:供应商管理平台软件 编辑:程序博客网 时间:2024/04/30 05:09
/** * 绘制点线面:点击“添加额外服务”后,地图放大缩小拖拽等功能失效 */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;            }        });    }

});

/** * 动态加载菜单:不占用地图显示空间 */@Overridepublic 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);}@Overridepublic 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;}

0 0
原创粉丝点击