AW: [OpenLayers-Users] Drawfeature with multiple vector layers

Arnd Wippermann arnd.wippermann at web.de
Fri Jan 13 13:38:24 EST 2012


Hi,

I use controls[i].destroy() to get rid of the controls
and add them to another layer.

Arnd

-----Ursprüngliche Nachricht-----
Von: openlayers-users-bounces at lists.osgeo.org
[mailto:openlayers-users-bounces at lists.osgeo.org] Im Auftrag von Peter
Gesendet: Freitag, 13. Januar 2012 16:19
An: users at openlayers.org
Betreff: [OpenLayers-Users] Drawfeature with multiple vector layers

hey guys,

i like to draw polygons on a map, but it is important that i have several
levels. So my idea was to add a vector layer for each level. to change
between the layers i use the " map.removeControl(controls[key]);"  function
to remove all controls needed for drawing and re-add the controls with the
new selected layer. So my problem is now, that all works fine with the
initalized layer, but when i change to annother layer it the drawing feature
behaves strange and it is not possible to draw new polygons. So please help
me how i can use the drawfeature Control with multiple layers.

My pseudo Code:
//create multiple layers: one for each level
        var styleMapL1 = new OpenLayers.StyleMap({fillColor: "green"});
	vlayer1 = new OpenLayers.Layer.Vector("Layer 1", {styleMap:
styleMapL1});
	layerArray[1] = vlayer1;
	var styleMapL2 = new OpenLayers.StyleMap({fillColor: "red"});
	vlayer2 = new OpenLayers.Layer.Vector("Layer 2", {styleMap:
styleMapL2});
	layerArray[2] = vlayer2;
	var styleMapL3 = new OpenLayers.StyleMap({fillColor: "blue"});
	vlayer3 = new OpenLayers.Layer.Vector("Layer 3", {styleMap:
styleMapL3});
	layerArray[3] = vlayer3;

        map.addLayers([vlayer1, vlayer2, vlayer3]);

        this.addControls(3);

//this method is called when i want to change the layers function
switchControls(layerIndex)
		{
			this.removeControls();
			this.addControls(layerIndex);
		}
		
		function addControls(layerIndex)
		{
			if(layerIndex != null)
			{
				var layer = layerArray[layerIndex];
				controls = {
					    polygon: new
OpenLayers.Control.DrawFeature(layer,
OpenLayers.Handler.Polygon)	 
					};

					for(var key in controls) {
									
					    map.addControl(controls[key]);
					    controls[key].activate();	
	

					}
				
			}
		}
		function removeControls()
		{
			for(var key in controls) {
				
			    map.removeControl(controls[key]);

			}
			
		}


Greetings Peter


--
View this message in context:
http://osgeo-org.1803224.n2.nabble.com/Drawfeature-with-multiple-vector-laye
rs-tp7184326p7184326.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
Users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users



More information about the Users mailing list