#655: add layer.eraseFeatures.patch() on the "public" side of the API - layer methods should be called instead of layer.renderer methods wherever possible
git-svn-id: http://svn.openlayers.org/trunk/openlayers@3065 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -279,6 +279,15 @@ OpenLayers.Layer.Vector.prototype =
|
||||
this.renderer.drawFeature(feature, style);
|
||||
},
|
||||
|
||||
/**
|
||||
* Erase features from the layer.
|
||||
*
|
||||
* @param {Array(OpenLayers.Feature.Vector)} features
|
||||
*/
|
||||
eraseFeatures: function(features) {
|
||||
this.renderer.eraseFeatures(features);
|
||||
},
|
||||
|
||||
/**
|
||||
* Given an event, return a feature if the event occurred over one.
|
||||
* Otherwise, return null.
|
||||
|
||||
@@ -109,13 +109,19 @@ OpenLayers.Renderer.prototype =
|
||||
/**
|
||||
* Draw the feature. The optional style argument can be used
|
||||
* to override the feature's own style. This method should only
|
||||
* be called from layer.drawFeature(). Implemented by a renderer
|
||||
* subclass.
|
||||
* be called from layer.drawFeature().
|
||||
*
|
||||
* @param {OpenLayers.Feature.Vector} feature
|
||||
* @param {Object} style
|
||||
* @private
|
||||
*/
|
||||
drawFeature: function(feature, style) {},
|
||||
drawFeature: function(feature, style) {
|
||||
if(style == null) {
|
||||
style = feature.style;
|
||||
}
|
||||
this.drawGeometry(feature.geometry, style, feature.id);
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* virtual function
|
||||
@@ -125,15 +131,16 @@ OpenLayers.Renderer.prototype =
|
||||
*
|
||||
* @param geometry {OpenLayers.Geometry}
|
||||
* @param style {Object}
|
||||
* @param {String} featureId
|
||||
* @private
|
||||
*/
|
||||
drawGeometry: function(geometry, style) {},
|
||||
drawGeometry: function(geometry, style, featureId) {},
|
||||
|
||||
/**
|
||||
* virtual function
|
||||
*
|
||||
* Clear all vectors from the renderer
|
||||
*
|
||||
* @private
|
||||
*/
|
||||
clear: function() {},
|
||||
|
||||
@@ -152,12 +159,27 @@ OpenLayers.Renderer.prototype =
|
||||
*/
|
||||
getFeatureIdFromEvent: function(evt) {},
|
||||
|
||||
/**
|
||||
* This is called by the layer to erase features
|
||||
* @param {Array(OpenLayers.Feature.Vector)} features
|
||||
* @private
|
||||
*/
|
||||
eraseFeatures: function(features) {
|
||||
if(!(features instanceof Array)) {
|
||||
features = [features];
|
||||
}
|
||||
for(var i=0; i<features.length; ++i) {
|
||||
this.eraseGeometry(features[i].geometry);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* virtual function
|
||||
*
|
||||
* Remove a geometry from the renderer (by id)
|
||||
*
|
||||
* @param geometry {OpenLayers.Geometry}
|
||||
* @private
|
||||
*/
|
||||
eraseGeometry: function(geometry) {},
|
||||
|
||||
|
||||
@@ -86,21 +86,6 @@ OpenLayers.Renderer.Elements.prototype =
|
||||
*/
|
||||
getNodeType: function(geometry) { },
|
||||
|
||||
/**
|
||||
* Draw the feature. The optional style argument can be used
|
||||
* to override the feature's own style. This method should only
|
||||
* be called from layer.drawFeature().
|
||||
*
|
||||
* @param {OpenLayers.Feature.Vector} feature
|
||||
* @param {Object} style
|
||||
*/
|
||||
drawFeature: function(feature, style) {
|
||||
if(style == null) {
|
||||
style = feature.style;
|
||||
}
|
||||
this.drawGeometry(feature.geometry, style, feature.id);
|
||||
},
|
||||
|
||||
/**
|
||||
* Draw the geometry, creating new nodes, setting paths, setting style,
|
||||
* setting featureId on the node. This method should only be called
|
||||
@@ -206,6 +191,7 @@ OpenLayers.Renderer.Elements.prototype =
|
||||
*
|
||||
* @returns A geometry from an event that happened on a layer
|
||||
* @type OpenLayers.Geometry
|
||||
* @private
|
||||
*/
|
||||
getFeatureIdFromEvent: function(evt) {
|
||||
var node = evt.target || evt.srcElement;
|
||||
@@ -218,6 +204,7 @@ OpenLayers.Renderer.Elements.prototype =
|
||||
* the DOM.
|
||||
*
|
||||
* @param {OpenLayers.Geometry} geometry
|
||||
* @private
|
||||
*/
|
||||
eraseGeometry: function(geometry) {
|
||||
if ((geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") ||
|
||||
@@ -252,6 +239,7 @@ OpenLayers.Renderer.Elements.prototype =
|
||||
*
|
||||
* @returns A new node of the given type and id
|
||||
* @type DOMElement
|
||||
* @private
|
||||
*/
|
||||
nodeFactory: function(id, type, geometry) {
|
||||
var node = $(id);
|
||||
|
||||
@@ -100,6 +100,27 @@
|
||||
|
||||
}
|
||||
|
||||
function test_Layer_Vector_eraseFeatures(t) {
|
||||
t.plan(2);
|
||||
var layer = new OpenLayers.Layer.Vector("Test Layer");
|
||||
var map = new OpenLayers.Map('map');
|
||||
map.addLayer(layer);
|
||||
var geometry = new OpenLayers.Geometry.Point(10, 10);
|
||||
var feature = new OpenLayers.Feature.Vector(geometry);
|
||||
|
||||
var f;
|
||||
layer.renderer = {
|
||||
eraseFeatures: function(features) {
|
||||
f = features[0];
|
||||
}
|
||||
};
|
||||
|
||||
layer.eraseFeatures([feature]);
|
||||
t.ok(f, "calls layer.renderer.eraseFeatures");
|
||||
t.ok(geometry.equals(f.geometry),
|
||||
"calls layer.renderer.eraseFeatures() given an array of features");
|
||||
}
|
||||
|
||||
function test_Layer_Vector_destroyFeatures (t) {
|
||||
t.plan(2);
|
||||
layer = new OpenLayers.Layer.Vector(name);
|
||||
|
||||
Reference in New Issue
Block a user