From b377bbac5983a044b80b43adcb3d871eebee4d25 Mon Sep 17 00:00:00 2001 From: plex <344565768@qq.com> Date: Wed, 18 Jul 2018 22:43:45 +0800 Subject: [PATCH] fix: change the start angle of the regular polygon to match the sketch --- src/ol/interaction/Draw.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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; };