ThinkGeo.com    |     Documentation    |     Premium Support

Labels for the GridIsoLineLayer

I am working with the GridIsoLineLayer and GridFeatureLayer to display isolines.  The sample code adds labels to the isolines on the GridIsoLineLayer.   I would like to add a "title" for the entire grid of isolines but I can't figure out how to add a label  to the existing layers for either the GridIosLineLayer or the GridFeatureLayer.  I have tried creating a new feature  and defining the label using:


textStyle.LabelPositions.Add(feature.Id, new WorldLabelingCandidate( "My label", new PointShape(-80, 32.5)));


This will create the label in the GridFeatureLayer but only if I make the TextStyle the DefaultTextStyle for the layer which seems to conflict with the CustomStyles for the ClassBreaks.   I have a different problem in the GridIsoLineLayer in that I can't add the feature where the label is defined.   If anyone can offer me any help or point me to a sample where I might find this type of function, I would greatly appreciate it.


Also, I would like to suppress the Grid Lines in the GridFeatureLayer.  I want to get the shading that the GridFeatureLayer provides with the ClassBreaks but I don't need to see the lines of all the rows and columns of the cells,  Is there any easy way to prevent the layer from drawing the grid matrix lines?


Richard


 


 



Hi Richard, 
  
 Sorry I am not very familiar with the ISOLine related sample, could you tell me which one you viewed? 
  
 If you only want to add a label in map, you can try to put the label in another inMemoryFeatureLayer, if you put it in customerStyles, all default styles won’t works. 
  
 I think I also need did some research so I can reply your 2nd question about how to remove the lines. 
  
 Regards, 
  
 Don

 Richard,



 I’m not sure what you mean by “add a “title” for the entire grid of isolines”, if you want to label the cell of GridFeatureLayer with your own data, you need to implement the CustomColumnFetch event as following:



        TextStyle textStyle = TextStyles.CreateSimpleTextStyle("MyCustomColumn", "Arial", 8, DrawingFontStyles.Regular, GeoColor.StandardColors.Black, 0, 0);
        gridFeatureLayer.FeatureSource.CustomColumnFetch += new EventHandler<CustomColumnFetchEventArgs>(FeatureSource_CustomColumnFetch);
        gridFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle);

    // implement the event to simply return "1" for every feature for example
    void FeatureSource_CustomColumnFetch(object sender, CustomColumnFetchEventArgs e)
    {
        if (e.ColumnName == "MyCustomColumn")
        {
            e.ColumnValue = "1";
        }
    }

 I’m not sure what you mean by “I can't add the feature where the label is defined” in Grid IsoLineLayer, can you provide more explanation on your scenario?


 About suppressing the Grid Lines in the GridFeatureLayer, you can simply remove the outer Pen in the ClassBreakStyle of gridFeatureLayer.  For example by modifying the ClassBreakStyle as following: 



        //Setup a class break style based on the isoline levels and the colors
        AreaStyle firstStyle = new AreaStyle(new GeoSolidBrush(GeoColor.FromArgb(100, colors[0])));
        classBreakLineStyle.ClassBreaks.Add(new ClassBreak(double.MinValue, firstStyle));
        for (int i = 1; i < colors.Count -1; i++)
        {            
            AreaStyle style = new AreaStyle(new GeoSolidBrush(GeoColor.FromArgb(100, colors<i>)));
            classBreakLineStyle.ClassBreaks.Add(new ClassBreak(isoLineBreaks<i>, style));
        }

I can get this:



Thanks,


Ben




 



Ben,


Thanks for the responses.


You found the correct sample from the looks of the second response.  I was using the DisplayIsoLinesWinforms sample but I believe it is very simiar to the DisplayIsoLinesWPF sample.


My first problem was trying to get a title to appear outside the bounds of the IsoLines bounding box.  We want to display multiple isoline analyses on the map at the same time and we just wanted a quick identifcation for which analysis produced a set of isolines.  I was able to get this working using the GetGridFeaturelayer method.  I defined a TextStyle using CreateSimpleTextStyle and added this TextStyle to the CustomStyles already created for the ClassBreakLineStyles.  Then using the first feature in the GridFeatureLayer.FeatureSource, I added the title to the textStyle.LabelPositions.  Below is a snippet of my code


gridFeatureLayer.FeatureSource.Open;


textStyle.LabelPositions.Add(gridFeatureSource.GetAllFeatures(ReturningColumnsType.AllColumns)[0].Id, new WorldLabelingCandidate("My Isoline Title", new PointShape(MinLongitude, MaxLatitude)));


gridFeatureLayer.FeatureSource.Close();


gridFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(textStyle);


It probably is the most elegant or efficient way to add a Title but it seems to be working.


Thanks for the tip on hiding the grid lines.  I had almost reached the solution you suggested by setting the alpha portion of the GeoPen color to a very small value making the lines nearly transparent.  I believe you solution will meet our needs.


 


Thanks for your assistance.


 


Richard


 


 


 


 


 



Richard, 
  
 Ben is expert on this, his reply is very helpful. 
  
 Thanks for your update and code share.  
  
 If you have any more questions please let us know. 
  
 Regards, 
  
 Don

Richard, 
  
 Ben is expert on this, his reply is very helpful. 
  
 Thanks for your update and code share.  
  
 If you have any more questions please let us know. 
  
 Regards, 
  
 Don