ThinkGeo.com    |     Documentation    |     Premium Support

Overlay collection

Hi All,


I have come across something strange and cant explain it.


I was using the following line of code which worked perfectly well for a set of data:


 LayerOverlay staticOverlay = (LayerOverlay)wpfMap1.Overlays[overlayName];



With a different layer it doesnt work. I have found looping though all the overlays and checking if the names match and then assigning the overlay does though??


LayerOverlay staticOverlay = new LayerOverlay();



            foreach (Overlay overlay in wpfMap1.Overlays)

            {



                if (overlay != null)

                {



                    if (overlay.Name == overlayName)

                    {

                        staticOverlay = (LayerOverlay)overlay;

                    }

                }



            }


Isnt this doing exactly the same thing?


thanks


Phil



Phil, 
  
   The two ways of finding the overlay are not the same.  When you use the indexer, Overlays[“Some Key”] it is searching for the overlay by its string key.  It’s the string key that was created when you added the overlay to the collection, ie. Overlays.Add(“Some Key”,overlay).  The name on the overlay is just a property that you can optionally set and has nothing to do with the collection look up by string.  The name was added so you have along name that can be used for things like legends etc. 
  
 Thanks, 
  
 David Rehagen

ok thanks David

Hello Phil. 
  
 You are welcome, please feel free to let us know your problems. 
  
 Regards, 
  
 Gary