Mapsforge themes 3D buildings, fix #411

This commit is contained in:
Emux 2017-09-27 13:18:30 +03:00
parent ed8f03122b
commit 75c2841a13

View File

@ -175,9 +175,12 @@ public class XmlMapsforgeThemeBuilder extends DefaultHandler {
@Override
public void endDocument() {
// Building rule for Mapsforge themes
mRulesList.add(buildingRule());
Rule[] rules = new Rule[mRulesList.size()];
for (int i = 0, n = rules.length; i < n; i++)
rules[i] = mRulesList.get(i).onComplete(null);
rules[i] = mRulesList.get(i).onComplete(new int[1]);
mRenderTheme = createTheme(rules);
@ -1216,4 +1219,19 @@ public class XmlMapsforgeThemeBuilder extends DefaultHandler {
throw new ThemeException("missing attribute " + name
+ " for element: " + elementName);
}
/**
* Building rule for Mapsforge themes.
*/
private RuleBuilder buildingRule() {
ExtrusionBuilder<?> b = mExtrusionBuilder.reset();
b.level(mLevels++);
b.themeCallback(mThemeCallback);
b.colorLine(0xffd9d8d6);
b.colorSide(0xeaecebe9);
b.colorTop(0xeaf9f8f6);
RuleBuilder rule = new RuleBuilder(RuleBuilder.RuleType.POSITIVE, new String[]{"building"}, new String[]{});
rule.element(Rule.Element.WAY).zoom((byte) 17, Byte.MAX_VALUE).style(b);
return rule;
}
}