Hi list,
I want to show a set of feature attributes (all Strings) as one label in the map next to the point/graphic. Like "1; London; 12" (number of item, name and a status). Since the user can toggle check boxes to switch on/off single values I can not store all information in one feature attribute. Instead of this I have n (currently 5) feature attributes for this. This is the way I thought it's the correct one:
---- code ----
// after each attribute except the last one a seperator like ";"
// textAttributes is a List of attributes the user wants to be shown
// Attributes is a enum with all attributes
_expression_[] expressions = new _expression_[textAttributes.size()*2-1];
int i = 0;
for (Attributes a : Attributes.values()){
if (textAttributes.contains(a)){
// attribute _expression_ for the attribute
_expression_ attributeExpression = FilterFactoryFinder.createFilterFactory().createAttributeExpression(a.name());
// literal _expression_ for the seperator
LiteralExpression seperator = FilterFactoryFinder.createFilterFactory().createLiteralExpression(";");
expressions[i++]=attributeExpression;
if (i<expressions.length){
expressions[i++]=seperator;
}
}
}
// Filter to concatenate strings
FilterFunction_strConcat concatFunction = new FilterFunction_strConcat();
concatFunction.setArgs(expressions);
// create TextSymbolizer (fill and font are handled above... not interesting here)
myStyleBuilder.createTextSymbolizer(fill, new Font[] {gtFont},null, concatFunction, placement, null));
---- code ----
What happend?
Independet of the number of attributes I want to show (2,3,4,5) only the first attribute combined with the first seperator (";") is drawn. So I got "London;" instead of "London;1;3". If I flip the order of attributes I get "1;" instead of "1;London;3". As I said only the first two expressions (one attribute, one literal) are included. Since these two are included I guess that the FilterFunction_strConcat is the correct way. Can someone help me with this?
I debuged it and the expressions array is build correct, has no null elements and all seems ok.
Thank you,
tony roth