ThinkGeo.com    |     Documentation    |     Premium Support

InMemoryFeatureLayer shape type question

I have a map with 8 static layers and one InMemoryFeatureLayer.  I need to add points, lines, and polygons (regions) to the InMemoryFeatureLayer.  Do I need a separate InMemoryFeatureLayer for each shape type?  i.e. one for points, another for lines, and a third for polygon? 


And what about text?  I have added a point to my InMemoryFeatureLayer, but when I try to label it, nothing shows up.  Do I need another InMemoryFeatureLayer for text? 


Let me know if I need to post the code.  Thanks.



Hi Serena, 



Thanks for your questions however it might be best for you to review our Map Suite Desktop Edition Quick Start Guide that explains some of these concepts. You can find a complete listing of all available Quick Start Guides here: gis.thinkgeo.com/Support/Qui...fault.aspx


Additionally you state that you need to 'add points, lines, and polygons to the InMemoryFeatureLayer'. Do you mean that you have existing datasources containing the point, line and polygon informationthat you which to read from and add their information to the InMemoryFeatureLayer that you will then add to the map? Or do you mean that you want to start with a blank InMemoryFeatureLayer and draw out these points, lines, and polygons using your mouse?



I am in the process of converting an application that was using MapInfo MapX with TAB files to now using MapSuite with shape fiiles.  I have three street layers and three landmark layers.  I can display the street layers and landmark layers just fine.  What I need to add to the temporary layer is two points to mark an origin and destination, and a line to mark the route between these two points.  I also need to add text to label the description of the origin and destination points.  The user is not adding these to the map, it is being done in the code.  So, my question is:  should I have three separate layers for these shapes, or can they all go on one layer?  


Actually, I think I have just answered part of my question.  I have now been able to add the two points and the line to the one temporary layer.  I just need to know how to label the points on the temporary layer (through code, not user interaction).  I will post some code if you need it.


By the way, I have already looked at the quick start guide and most of the examples, but I will look at it again.  Thanks.



Hi Serena, 



Thanks for the additional background on your project. Normally we recommend setting up seperate layers for each shapetype. From the beginning of Map Suite we have supported Shapefile and the shapefile definition has requirements for only storing one shape-type per shapefile, ie. points in one shapefile, lines in another, areas/polygons in another. Thus our recommendation for setting up seperate layers for each shapefile you have. 



This also provides you a bit more flexibility when you want to turn on/off certain layers when you zoom in and out on the map. If you have all of your shapes in a single layer then all of these shapes will be visibile or invisible depending on your ZoomLevel. If you split these out into seperate Layers then you can individual turn on and off your AreaLayer, LineLayer, or PointLayer based on your ZoomLevel. 



Note also that you are not restricted to having one PointLayer, one LineLayer, and one AreaLayer; you can setup multiples of these to provide you the most flexibility. 



I don't want to confuse you, but there is not a restriction or requirement within the Map Suite Layer object to have all of these shape-types split out into seperate Layers. In fact if you have a datasource containing points, lines, and areas you can setup one Layer containing all of your shapes, then setup three styles for that Layer and all three shapetype will be properly displayed. So you are welcome to setup your Layer to contain all three shapetypes but you do lose some flexibility as stated above. 



To add Labels to shapefile-based data the easist way is to setup a TextStyle. The TextStyle has a ColumnName Property that you can set to the shapefile .dbf column that contains your label values.



Another thought: throwing different features in one layer would probably make a mess of trying to apply a TextStyle to display labels if different feature types had different label columns.   
  
 Allen

Agreed. If you need to display text for more than one features type it would be wise to setup seperate Layer objects for each feature type.