Ticket #1535: patch-1535-r7051-A0.diff
| File patch-1535-r7051-A0.diff, 5.7 kB (added by elemoine, 4 months ago) |
|---|
-
tests/Layer/Vector.html
old new 67 67 } 68 68 69 69 function test_Layer_Vector_removeFeatures(t) { 70 t.plan( 3);70 t.plan(6); 71 71 72 72 var layer = new OpenLayers.Layer.Vector(name); 73 73 … … 75 75 var pointFeature1 = new OpenLayers.Feature.Vector(layer, point1); 76 76 var point2 = new OpenLayers.Geometry.Point(-111.14, 45.78); 77 77 var pointFeature2 = new OpenLayers.Feature.Vector(layer, point2); 78 78 79 79 layer.addFeatures([pointFeature1, pointFeature2]); 80 80 var features = layer.removeFeatures([pointFeature1]); 81 81 … … 88 88 89 89 t.ok(layer.features.length == 0, 90 90 "OpenLayers.Layer.Vector.removeFeatures(layer.features) removes all feature from the features array"); 91 } 91 92 // 3 tests 93 layer.events.register('beforefeatureremoved', null, function(obj) { 94 t.ok(pointFeature1 == obj.feature, 95 "OpenLayers.Layer.Vector.removeFeatures triggers beforefeatureremoved with correct feature passed to callback"); 96 }); 97 layer.events.register('featureremoved', null, function(obj) { 98 t.ok(pointFeature1 == obj.feature, 99 "OpenLayers.Layer.Vector.removeFeatures triggers featureremoved with correct feature passed to callback"); 100 }); 101 layer.events.register('featuresremoved', null, function(obj) { 102 t.ok(pointFeature1 == obj.features[0], 103 "OpenLayers.Layer.Vector.removeFeatures triggers featuresremoved with correct features passed to callback"); 104 }); 105 layer.addFeatures([pointFeature1]); 106 layer.removeFeatures([pointFeature1]); 107 108 // 0 test 109 layer.events.register('beforefeatureremoved', null, function(obj) { 110 t.fail("OpenLayers.Layer.Vector.removeFeatures triggers beforefeatureremoved while it must not"); 111 }); 112 layer.events.register('featureremoved', null, function(obj) { 113 t.fail("OpenLayers.Layer.Vector.removeFeatures triggers featureremoved while it must not"); 114 }); 115 layer.events.register('featuresremoved', null, function(obj) { 116 t.fail("OpenLayers.Layer.Vector.removeFeatures triggers featuresremoved while it must not"); 117 }); 118 layer.addFeatures([pointFeature1]); 119 layer.removeFeatures([pointFeature1], {silent: true}); 120 } 92 121 93 122 function test_Layer_Vector_drawFeature(t) { 94 123 t.plan(4); -
lib/OpenLayers/Layer/Vector.js
old new 45 45 * - *featuresadded* Triggered after features are added. The event 46 46 * object passed to listeners will have a *features* property with a 47 47 * reference to an array of added features. 48 * - *beforefeatureremoved* Triggered before a feature is removed. Listeners 49 * wll receive an object with a *feature* property referencing the 50 * feature to be removed. 51 * - *featureremoved* Triggerd after a feature is removed. The event 52 * object passed to listeners will have a *feature* property with a 53 * reference to the removed feature. 54 * - *featuresremoved* Triggered after features are removed. The event 55 * object passed to listeners will have a *features* property with a 56 * reference to an array of removed features. 48 57 * - *featureselected* Triggered after a feature is selected. Listeners 49 58 * will receive an object with a *feature* property referencing the 50 59 * selected feature. … … 61 70 * Listeners will receive an object with a *feature* property referencing 62 71 * the modified feature. 63 72 */ 64 EVENT_TYPES: ["beforefeatureadded", "featureadded", 65 "featuresadded", "featureselected", "featureunselected", 73 EVENT_TYPES: ["beforefeatureadded", "featureadded", "featuresadded", 74 "beforefeatureremoved", "featureremoved", "featuresremoved", 75 "featureselected", "featureunselected", 66 76 "beforefeaturemodified", "featuremodified", "afterfeaturemodified"], 67 77 68 78 /** … … 367 377 * 368 378 * Parameters: 369 379 * features - {Array(<OpenLayers.Feature.Vector>)} 380 * options - {Object} 370 381 */ 371 removeFeatures: function(features ) {382 removeFeatures: function(features, options) { 372 383 if (!(features instanceof Array)) { 373 384 features = [features]; 374 385 } 386 if (features.length <= 0) { 387 return; 388 } 375 389 390 var notify = !options || !options.silent; 391 376 392 for (var i = features.length - 1; i >= 0; i--) { 377 393 var feature = features[i]; 394 395 if (notify) { 396 this.events.triggerEvent("beforefeatureremoved", { 397 feature: feature 398 }); 399 } 400 378 401 this.features = OpenLayers.Util.removeItem(this.features, feature); 379 402 380 403 if (feature.geometry) { … … 386 409 if (OpenLayers.Util.indexOf(this.selectedFeatures, feature) != -1){ 387 410 OpenLayers.Util.removeItem(this.selectedFeatures, feature); 388 411 } 412 413 if (notify) { 414 this.events.triggerEvent("featureremoved", { 415 feature: feature 416 }); 417 } 389 418 } 419 420 if (notify) { 421 this.events.triggerEvent("featuresremoved", {features: features}); 422 } 390 423 }, 391 424 392 425 /**
