[ms4w-users] Problem with layer ordering
Russell H. DeGrove
russell at goisc.com
Mon Sep 25 16:39:41 EDT 2006
I am trying to change the order layers are rendered in. I'm using SWIG for C#.
Code is as follows
// "mObj" is a mapObject.
// "list" is a list of "Layer" objects which aren't layerObjs but which do reference layerObj names
// "list" is in the order I want, and when this code is reached I've verified that every Layer in "list" has a corresponding layerObj in mObj
intarray arr = new intarray( list.Count );
int arrIndex = 0;
bool hasDiff = false;
foreach ( Layer reqLay in list )
// find the layer object by the request layer's ID
layerObj lObj = mObj.getLayerByName( reqLay.ID );
if ( lObj == null )
throw new ApplicationException( "SetLayerOrdering must not be called until new layers are merged into the map state." );
// is layer order different from the original order
if ( arrIndex != lObj.index )
hasDiff = true;
// add the index to the intarray
arr.setitem( arrIndex++, lObj.index );
// set drawing order if any differences are found
if ( hasDiff )
mObj.setLayersDrawingOrder( arr.cast() );
I can step through the code and see that mObj.setLayersDrawingOrder gets called when there are changes but the subsequent map rendering does not reflect the change in ordering. Can anyone suggest what I might be doing wrong?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the ms4w-users