ThinkGeo.com    |     Documentation    |     Premium Support

Thematic Map with FilterStyle

Hello ThinkGeo,


I want to create Thematic Maps with the current ThinkGeo styles. I need to create styles for filters based on different column data. The GIS-Editor's FilterStyle is very close to my requirements but I can't find any class in your libraries. I found some older code samples where FleeBooleanStyle is used.


Is FilterStyle only accessible in GIS-Editor?


Is FilterStyle based on FleeBooleanStyle?


Is FleeBooleanStyle still supported?


Thanks Thomas



Hi Thomas, 
   
 Thanks for your post, following is the answers to your questions: 
   
 1.       You are right about “FilterStyle”, it is only supported in GIS-Editor for now. 
 2.       FilterStyle and FleeBooleanStyles has different implementation and there is not inheritaance relationship between them. 
 3.       FleeBoolean is still in our library, its sample could be found in “Drawing Using FleeBoolean Style” in “Extending Mapsuite” in “How Do I Sample”. 
   
 Hope it helps 
   
 Johnny

Hi Johnny, 
  
 thanks for inforamtion. Are there any plans to integrate it in the core library. I looked at FleeBoolean style but I would preffer using a basic ThinkGeo style because I don’t want to deal with ciloci library. 
  
 Thomas

Hi Thomas,


 


Thanks for your suggestion and I entered this feature into our internal feature list now, but we don't have enough resource on it now, we will try it as soon as we have any time. And before that, here is a workaround by
defined a custom filter style.




public class FilterStyle : Style{
 
protected override void DrawCore(IEnumerable<Feature> features
            , GeoCanvas canvas
            , Collection<SimpleCandidate> labelsInThisLayer
            , Collection<SimpleCandidate> labelsInAllLayers)
        {
                var matchingFeatures = features;
                foreach (var condition in conditions)
                {
                    matchingFeatures = //condition.GetMatchFeatures(matchingFeatures); you can defined the logic by yourself.
                }
 
                if (matchingFeatures.Count() > 0 && Styles != null)
                {
                    foreach (var style in Styles)
                    {
                        style.Draw(matchingFeatures, canvas, labelsInThisLayer, labelsInAllLayers);
                    }
                }
             
        }
}


Hope it helps.




Thanks,




Johnny