Layer.Vector's renderers array should be able to deal with function as well as strings so that people can use their own custom renderer in their own namespace, r=ahocevar,fredj (closes #2669)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@10432 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -354,10 +354,12 @@ OpenLayers.Layer.Vector = OpenLayers.Class(OpenLayers.Layer, {
|
|||||||
*/
|
*/
|
||||||
assignRenderer: function() {
|
assignRenderer: function() {
|
||||||
for (var i=0, len=this.renderers.length; i<len; i++) {
|
for (var i=0, len=this.renderers.length; i<len; i++) {
|
||||||
var rendererClass = OpenLayers.Renderer[this.renderers[i]];
|
var rendererClass = this.renderers[i];
|
||||||
if (rendererClass && rendererClass.prototype.supported()) {
|
var renderer = (typeof rendererClass == "function") ?
|
||||||
this.renderer = new rendererClass(this.div,
|
rendererClass :
|
||||||
this.rendererOptions);
|
OpenLayers.Renderer[rendererClass];
|
||||||
|
if (renderer && renderer.prototype.supported()) {
|
||||||
|
this.renderer = new renderer(this.div, this.rendererOptions);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+40
-1
@@ -6,7 +6,7 @@
|
|||||||
var name = "Vector Layer";
|
var name = "Vector Layer";
|
||||||
|
|
||||||
function test_Layer_Vector_constructor(t) {
|
function test_Layer_Vector_constructor(t) {
|
||||||
t.plan(4);
|
t.plan(5);
|
||||||
|
|
||||||
var options = {protocol: new OpenLayers.Protocol(),
|
var options = {protocol: new OpenLayers.Protocol(),
|
||||||
strategies: [new OpenLayers.Strategy(), new OpenLayers.Strategy()]}
|
strategies: [new OpenLayers.Strategy(), new OpenLayers.Strategy()]}
|
||||||
@@ -19,6 +19,45 @@
|
|||||||
t.ok((layer.name == layer.strategies[0].layer.name) &&
|
t.ok((layer.name == layer.strategies[0].layer.name) &&
|
||||||
(layer.strategies[0].layer.name == layer.strategies[1].layer.name),
|
(layer.strategies[0].layer.name == layer.strategies[1].layer.name),
|
||||||
"setLayer was called on strategies");
|
"setLayer was called on strategies");
|
||||||
|
|
||||||
|
options.renderers = [OpenLayers.Renderer.SVG, OpenLayers.Renderer.VML, OpenLayers.Renderer.Canvas];
|
||||||
|
layer.destroy();
|
||||||
|
layer = new OpenLayers.Layer.Vector(name, options);
|
||||||
|
t.ok(layer.renderer.CLASS_NAME, "layer has a renderer when providing a function");
|
||||||
|
layer.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_Layer_Vector_assignRenderer(t) {
|
||||||
|
t.plan(2);
|
||||||
|
|
||||||
|
// create a dummy class in the global name space
|
||||||
|
My = {
|
||||||
|
Custom: {
|
||||||
|
Renderer: {
|
||||||
|
Supported: OpenLayers.Class(OpenLayers.Renderer, {
|
||||||
|
supported: OpenLayers.Function.True,
|
||||||
|
CLASS_NAME: 'My.Custom.Renderer.Supported'
|
||||||
|
}),
|
||||||
|
NotSupported: OpenLayers.Class(OpenLayers.Renderer, {
|
||||||
|
supported: OpenLayers.Function.False,
|
||||||
|
CLASS_NAME: 'My.Custom.Renderer.NotSupported'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var layer = new OpenLayers.Layer.Vector('vector', {
|
||||||
|
renderers: [My.Custom.Renderer.NotSupported,
|
||||||
|
My.Custom.Renderer.Supported,
|
||||||
|
OpenLayers.Renderer.Canvas]
|
||||||
|
});
|
||||||
|
t.eq(layer.renderer.CLASS_NAME, 'My.Custom.Renderer.Supported',
|
||||||
|
'layer has a valid renderer');
|
||||||
|
|
||||||
|
var layer = new OpenLayers.Layer.Vector('vector', {
|
||||||
|
renderers: ['SVG', 'VML', 'Canvas', My.Custom.Renderer.Supported]
|
||||||
|
});
|
||||||
|
t.ok(layer.renderer.CLASS_NAME != 'My.Custom.Renderer.Supported',
|
||||||
|
'renderers can be strings as well');
|
||||||
}
|
}
|
||||||
|
|
||||||
function test_Layer_Vector_refresh(t) {
|
function test_Layer_Vector_refresh(t) {
|
||||||
|
|||||||
Reference in New Issue
Block a user