diff --git a/src/ol/interaction/Draw.js b/src/ol/interaction/Draw.js index 52796f5e96..81f7f1fb91 100644 --- a/src/ol/interaction/Draw.js +++ b/src/ol/interaction/Draw.js @@ -956,8 +956,19 @@ export function createRegularPolygon(opt_sides, opt_angle) { squaredCoordinateDistance(center, end)); const geometry = opt_geometry ? /** @type {module:ol/geom/Polygon} */ (opt_geometry) : fromCircle(new Circle(center), opt_sides); - const angle = opt_angle ? opt_angle : + let angle = opt_angle ? opt_angle : Math.atan((end[1] - center[1]) / (end[0] - center[0])); + let _angle = 180 * angle / Math.PI; + if (end[0] - center[0] >= 0 && end[1] - center[1] <= 0) { + _angle = _angle + 360; + } else if (end[0] - center[0] >= 0 && end[1] - center[1] >= 0) { + _angle = _angle; + } else if (end[0] - center[0] <= 0 && end[1] - center[1] >= 0) { + _angle = _angle + 180; + } else if (end[0] - center[0] <= 0 && end[1] - center[1] <= 0) { + _angle = _angle + 180; + } + angle = _angle * Math.PI / 180; makeRegular(geometry, center, radius, angle); return geometry; };