基于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 SDK for Android(Version 100.0.0)

移动电子地图缩放与旋转MapView(com.esri.arcgisruntime.mapping.view.MapView)自身提供手势操作来放大、缩小、旋转。...
  • allenlu2008
  • allenlu2008
  • 2017年05月16日 11:00
  • 1839

ArcGIS Runtime SDK for iOS开发地图图层-切片地图服务图层

ArcGIS 切片地图服务图层        ArcGIS 切片地图服务图层显示来自
  • hlj184
  • hlj184
  • 2015年03月26日 21:59
  • 952

ArcGIS For Android ExportTileCache应用

说明:从ArcGIS For Android10.2.4 ,开始支持下载在线地图服务切片缓存到移动设备本地,以便离线时进行地图浏览。本文章摘要介绍,使用自己发布的服务时,需要注意的内容。...
  • u011116642
  • u011116642
  • 2015年06月05日 08:36
  • 1077

安卓智能地图开发与实施十六:三维地图 - ArcGIS Runtime SDK for Android(Version 100.1.0)

三维地图三维地图多了一个维度来基于位置表达信息,100.1的版本中已经整合了完整的三维展示方案。新版本发布,我们先看效果...
  • allenlu2008
  • allenlu2008
  • 2017年07月01日 12:05
  • 1759

ArcGIS Runtime—服务加载

可访问的服务地图服务 ArcGIS Runtime不仅能够加载本地的数据资源,还可以访问ArcGISServer发布的服务,如ArcGIS Online上的。     ArcGIS Runtime...
  • SYDBC
  • SYDBC
  • 2013年12月10日 17:16
  • 2236

如何解决ArcGIS Runtime SDK for Android中文标注无法显示的问题

自10.2版本开始,我就一直被ArcGIS Runtime SDK for Android的中文标注无限困扰。无论是驻留于内存中的Graphic 的文本符号TextSymbol,还是新增的离线geod...
  • zssai2015
  • zssai2015
  • 2015年11月08日 17:05
  • 1427

如何在百度地图上画镂空圆 Android

百度API提供了在地图上画圆形的类,但画出圆只能是实心圆,也就是不能实现让圆内没有颜色而圆外有颜色的镂空圆。那么我们应该实现镂空圆呢? 首先我发现API还提供一个画多边形的类。而一个镂空圆分解成两个...
  • qq_30643987
  • qq_30643987
  • 2016年11月12日 15:24
  • 1392

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

离线基础底图(Offline Tiled Layers)离线基础底图最传统的方式是直接拷贝ArcGIS Server服务的切片成果,存在的问题是无论使用松散型还是紧凑型都包含太多碎小文件,部署不便。T...
  • allenlu2008
  • allenlu2008
  • 2017年05月04日 12:14
  • 2902

【10.1.1】ArcGIS Runtime for Android-Samples-界面展示

第一章:Maps 第二章:Features 第三章:Graphics 1、Draw graphic elements sample——在地图上绘制并显示点线面图形 第四章: 1、...
  • liyongliang_2012
  • liyongliang_2012
  • 2013年07月31日 11:24
  • 1743

安卓智能地图开发与实施十七:使用天地图 - ArcGIS Runtime SDK for Android(Version 100.1.0)

WebTiledLayer100.1的新版本最大的亮点是三维,同时新加入了图层类型和可扩展的切片图层WebTiledLayer。继承自ServiceImageTiledLayer。BingMapsLa...
  • allenlu2008
  • allenlu2008
  • 2017年07月03日 23:14
  • 2383
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Arcgis for Android runtime在地图上画圆
举报原因:
原因补充:

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