From 0296a46de8b46d06895c5c7ad9ccdc5a875b1357 Mon Sep 17 00:00:00 2001 From: Peter Robins Date: Sun, 8 Jan 2012 14:36:30 +0000 Subject: [PATCH 1/4] Control/Split should work w/o MultiLineString --- lib/OpenLayers/Control/Split.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Control/Split.js b/lib/OpenLayers/Control/Split.js index eec6dcc965..69c035e672 100644 --- a/lib/OpenLayers/Control/Split.js +++ b/lib/OpenLayers/Control/Split.js @@ -278,7 +278,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { if(event.modified) { var feature = event.feature; if(feature.geometry instanceof OpenLayers.Geometry.LineString || - feature.geometry instanceof OpenLayers.Geometry.MultiLineString) { + (OpenLayers.Geometry.MultiLineString && feature.geometry instanceof OpenLayers.Geometry.MultiLineString)) { this.feature = event.feature; this.considerSplit(event.feature); } @@ -317,7 +317,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { target.state !== OpenLayers.State.DELETE ) && ( target.geometry instanceof OpenLayers.Geometry.LineString || - target.geometry instanceof OpenLayers.Geometry.MultiLineString + (OpenLayers.Geometry.MultiLineString && target.geometry instanceof OpenLayers.Geometry.MultiLineString) ) && ( this.feature !== target ) && ( From 5f6bd6acee342317cdfe2714f8f359fd47de5096 Mon Sep 17 00:00:00 2001 From: Peter Robins Date: Sun, 8 Jan 2012 20:04:35 +0000 Subject: [PATCH 2/4] Revised version for checking geometry splittable --- lib/OpenLayers/Control/Split.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/lib/OpenLayers/Control/Split.js b/lib/OpenLayers/Control/Split.js index 69c035e672..64a159ad29 100644 --- a/lib/OpenLayers/Control/Split.js +++ b/lib/OpenLayers/Control/Split.js @@ -277,8 +277,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { afterFeatureModified: function(event) { if(event.modified) { var feature = event.feature; - if(feature.geometry instanceof OpenLayers.Geometry.LineString || - (OpenLayers.Geometry.MultiLineString && feature.geometry instanceof OpenLayers.Geometry.MultiLineString)) { + if (typeof feature.geometry.split === "function") { this.feature = event.feature; this.considerSplit(event.feature); } @@ -315,9 +314,7 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { isEligible: function(target) { return ( target.state !== OpenLayers.State.DELETE - ) && ( - target.geometry instanceof OpenLayers.Geometry.LineString || - (OpenLayers.Geometry.MultiLineString && target.geometry instanceof OpenLayers.Geometry.MultiLineString) + ) && (typeof target.geometry.split === "function" ) && ( this.feature !== target ) && ( From 9453d0ce7cb621d23bcd2096cef62129c82cc0b0 Mon Sep 17 00:00:00 2001 From: Peter Robins Date: Sun, 8 Jan 2012 20:08:36 +0000 Subject: [PATCH 3/4] Revised version for checking geometry splittable --- lib/OpenLayers/Control/Split.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/OpenLayers/Control/Split.js b/lib/OpenLayers/Control/Split.js index 64a159ad29..26dc680800 100644 --- a/lib/OpenLayers/Control/Split.js +++ b/lib/OpenLayers/Control/Split.js @@ -314,7 +314,8 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { isEligible: function(target) { return ( target.state !== OpenLayers.State.DELETE - ) && (typeof target.geometry.split === "function" + ) && ( + typeof target.geometry.split === "function" ) && ( this.feature !== target ) && ( From 1b031bcd2640eaad024a89a15d42c89d50e10143 Mon Sep 17 00:00:00 2001 From: Peter Robins Date: Mon, 9 Jan 2012 11:13:36 +0000 Subject: [PATCH 4/4] Control/Split isEligible() should check feature has a geometry --- lib/OpenLayers/Control/Split.js | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/OpenLayers/Control/Split.js b/lib/OpenLayers/Control/Split.js index 26dc680800..bf5d1f3111 100644 --- a/lib/OpenLayers/Control/Split.js +++ b/lib/OpenLayers/Control/Split.js @@ -312,16 +312,20 @@ OpenLayers.Control.Split = OpenLayers.Class(OpenLayers.Control, { * {Boolean} The target is eligible for splitting. */ isEligible: function(target) { - return ( - target.state !== OpenLayers.State.DELETE - ) && ( - typeof target.geometry.split === "function" - ) && ( - this.feature !== target - ) && ( - !this.targetFilter || - this.targetFilter.evaluate(target.attributes) - ); + if (!target.geometry) { + return false; + } else { + return ( + target.state !== OpenLayers.State.DELETE + ) && ( + typeof target.geometry.split === "function" + ) && ( + this.feature !== target + ) && ( + !this.targetFilter || + this.targetFilter.evaluate(target.attributes) + ); + } }, /**