From cf5e9ecd4fe8a42c66e6713c81a6ce90e33952d0 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Sat, 23 Nov 2013 11:49:42 +0100 Subject: [PATCH] Segment distance calculation fails when modifying points By providing a segment even for points, we have less distinction points between points and other geometry types, and are able to do the segment distance calculation also for points. --- src/ol/interaction/modifyinteraction.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/ol/interaction/modifyinteraction.js b/src/ol/interaction/modifyinteraction.js index dedabccc05..2966f635e5 100644 --- a/src/ol/interaction/modifyinteraction.js +++ b/src/ol/interaction/modifyinteraction.js @@ -30,7 +30,7 @@ goog.require('ol.structs.RTree'); * geometry: ol.geom.Geometry, * index: (number|undefined), * style: ol.style.Style, - * segment: (Array.|undefined)}} + * segment: Array.}} */ ol.interaction.SegmentDataType; @@ -277,9 +277,11 @@ ol.interaction.Modify.prototype.addSegments_ = var rTree = this.rTree_; var segment, segmentData, coordinates; if (geometry instanceof ol.geom.Point) { + coordinates = geometry.getCoordinates(); segmentData = /** @type {ol.interaction.SegmentDataType} */ ({ feature: feature, geometry: geometry, + segment: [coordinates, coordinates], style: layer.getStyle() }); rTree.insert(geometry.getBounds(), segmentData, uid); @@ -389,20 +391,18 @@ ol.interaction.Modify.prototype.handleDrag = function(evt) { var geometry = segmentData.geometry; var coordinates = geometry.getCoordinates(); - var oldBounds, newBounds; + var segment = segmentData.segment; + var oldBounds = ol.extent.boundingExtent(segment); if (geometry instanceof ol.geom.Point) { - oldBounds = geometry.getBounds(); - geometry.setCoordinates(vertex); - newBounds = geometry.getBounds(); + coordinates = vertex; + segment[0] = segment[1] = vertex; } else { var index = dragSegment[1]; coordinates[segmentData.index + index] = vertex; - geometry.setCoordinates(coordinates); - var segment = segmentData.segment; - oldBounds = ol.extent.boundingExtent(segment); segment[index] = vertex; - newBounds = ol.extent.boundingExtent(segment); } + geometry.setCoordinates(coordinates); + var newBounds = ol.extent.boundingExtent(segment); this.createOrUpdateVertexFeature_(segmentData.style, vertex); this.rTree_.remove(oldBounds, segmentData); this.rTree_.insert(newBounds, segmentData, goog.getUid(feature));