ThinkGeo.com    |     Documentation    |     Premium Support

Map.StaticOverlay.Layers.Insert question

Hello,


I have taken a long break from the Web component but needed to update some parts of a demo site we currently have up. I remember I wanted to Insert the layers as opposed to adding them because I always wanted the layer I was adding to be inserted at the bottom of the map so that I would have the order of my Layer List be the same topological order the layers appear in the map.


This would allow me to do all of my work in one pass instead of two (processing in one order for the layer list and in the opposite order for adding the layers to the map). It seems, however, that when I insert a layer into the collection, I forfeit the ability to give the entry a key. Is this true? Being able to reference a layer by it's given key is crucial for a variety of reasons so I would like to be able to insert the layer with Layers.Insert(0, layerToAdd)  but have the ability to also use Layers(layerName) and still retrieve the result. I would rather not loop through the collection to find a match if I don't have to. Doing Layers.Add allows for specifying a key. Can this be done on the Insert as well?


Thanks,


Nelson



Nelson, 
  
   All of these are doable.  The logic will be the same as you mentioned, we will just hide it from you.  The good news is that we can enhance the GeoCollection which is the collection of choice in most of the Map Suite APIs.  This means it should work all over the place.   
  
   It is funny because the ability to add by key and also get correct position on entry is reserverd to just dictionaries and they have dictionary items which we though most people would not like.  Our GeoCollection is a bit unique in that it gives us the best of both worlds.  With the enhancements you mentioned it will be even better and more powerful. 
  
 David

Sounds good, David. I appreciate the feedback.

OK, please feel free to let us know if you have more questions.


Thanks,
Sun

When could I expect this to be incorporated?

Nelson, 
  
 We are now checking the API of the overload method with our manager; I think it will be incorporated soon. Please be patient and we’ll let you know then. 
  
 Thanks, 
 Howard

Thank you. I am just working on a project right now where this is sort of hanging it up currently. A rough idea of what ‘soon’ is would be helpful so that I know if I need to code a work-around in the mean time or if I can avoid that unneccessary work by working on something else in the mean time. Those decisions are all dependant on time-frames… 
  
 Thanks.

Hi Nelson,


Because we just had a public release a few days ago, I’m afraid that we will not have anther release containing this kind of API in this week. So I think you’d better code a work around if this is urgent for your project. To work around this, we suggest you to add the layer first, and then call the function MoveToBottom to move the layer to the bottom of the map. The code could be like this:

Map1.StaticOverlay.Layers.Add("NewLayer", layerToAdd);
Map1.StaticOverlay.Layers.MoveToBottom(Map1.StaticOverlay.Layers.Count - 1);

Sorry for the inconvenience and any more questions please let me know.
Thanks,
Sun

That isn’t inconvenient at all. It’s only one extra line. That’s about as convenient a work around as I’ve ever come across!  
  
 Thank you!

OK, Nelson, please feel free to let us know if you have any more questions. 
  
 Thanks, 
  
 Sun