I set up a map and a layer switcher thusly:

var map = new OpenLayers.Map("liveMap", options);
map.addLayer(new OpenLayers.Layer.OSM());
var layerSwitcher = new OpenLayers.Control.LayerSwitcher();
map.addControl(layerSwitcher);

Then I add a data layer:

...

  var points = new OpenLayers.Layer.Vector(
      variableName,
      {
        styleMap: dataStyles,
        rendererOptions: {zIndexing: true}
      }
  );

// dataPoints is an Array of new OpenLayers.Feature.Vector(new 
OpenLayers.Geometry.Point(etc etc))...

  points.addFeatures(dataPoints);
  map.addLayer(points);
...// and other stuff to populate the layer...

That all works fine.  But I need to periodically let the user change some 
attributes of the layer, and there needs to be a name change to the layer at 
that time.  I change the name of the layer like this::

map.layers[indexOfDatalayer].name = newName;

and the name shows up in the layer as I look at the data structure's values 
using Firebug's Watch functionality.  However, I can't get the name of the 
layer that shows by its checkbox in layerSwitcher to reflect the name change 
(except sporadically and by doing other undesirable things to the 
layerSwitcher). I've even gone so far as to destroy the layerSwitcher and 
create a new one, thinking it would pick up on the new layer name, but it 
doesn't:

layerSwitcher.destroy;
layerSwitcher = new OpenLayers.Control.LayerSwitcher();
map.addControl(ShipDataSet.layerSwitcher);

Some other things I've tried:
map.controls[4].layerStates[1].name = name; // the layerSwitcher is 
map.controls[4].
map.controls[4].loadContents();
map.controls[4].updateMap();
map.controls[4].redraw();
layer.refresh();

I'd really appreciate any suggestions on getting the name of the layer to 
change in the layerSwitcher when I change the name of the layer.  Thanks.

Steve Chall
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to