Skip to content

Commit

Permalink
Merge pull request Leaflet#549 from mehmeta/polyedit
Browse files Browse the repository at this point in the history
Fixed bugs on polyline editing regarding edge cases
  • Loading branch information
mourner committed Feb 29, 2012
2 parents 401a6e2 + 925ffd6 commit fafc3ed
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions src/layer/vector/Polyline.Edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,17 +99,29 @@ L.Handler.PolyEdit = L.Handler.extend({
},

_onMarkerClick: function (e) {
// Default action on marker click is to remove that marker, but if we remove the marker when latlng count < 3, we don't have a valid polyline anymore
if (this._poly._latlngs.length < 3) {
return;
}

var marker = e.target,
i = marker._index;

// Check existence of previous and next markers since they wouldn't exist for edge points on the polyline
if (marker._prev && marker._next) {
this._createMiddleMarker(marker._prev, marker._next);
this._updatePrevNext(marker._prev, marker._next);
}

this._createMiddleMarker(marker._prev, marker._next);
this._updatePrevNext(marker._prev, marker._next);

this._markerGroup
.removeLayer(marker._middleLeft)
.removeLayer(marker._middleRight)
.removeLayer(marker);

// The marker itself is guaranteed to exist and present in the layer, since we managed to click on it
this._markerGroup.removeLayer(marker);
// Check for the existence of middle left or middle right
if (marker._middleLeft) {
this._markerGroup.removeLayer(marker._middleLeft);
}
if (marker._middleRight) {
this._markerGroup.removeLayer(marker._middleRight);
}
this._poly.spliceLatLngs(i, 1);
this._updateIndexes(i, -1);
this._poly.fire('edit');
Expand Down

0 comments on commit fafc3ed

Please sign in to comment.