Merge pull request #6499 from tchandelle/circle-modify
Be more tolerant when comparing vertices when modifying a circle
This commit is contained in:
@@ -550,6 +550,7 @@ ol.interaction.Modify.handleDownEvent_ = function(evt) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
this.handlePointerAtPixel_(evt.pixel, evt.map);
|
this.handlePointerAtPixel_(evt.pixel, evt.map);
|
||||||
|
var pixelCoordinate = evt.map.getCoordinateFromPixel(evt.pixel);
|
||||||
this.dragSegments_.length = 0;
|
this.dragSegments_.length = 0;
|
||||||
this.modified_ = false;
|
this.modified_ = false;
|
||||||
var vertexFeature = this.vertexFeature_;
|
var vertexFeature = this.vertexFeature_;
|
||||||
@@ -575,7 +576,7 @@ ol.interaction.Modify.handleDownEvent_ = function(evt) {
|
|||||||
if (segmentDataMatch.geometry.getType() === ol.geom.GeometryType.CIRCLE &&
|
if (segmentDataMatch.geometry.getType() === ol.geom.GeometryType.CIRCLE &&
|
||||||
segmentDataMatch.index === ol.interaction.Modify.MODIFY_SEGMENT_CIRCLE_CIRCUMFERENCE_INDEX) {
|
segmentDataMatch.index === ol.interaction.Modify.MODIFY_SEGMENT_CIRCLE_CIRCUMFERENCE_INDEX) {
|
||||||
|
|
||||||
var closestVertex = ol.interaction.Modify.closestOnSegmentData_(vertex, segmentDataMatch);
|
var closestVertex = ol.interaction.Modify.closestOnSegmentData_(pixelCoordinate, segmentDataMatch);
|
||||||
if (ol.coordinate.equals(closestVertex, vertex) && !componentSegments[uid][0]) {
|
if (ol.coordinate.equals(closestVertex, vertex) && !componentSegments[uid][0]) {
|
||||||
this.dragSegments_.push([segmentDataMatch, 0]);
|
this.dragSegments_.push([segmentDataMatch, 0]);
|
||||||
componentSegments[uid][0] = segmentDataMatch;
|
componentSegments[uid][0] = segmentDataMatch;
|
||||||
|
|||||||
@@ -392,8 +392,8 @@ describe('ol.interaction.Modify', function() {
|
|||||||
expect(circleFeature.getGeometry().getCenter()).to.eql([5, 5]);
|
expect(circleFeature.getGeometry().getCenter()).to.eql([5, 5]);
|
||||||
|
|
||||||
// Increase radius
|
// Increase radius
|
||||||
simulateEvent('pointermove', 25, -5, false, 0);
|
simulateEvent('pointermove', 25, -4, false, 0);
|
||||||
simulateEvent('pointerdown', 25, -5, false, 0);
|
simulateEvent('pointerdown', 25, -4, false, 0);
|
||||||
simulateEvent('pointermove', 30, -5, false, 0);
|
simulateEvent('pointermove', 30, -5, false, 0);
|
||||||
simulateEvent('pointerdrag', 30, -5, false, 0);
|
simulateEvent('pointerdrag', 30, -5, false, 0);
|
||||||
simulateEvent('pointerup', 30, -5, false, 0);
|
simulateEvent('pointerup', 30, -5, false, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user