decode static method
Implementation
static ModelLayer decode(String properties) {
var map = json.decode(properties);
if (map["layout"] == null) {
map["layout"] = {};
}
if (map["paint"] == null) {
map["paint"] = {};
}
return ModelLayer(
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: _optionalCastList(map["layout"]["visibility"]),
filter: _optionalCastList(map["filter"]),
modelId: _optionalCast(map["layout"]["model-id"]),
modelIdExpression: _optionalCastList(map["layout"]["model-id"]),
modelAmbientOcclusionIntensity:
_optionalCast(map["paint"]["model-ambient-occlusion-intensity"]),
modelAmbientOcclusionIntensityExpression:
_optionalCastList(map["paint"]["model-ambient-occlusion-intensity"]),
modelCastShadows: _optionalCast(map["paint"]["model-cast-shadows"]),
modelCastShadowsExpression:
_optionalCastList(map["paint"]["model-cast-shadows"]),
modelColor: (map["paint"]["model-color"] as List?)?.toRGBAInt(),
modelColorExpression: _optionalCastList(map["paint"]["model-color"]),
modelColorMixIntensity:
_optionalCast(map["paint"]["model-color-mix-intensity"]),
modelColorMixIntensityExpression:
_optionalCastList(map["paint"]["model-color-mix-intensity"]),
modelCutoffFadeRange:
_optionalCast(map["paint"]["model-cutoff-fade-range"]),
modelCutoffFadeRangeExpression:
_optionalCastList(map["paint"]["model-cutoff-fade-range"]),
modelEmissiveStrength:
_optionalCast(map["paint"]["model-emissive-strength"]),
modelEmissiveStrengthExpression:
_optionalCastList(map["paint"]["model-emissive-strength"]),
modelHeightBasedEmissiveStrengthMultiplier: (map["paint"]
["model-height-based-emissive-strength-multiplier"] as List?)
?.map<double?>((e) => e.toDouble())
.toList(),
modelHeightBasedEmissiveStrengthMultiplierExpression: _optionalCastList(
map["paint"]["model-height-based-emissive-strength-multiplier"]),
modelOpacity: _optionalCast(map["paint"]["model-opacity"]),
modelOpacityExpression: _optionalCastList(map["paint"]["model-opacity"]),
modelReceiveShadows: _optionalCast(map["paint"]["model-receive-shadows"]),
modelReceiveShadowsExpression:
_optionalCastList(map["paint"]["model-receive-shadows"]),
modelRotation: (map["paint"]["model-rotation"] as List?)
?.map<double?>((e) => e.toDouble())
.toList(),
modelRotationExpression:
_optionalCastList(map["paint"]["model-rotation"]),
modelRoughness: _optionalCast(map["paint"]["model-roughness"]),
modelRoughnessExpression:
_optionalCastList(map["paint"]["model-roughness"]),
modelScale: (map["paint"]["model-scale"] as List?)
?.map<double?>((e) => e.toDouble())
.toList(),
modelScaleExpression: _optionalCastList(map["paint"]["model-scale"]),
modelScaleMode: map["paint"]["model-scale-mode"] == null
? null
: ModelScaleMode.values.firstWhere((e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["paint"]["model-scale-mode"])),
modelScaleModeExpression:
_optionalCastList(map["paint"]["model-scale-mode"]),
modelTranslation: (map["paint"]["model-translation"] as List?)
?.map<double?>((e) => e.toDouble())
.toList(),
modelTranslationExpression:
_optionalCastList(map["paint"]["model-translation"]),
modelType: map["paint"]["model-type"] == null
? null
: ModelType.values.firstWhere((e) => e.name
.toLowerCase()
.replaceAll("_", "-")
.contains(map["paint"]["model-type"])),
modelTypeExpression: _optionalCastList(map["paint"]["model-type"]),
);
}