Added Map::addControls method. Yet another quality patch from Marc, with everything done right plus unit tests. p=marcjansen, r=me (closes #2399)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@10085 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -1167,6 +1167,8 @@ OpenLayers.Map = OpenLayers.Class({
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* APIMethod: addControl
|
* APIMethod: addControl
|
||||||
|
* Add the passed over control to the map. Optionally
|
||||||
|
* position the control at the given pixel.
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* control - {<OpenLayers.Control>}
|
* control - {<OpenLayers.Control>}
|
||||||
@@ -1176,6 +1178,28 @@ OpenLayers.Map = OpenLayers.Class({
|
|||||||
this.controls.push(control);
|
this.controls.push(control);
|
||||||
this.addControlToMap(control, px);
|
this.addControlToMap(control, px);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* APIMethod: addControls
|
||||||
|
* Add all of the passed over controls to the map.
|
||||||
|
* You can pass over an optional second array
|
||||||
|
* with pixel-objects to position the controls.
|
||||||
|
* The indices of the two arrays should match and
|
||||||
|
* you can add null as pixel for those controls
|
||||||
|
* you want to be autopositioned.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* controls - {Array(<OpenLayers.Control>)}
|
||||||
|
* pixels - {Array(<OpenLayers.Pixel>)}
|
||||||
|
*/
|
||||||
|
addControls: function (controls, pixels) {
|
||||||
|
var pxs = (arguments.length === 1) ? [] : pixels;
|
||||||
|
for (var i=0, len=controls.length; i<len; i++) {
|
||||||
|
var ctrl = controls[i];
|
||||||
|
var px = (pxs[i]) ? pxs[i] : null;
|
||||||
|
this.addControl( ctrl, px );
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method: addControlToMap
|
* Method: addControlToMap
|
||||||
|
|||||||
@@ -921,6 +921,35 @@
|
|||||||
map.destroy();
|
map.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_Map_addControls(t) {
|
||||||
|
t.plan(5);
|
||||||
|
var map = new OpenLayers.Map('map', {
|
||||||
|
controls: []
|
||||||
|
});
|
||||||
|
var controls = [
|
||||||
|
new OpenLayers.Control({id:'firstctrl'}),
|
||||||
|
new OpenLayers.Control({id:'secondctrl'})
|
||||||
|
];
|
||||||
|
map.addControls(controls);
|
||||||
|
t.eq(map.controls.length, 2, "two controls were added by map.addControls without a px-array");
|
||||||
|
t.eq(map.controls[0].id, 'firstctrl', "control with index 0 has id 'firstctrl'");
|
||||||
|
t.eq(map.controls[1].id, 'secondctrl', "control with index 1 has id 'secondctrl'");
|
||||||
|
|
||||||
|
var controls2 = [
|
||||||
|
new OpenLayers.Control({id:'thirdctrl'}),
|
||||||
|
new OpenLayers.Control({id:'fourthctrl'}),
|
||||||
|
new OpenLayers.Control({id:'fifthctrl'})
|
||||||
|
];
|
||||||
|
// this array is intentionally one element shorter than the above
|
||||||
|
var pixels2 = [
|
||||||
|
null,
|
||||||
|
new OpenLayers.Pixel(27,11)
|
||||||
|
];
|
||||||
|
map.addControls(controls2, pixels2);
|
||||||
|
t.eq(map.controls.length, 5, "three additional controls were added by map.addControls with a px-array");
|
||||||
|
t.eq(map.controls[3].position.toString(), pixels2[1].toString(), "control 'fourthctrl' has position set to given px");
|
||||||
|
}
|
||||||
|
|
||||||
function test_Map_getControl(t) {
|
function test_Map_getControl(t) {
|
||||||
t.plan(2);
|
t.plan(2);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user