You want to enable DrawFeature for circle or you want to add a circle on your Layer ?
To enable DrawFeature for circle :
// Feature option DrawFeatureOptions drawFeatureOptions = new DrawFeatureOptions();
// Handler option for circle RegularPolygonHandlerOptions handlerOptions = new RegularPolygonHandlerOptions(); // 30 side is ok for a circle handlerOptions.setSides(30); handlerOptions.setSnapAngle(0); handlerOptions.setIrregular(false); // Add the handler option to the DrawFeatureOptions drawFeatureOptions.setHandlerOptions(handlerOptions); // create the draw feature control DrawFeature drawCircleFeatureControl = new DrawFeature(geometryFeaturesLayer, new RegularPolygonHandler(), drawFeatureOptions); // Add the control to the map map.addControl(drawCircleFeatureControl);
To add a circle on your layer
In openlayers there is a javascript method : OpenLayers.Geometry.Polygon.createRegularPolygon I haven't be able to find it in GWT openlayers, so you had to call the javascript method :
/**
* Create a regular polygon around a radius. Useful for creating circles and the like.
*
* @param origin {OpenLayers.Geometry.Point} center of polygon.
* @param radius {Float} distance to vertex, in map units.
* @param sides {Integer} Number of sides. 20 approximates a circle.
* @param rotation {Float} original angle of rotation, in degrees.
* @return Polygon
*/
public static native JSObject jsCreateRegularPolygon(JSObject origin, Float radius, Integer sides, Float rotation)
/*-{
return $wnd.OpenLayers.Geometry.Polygon.createRegularPolygon(origin, radius, sides, rotation);
}-*/;
Then call it from your code in order to create your circle
JSObject polygonJSObject = jsCreateRegularPolygon(point, 100f, 30, 45f); // with 30 sides for a circle
Polygon circle = Polygon.narrowToPolygon(polygonJSObject);