#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);
|
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.
|
* Given an event, return a feature if the event occurred over one.
|
||||||
* Otherwise, return null.
|
* Otherwise, return null.
|
||||||
|
|||||||
@@ -109,13 +109,19 @@ OpenLayers.Renderer.prototype =
|
|||||||
/**
|
/**
|
||||||
* Draw the feature. The optional style argument can be used
|
* Draw the feature. The optional style argument can be used
|
||||||
* to override the feature's own style. This method should only
|
* to override the feature's own style. This method should only
|
||||||
* be called from layer.drawFeature(). Implemented by a renderer
|
* be called from layer.drawFeature().
|
||||||
* subclass.
|
|
||||||
*
|
*
|
||||||
* @param {OpenLayers.Feature.Vector} feature
|
* @param {OpenLayers.Feature.Vector} feature
|
||||||
* @param {Object} style
|
* @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
|
* virtual function
|
||||||
@@ -125,15 +131,16 @@ OpenLayers.Renderer.prototype =
|
|||||||
*
|
*
|
||||||
* @param geometry {OpenLayers.Geometry}
|
* @param geometry {OpenLayers.Geometry}
|
||||||
* @param style {Object}
|
* @param style {Object}
|
||||||
|
* @param {String} featureId
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
drawGeometry: function(geometry, style) {},
|
drawGeometry: function(geometry, style, featureId) {},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* virtual function
|
* virtual function
|
||||||
*
|
*
|
||||||
* Clear all vectors from the renderer
|
* Clear all vectors from the renderer
|
||||||
*
|
* @private
|
||||||
*/
|
*/
|
||||||
clear: function() {},
|
clear: function() {},
|
||||||
|
|
||||||
@@ -152,12 +159,27 @@ OpenLayers.Renderer.prototype =
|
|||||||
*/
|
*/
|
||||||
getFeatureIdFromEvent: function(evt) {},
|
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
|
* virtual function
|
||||||
*
|
*
|
||||||
* Remove a geometry from the renderer (by id)
|
* Remove a geometry from the renderer (by id)
|
||||||
*
|
*
|
||||||
* @param geometry {OpenLayers.Geometry}
|
* @param geometry {OpenLayers.Geometry}
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
eraseGeometry: function(geometry) {},
|
eraseGeometry: function(geometry) {},
|
||||||
|
|
||||||
|
|||||||
@@ -86,21 +86,6 @@ OpenLayers.Renderer.Elements.prototype =
|
|||||||
*/
|
*/
|
||||||
getNodeType: function(geometry) { },
|
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,
|
* Draw the geometry, creating new nodes, setting paths, setting style,
|
||||||
* setting featureId on the node. This method should only be called
|
* 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
|
* @returns A geometry from an event that happened on a layer
|
||||||
* @type OpenLayers.Geometry
|
* @type OpenLayers.Geometry
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
getFeatureIdFromEvent: function(evt) {
|
getFeatureIdFromEvent: function(evt) {
|
||||||
var node = evt.target || evt.srcElement;
|
var node = evt.target || evt.srcElement;
|
||||||
@@ -218,6 +204,7 @@ OpenLayers.Renderer.Elements.prototype =
|
|||||||
* the DOM.
|
* the DOM.
|
||||||
*
|
*
|
||||||
* @param {OpenLayers.Geometry} geometry
|
* @param {OpenLayers.Geometry} geometry
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
eraseGeometry: function(geometry) {
|
eraseGeometry: function(geometry) {
|
||||||
if ((geometry.CLASS_NAME == "OpenLayers.Geometry.MultiPoint") ||
|
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
|
* @returns A new node of the given type and id
|
||||||
* @type DOMElement
|
* @type DOMElement
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
nodeFactory: function(id, type, geometry) {
|
nodeFactory: function(id, type, geometry) {
|
||||||
var node = $(id);
|
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) {
|
function test_Layer_Vector_destroyFeatures (t) {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
layer = new OpenLayers.Layer.Vector(name);
|
layer = new OpenLayers.Layer.Vector(name);
|
||||||
|
|||||||
Reference in New Issue
Block a user