Implementation
static FillExtrusionLayer decode(String properties) {
var map = json.decode(properties);
if (map["layout"] == null) {
map["layout"] = {};
}
if (map["paint"] == null) {
map["paint"] = {};
}
return FillExtrusionLayer(
id: map["id"],
sourceId: map["source"],
sourceLayer: map["source-layer"],
minZoom: map["minzoom"]?.toDouble(),
maxZoom: map["maxzoom"]?.toDouble(),
slot: map["slot"],
visibility: map["layout"]["visibility"] == null
? Visibility.VISIBLE
: Visibility.values.firstWhere(
(e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["layout"]["visibility"]),
),
visibilityExpression: styleOptionalCastList(map["layout"]["visibility"]),
filter: styleOptionalCastList(map["filter"]),
fillExtrusionEdgeRadius: styleOptionalCast(
map["layout"]["fill-extrusion-edge-radius"],
),
fillExtrusionEdgeRadiusExpression: styleOptionalCastList(
map["layout"]["fill-extrusion-edge-radius"],
),
fillExtrusionAmbientOcclusionGroundAttenuation: styleOptionalCast(
map["paint"]["fill-extrusion-ambient-occlusion-ground-attenuation"],
),
fillExtrusionAmbientOcclusionGroundAttenuationExpression:
styleOptionalCastList(
map["paint"]["fill-extrusion-ambient-occlusion-ground-attenuation"],
),
fillExtrusionAmbientOcclusionGroundRadius: styleOptionalCast(
map["paint"]["fill-extrusion-ambient-occlusion-ground-radius"],
),
fillExtrusionAmbientOcclusionGroundRadiusExpression:
styleOptionalCastList(
map["paint"]["fill-extrusion-ambient-occlusion-ground-radius"],
),
fillExtrusionAmbientOcclusionIntensity: styleOptionalCast(
map["paint"]["fill-extrusion-ambient-occlusion-intensity"],
),
fillExtrusionAmbientOcclusionIntensityExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-ambient-occlusion-intensity"],
),
fillExtrusionAmbientOcclusionRadius: styleOptionalCast(
map["paint"]["fill-extrusion-ambient-occlusion-radius"],
),
fillExtrusionAmbientOcclusionRadiusExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-ambient-occlusion-radius"],
),
fillExtrusionAmbientOcclusionWallRadius: styleOptionalCast(
map["paint"]["fill-extrusion-ambient-occlusion-wall-radius"],
),
fillExtrusionAmbientOcclusionWallRadiusExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-ambient-occlusion-wall-radius"],
),
fillExtrusionBase: styleOptionalCast(map["paint"]["fill-extrusion-base"]),
fillExtrusionBaseExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-base"],
),
fillExtrusionBaseAlignment:
map["paint"]["fill-extrusion-base-alignment"] == null
? null
: FillExtrusionBaseAlignment.values.firstWhere(
(e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["paint"]["fill-extrusion-base-alignment"]),
),
fillExtrusionBaseAlignmentExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-base-alignment"],
),
fillExtrusionCastShadows: styleOptionalCast(
map["paint"]["fill-extrusion-cast-shadows"],
),
fillExtrusionCastShadowsExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-cast-shadows"],
),
fillExtrusionColor: (map["paint"]["fill-extrusion-color"] as List?)
?.toRGBAInt(),
fillExtrusionColorExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-color"],
),
fillExtrusionCutoffFadeRange: styleOptionalCast(
map["paint"]["fill-extrusion-cutoff-fade-range"],
),
fillExtrusionCutoffFadeRangeExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-cutoff-fade-range"],
),
fillExtrusionEmissiveStrength: styleOptionalCast(
map["paint"]["fill-extrusion-emissive-strength"],
),
fillExtrusionEmissiveStrengthExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-emissive-strength"],
),
fillExtrusionFloodLightColor:
(map["paint"]["fill-extrusion-flood-light-color"] as List?)
?.toRGBAInt(),
fillExtrusionFloodLightColorExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-flood-light-color"],
),
fillExtrusionFloodLightGroundAttenuation: styleOptionalCast(
map["paint"]["fill-extrusion-flood-light-ground-attenuation"],
),
fillExtrusionFloodLightGroundAttenuationExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-flood-light-ground-attenuation"],
),
fillExtrusionFloodLightGroundRadius: styleOptionalCast(
map["paint"]["fill-extrusion-flood-light-ground-radius"],
),
fillExtrusionFloodLightGroundRadiusExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-flood-light-ground-radius"],
),
fillExtrusionFloodLightIntensity: styleOptionalCast(
map["paint"]["fill-extrusion-flood-light-intensity"],
),
fillExtrusionFloodLightIntensityExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-flood-light-intensity"],
),
fillExtrusionFloodLightWallRadius: styleOptionalCast(
map["paint"]["fill-extrusion-flood-light-wall-radius"],
),
fillExtrusionFloodLightWallRadiusExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-flood-light-wall-radius"],
),
fillExtrusionHeight: styleOptionalCast(
map["paint"]["fill-extrusion-height"],
),
fillExtrusionHeightExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-height"],
),
fillExtrusionHeightAlignment:
map["paint"]["fill-extrusion-height-alignment"] == null
? null
: FillExtrusionHeightAlignment.values.firstWhere(
(e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["paint"]["fill-extrusion-height-alignment"]),
),
fillExtrusionHeightAlignmentExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-height-alignment"],
),
fillExtrusionLineWidth: styleOptionalCast(
map["paint"]["fill-extrusion-line-width"],
),
fillExtrusionLineWidthExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-line-width"],
),
fillExtrusionOpacity: styleOptionalCast(
map["paint"]["fill-extrusion-opacity"],
),
fillExtrusionOpacityExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-opacity"],
),
fillExtrusionPattern: styleOptionalCast(
map["paint"]["fill-extrusion-pattern"],
),
fillExtrusionPatternExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-pattern"],
),
fillExtrusionPatternCrossFade: styleOptionalCast(
map["paint"]["fill-extrusion-pattern-cross-fade"],
),
fillExtrusionPatternCrossFadeExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-pattern-cross-fade"],
),
fillExtrusionRoundedRoof: styleOptionalCast(
map["paint"]["fill-extrusion-rounded-roof"],
),
fillExtrusionRoundedRoofExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-rounded-roof"],
),
fillExtrusionTranslate:
(map["paint"]["fill-extrusion-translate"] as List?)
?.map<double?>((e) => e.toDouble())
.toList(),
fillExtrusionTranslateExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-translate"],
),
fillExtrusionTranslateAnchor:
map["paint"]["fill-extrusion-translate-anchor"] == null
? null
: FillExtrusionTranslateAnchor.values.firstWhere(
(e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["paint"]["fill-extrusion-translate-anchor"]),
),
fillExtrusionTranslateAnchorExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-translate-anchor"],
),
fillExtrusionVerticalGradient: styleOptionalCast(
map["paint"]["fill-extrusion-vertical-gradient"],
),
fillExtrusionVerticalGradientExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-vertical-gradient"],
),
fillExtrusionVerticalScale: styleOptionalCast(
map["paint"]["fill-extrusion-vertical-scale"],
),
fillExtrusionVerticalScaleExpression: styleOptionalCastList(
map["paint"]["fill-extrusion-vertical-scale"],
),
);
}