基于Arcgis for Android runtime在地图上画圆

原创 2013年03月07日 15:10:23

本人参照DrawTools改编实现,具体出处不详. 更多信息请关注 www.gismobi.com

代码如下:

//----------------------绘制圆形-----------------------
    private static GraphicsLayer drawCircleLayer = null;

    /**
     * 清除绘制圆的图层
     */
    public void clearDrawCircleLayer() {
        if (drawCircleLayer != null) {
            drawCircleLayer.removeAll();
        }
    }

    /**
     * 绘制圆,配合 clearDrawCircleLayer()清除
     *
     * @param center 圆心
     * @param radius 半径
     * @param alpha 填充的透明度 0-100
     * @param fillColor 填充的颜色
     */
    public static void DrawCircle(Point center, double radius, int alpha, int fillColor) {
        if (drawCircleLayer == null) { //是否已添加绘制图层
            drawCircleLayer = new GraphicsLayer();
            _map.addLayer(drawCircleLayer);
        }
        Polygon polygon = new Polygon();
        getCircle(center, radius, polygon);
        FillSymbol symbol = new SimpleFillSymbol(fillColor);
        symbol.setAlpha(alpha);

        Graphic g = new Graphic(polygon,symbol);
        drawCircleLayer.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;
    }


相关文章推荐

ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件

原址:http://blog.csdn.net/ArcGIS_Mobile/article/details/8263283  ArcGIS Runtime sdk for Andro...

安卓智能地图开发与实施十九:符号与渲染器 - ArcGIS Runtime SDK for Android(Version 100.1.0)

符号与渲染器符号与渲染器(Symbols and Renderers),通过色彩值、大小、形状、边线、透明度来表达空间要素的具体含义。如果仅仅有位置,而没有位置上的属性信息,位置也会失去意义,符号与渲...

安卓智能地图开发与实施二:开发环境准备 - ArcGIS Runtime SDK for Android(Version 100.0.0)

一、 ArcGIS Runtime功能介绍 随着ArcGIS 10.5的发布,WebGIS已经深入身心,而围绕在ArcGIS地理平台的Apps,特别是开发定制部分,很大程度上落到了ArcGIS Ru...

安卓智能地图开发与实施十五:离线与同步 - ArcGIS Runtime SDK for Android(Version 100.0.0)

离线与同步(GeodatabaseSyncTask)针对编辑,上一节中凡事离线的,各种添加、更新、删除等都是针对终端上存储的离线数据。可以在没有网络的环境下完成,当具备网络时,还需同步到ArcGIS ...

安卓智能地图开发与实施八:离线业务图层(浏览查询) - ArcGIS Runtime SDK for Android(Version 100.0.0)

离线业务图层离线业务图层,在很大程度上减少了对网络的依附。无论是哪个行业的外业核查,都需要详细的原有信息进行支撑,而涉及地图、位置的信息核查,通过离线数据可以在本端形成对比核实能力。...

《ArcGIS Runtime SDK for Android开发笔记》——(9)、空间数据的容器-地图MapView

1、前言 在上一篇内容里介绍了 关于ArcGIS Android开发的未来(“Quartz”版Beta)相关内容,期间也提到了关于API接口的重构,开发思路的调整,根据2015UC资料也可以知道新版...
  • esricd
  • esricd
  • 2015年11月30日 12:28
  • 2353

安卓智能地图开发与实施十:图层管理 - ArcGIS Runtime SDK for Android(Version 100.0.0)

图层管理图层管理分为了基础底图切换和业务数据管理。基础底图主要是进行切换,而业务数据管理的功能因项目而已,基本有控制显示、图层查询、统计等。...

安卓智能地图开发与实施五:在线基础底图 - ArcGIS Runtime SDK for Android(Version 100.0.0)

基础底图移动地图程序的基础,在于“一张图”,外业调绘、导航类、成果展示、统计应用等都需要一张基本的底图来支撑。往往底图的好坏决定了整个移动地图的根基。...

安卓智能地图开发与实施一:配置离线SDK - ArcGIS Runtime SDK for Android(Version 100.0.0)

一、配置离线Maven1、 下载安装并配置JDK 官网下载: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-d...

安卓智能地图开发与实施十三:空间查询与展示 - ArcGIS Runtime SDK for Android(Version 100.0.0)

空间查询与展示空间查询需要入口(屏幕触摸、文字输入,甚至绘制个Geometry进行查询),也需要展示容器,如果查询仅仅返回一条记录,在地图中弹出窗口展示信息足矣。当返回多条记录,特别是多个图层的多条记...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Arcgis for Android runtime在地图上画圆
举报原因:
原因补充:

(最多只允许输入30个字)