Want to Learn Javascript.

# Draw a Circle Graphic with ESRI Android SDK

14. November 2011 12:56 by Scott in Development, ESRI  //  Tags: , , ,   //   Comments (3)

I wrote this code a while back.  The requirement was to have a user draw a circle with the ESRI Android SDK.  Well, their Android SDK doesn't currently support drawing circles.  It draws all other types of polygons except for the circle.  So what does a Software Engineer do, we come up with our own implementation.

So for the world to see, here it is:

First we capture the OnMotionEvent and the comments are in line.

Hope this helps someone.

```    public boolean onDragPointerMove(MotionEvent from, MotionEvent to) {

if (tempCircleGraphic != null)
_graphicsLayer.removeGraphic(tempCircleGraphic);

// creates a new polygon to be drawn.
_circleTemp = new Polygon();

Point point = _map.toMapPoint(to.getX(), to.getY());

// If the starting point is null, create a polyline and start a
// path.
if (_startPoint == null) {
_startPoint = _map.toMapPoint(from.getX(), from.getY());
// creates a polyline so we can measure the radius of the
// person
// drawing the circle.
_polylineTemp = new Polyline();
// starts the poly line
_polylineTemp.startPath(_startPoint.getX(), _startPoint.getY());
}
// continues the draw of the poly line
_polylineTemp.lineTo((float) point.getX(), (float) point.getY());

// calculates the circle when getting ready to be drawn.
int pointsAroundCircle = 50; // N
for (int i = 0; i < pointsAroundCircle; i++) {
double fi = 2 * Math.PI * i / pointsAroundCircle;
double x = radius * Math.sin(fi + Math.PI) + _startPoint.getX();
double y = radius * Math.cos(fi + Math.PI) + _startPoint.getY();
if (i == 0) // starts the drawing of the circle. if
// beginning
// the for loop
_circleTemp.startPath(x, y);
else if (i == pointsAroundCircle - 1) // ends the circle
// when at
// the end of the
// for loop.
_circleTemp.closeAllPaths();
else
// continues drawing the cirlce while it iterates
_circleTemp.lineTo(x, y);
}
// creates a new graphic and sets the geometry to a polygon.
Graphic graphic = new Graphic();
graphic.setGeometry(_circleTemp);

int drawColor = getDrawColor();
int transparentColor = Color.argb(POLYGON_ALPHA, Color.red(drawColor),
Color.green(drawColor), Color.blue(drawColor));
SimpleFillSymbol fillSymbol = new SimpleFillSymbol(transparentColor);
graphic.setSymbol(fillSymbol);

tempCircleGraphic = graphic;
// add the updated graphic to graphics layer