ThinkGeo.com    |     Documentation    |     Premium Support

Styling a collection of GeometryCollectionShapes

 I have a collection of features, each with a GeometryCollectionShape, which I need to style based on feature data attribute.  For this particular scenario, each GeometryCollectionShape will consist of a Line and a Polygon.


I created a ValueStyle , set its ColumnName and gave it a simple line and fill style but my feature was not rendered.  This is how I created the style.


  What am I missing?  TIA.


 



  var valueStyle = new ValueStyle();
            valueStyle.ColumnName = "Satellite";                       
            var styles = new Collection<Style>();
            styles.Add(LineStyles.Highway1);
            styles.Add(AreaStyles.Country1);
            ValueItem item = new ValueItem("S01", styles);
            ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle);
            ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


Hi Klaus, 
  
 Which layer or overlay did you add these features in. If it is InMemoryFeatureLayer or InMemoryMarkerOverlay, please check if you have added a FeatureSourceColumn "Satellite" on the layer or overlay. For example, layer.Columns.Add(new FeatureSourceColumn("Satellite")); 
  
 Please have a try and let me know if you have more information. 
  
 Thanks, 
 Howard

 Howard, I am already doing this as part of layer setup like so:


 


 



void SetupLayerDataSchema(DataTableInfo geoDatasetSchema)
        { 
            if (geoDatasetSchema != null && geoDatasetSchema.Columns.Count > 0)
            {
                Open();
                foreach (var field in geoDatasetSchema.Columns)
                    if (field.ValidateColumn())
                        Columns.Add(new FeatureSourceColumn(field.Name, field.TypeString, 100));
                Close();
            }
        }


Quick question:  If I have more than one custom line style defined, which one do you use to draw the line/

 Howard et co,


 
I have attached a sample project which is simply a modification of the CreateAnInMemoryFeatureLayer sample.  I have two methods CreateDefaultStyles and CreateCustomValueStyles.  First uses default styles and second uses custom styles collection.  Please investigate and advise why ValueStyle created using second method does not render feature.  Will appreciate a quick response or just a tip on what I am doing wrong.  
 
BTW, this is using v 4.0.161.0 of DLLs.
 
Thanks.

Guys, anyone look at this?   I will like to get this feature in today.

Klaus, 
  
 I took a look at your code and I think the problem is a missing line of code in the CreateCustomValueStyles routine. 
  
 valueStyle.ValueItems.Add(item); 
  
 This will line of code will add the ValueItem you created for "S01" to the ValueStyle.  I also noticed you were adding an AreaStyle of Country1 to your Styles collection while the features you were adding were lines, however you are also adding Highway1 which is a lineStyle so I would expect the lines to be displayed with this style once you add the line of code above. 
  
 Hope this helps. 
  
 Thanks!

… yes, that was it.  Thanks Clint.    My GeometryCollectionShapes will have lines and polygons, hence my reason for testing with highway and country styles. 
  
 Thanks again.

Hi Klaus, 
  
 Sorry for delaying your question and it is great that you have fixed your issue. Thanks to Clint. 
  
 Thanks, 
 Howard