arcgis for android 定位 圆

本文介绍两种在地图上绘制圆形的方法。方法一通过计算圆周上的点来构建多边形并填充颜色;方法二利用GeometryEngine.buffer函数直接生成缓冲区多边形。这两种方法均可应用于地图视图中显示圆形区域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不多说直接代码 ,群里人共享的

方法一: /** 
     * 绘制圆,配合 cleargraphicLayer()清除 
     * 
     * @param center 圆心 
     * @param radius 半径 
     * @param alpha 填充的透明度 0-100 
     * @param fillColor 填充的颜色 
     */  
    public void DrawCircle(Point center, double radius, int alpha, int fillColor) {  
        if (graphicLayer == null) { //是否已添加绘制图层  
        graphicLayer = new GraphicsLayer();  
            mapView.addLayer(graphicLayer);
        }  
        Polygon polygon = new Polygon();  
        getCircle(center, radius, polygon);  
        FillSymbol symbol = new SimpleFillSymbol(fillColor); 
        SimpleLineSymbol simplelinesymbol = new SimpleLineSymbol(Color.BLUE, (float) 0.5);
        symbol.setOutline(simplelinesymbol);
        symbol.setAlpha(alpha);  
        Graphic g = new Graphic(polygon,symbol);  
        graphicLayer.addGraphic(g);  
    }  
  
    /** 
     * 获取圆的图形对象 
     * 
     * @param center 
     * @param radius 
     * @return 
     */  
    public static Polygon getCircle(Point center, double radius) {  
    Polygon polygon = new Polygon();  
        getCircle(center, radius, polygon);  
        return polygon;  
    }  
  
    private static void getCircle(Point center, double radius, Polygon circle) {  
        circle.setEmpty();  
        Point[] points = getPoints(center, radius);
        circle.startPath(points[0]);  
        for (int i = 1; i < points.length; i++)  
            circle.lineTo(points[i]);
    }  
  
    private static Point[] getPoints(Point center, double radius) {  
        Point[] points = new Point[50];  
        double sin;  
        double cos;  
        double x;  
        double y;  
        for (double i = 0; i < 50; i++) {  
            sin = Math.sin(Math.PI * 2 * i / 50);  
            cos = Math.cos(Math.PI * 2 * i / 50);  
            x = center.getX() + radius * sin;  
            y = center.getY() + radius * cos;  
            points[(int) i] = new Point(x, y);  
        }  
        return points;  
    }  



方法二:

Polygon polygon = GeometryEngine.buffer(mapPoint,mapView.getSpatialReference(), 100, null);
FillSymbol symbol = new SimpleFillSymbol(Color.BLUE);
SimpleLineSymbol simplelinesymbol = new SimpleLineSymbol(Color.BLUE,(float) 0.5);
symbol.setOutline(simplelinesymbol);
symbol.setAlpha(30);
Graphic g = new Graphic(polygon, symbol);
graphicLayer.addGraphic(g);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值