import org.gwtopenmaps.openlayers.client.control.*;
Vector vectorLayer = new Vector("Vector Layer");
ModifyFeature mod = new ModifyFeature(vectorLayer);
像这是圈子的任何绘画功能?
答案 0 :(得分:3)
您想为圆圈启用DrawFeature,还是想在图层上添加圆圈?
为圆圈启用DrawFeature:
//功能选项 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);
在图层上添加圆圈
在openlayers中有一个javascript方法:OpenLayers.Geometry.Polygon.createRegularPolygon 我无法在GWT openlayers中找到它,所以你必须调用javascript方法:
/**
* 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);
}-*/;
然后从您的代码中调用它以创建您的圈子
JSObject polygonJSObject = jsCreateRegularPolygon(point, 100f, 30, 45f); // with 30 sides for a circle
Polygon circle = Polygon.narrowToPolygon(polygonJSObject);