decode static method

SymbolLayer decode(
  1. String properties
)

Implementation

static SymbolLayer decode(String properties) {
  var map = json.decode(properties);
  if (map["layout"] == null) {
    map["layout"] = {};
  }
  if (map["paint"] == null) {
    map["paint"] = {};
  }
  return SymbolLayer(
    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"]),
    iconAllowOverlap: _optionalCast(map["layout"]["icon-allow-overlap"]),
    iconAllowOverlapExpression:
        _optionalCastList(map["layout"]["icon-allow-overlap"]),
    iconAnchor: map["layout"]["icon-anchor"] == null
        ? null
        : IconAnchor.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["icon-anchor"])),
    iconAnchorExpression: _optionalCastList(map["layout"]["icon-anchor"]),
    iconIgnorePlacement:
        _optionalCast(map["layout"]["icon-ignore-placement"]),
    iconIgnorePlacementExpression:
        _optionalCastList(map["layout"]["icon-ignore-placement"]),
    iconImage: _optionalCast(map["layout"]["icon-image"]),
    iconImageExpression: _optionalCastList(map["layout"]["icon-image"]),
    iconKeepUpright: _optionalCast(map["layout"]["icon-keep-upright"]),
    iconKeepUprightExpression:
        _optionalCastList(map["layout"]["icon-keep-upright"]),
    iconOffset: (map["layout"]["icon-offset"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconOffsetExpression: _optionalCastList(map["layout"]["icon-offset"]),
    iconOptional: _optionalCast(map["layout"]["icon-optional"]),
    iconOptionalExpression: _optionalCastList(map["layout"]["icon-optional"]),
    iconPadding: _optionalCast(map["layout"]["icon-padding"]),
    iconPaddingExpression: _optionalCastList(map["layout"]["icon-padding"]),
    iconPitchAlignment: map["layout"]["icon-pitch-alignment"] == null
        ? null
        : IconPitchAlignment.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["icon-pitch-alignment"])),
    iconPitchAlignmentExpression:
        _optionalCastList(map["layout"]["icon-pitch-alignment"]),
    iconRotate: _optionalCast(map["layout"]["icon-rotate"]),
    iconRotateExpression: _optionalCastList(map["layout"]["icon-rotate"]),
    iconRotationAlignment: map["layout"]["icon-rotation-alignment"] == null
        ? null
        : IconRotationAlignment.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["icon-rotation-alignment"])),
    iconRotationAlignmentExpression:
        _optionalCastList(map["layout"]["icon-rotation-alignment"]),
    iconSize: _optionalCast(map["layout"]["icon-size"]),
    iconSizeExpression: _optionalCastList(map["layout"]["icon-size"]),
    iconSizeScaleRange: (map["layout"]["icon-size-scale-range"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconSizeScaleRangeExpression:
        _optionalCastList(map["layout"]["icon-size-scale-range"]),
    iconTextFit: map["layout"]["icon-text-fit"] == null
        ? null
        : IconTextFit.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["icon-text-fit"])),
    iconTextFitExpression: _optionalCastList(map["layout"]["icon-text-fit"]),
    iconTextFitPadding: (map["layout"]["icon-text-fit-padding"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconTextFitPaddingExpression:
        _optionalCastList(map["layout"]["icon-text-fit-padding"]),
    symbolAvoidEdges: _optionalCast(map["layout"]["symbol-avoid-edges"]),
    symbolAvoidEdgesExpression:
        _optionalCastList(map["layout"]["symbol-avoid-edges"]),
    symbolElevationReference:
        map["layout"]["symbol-elevation-reference"] == null
            ? null
            : SymbolElevationReference.values.firstWhere((e) => e.name
                .toLowerCase()
                .replaceAll("_", "-")
                .contains(map["layout"]["symbol-elevation-reference"])),
    symbolElevationReferenceExpression:
        _optionalCastList(map["layout"]["symbol-elevation-reference"]),
    symbolPlacement: map["layout"]["symbol-placement"] == null
        ? null
        : SymbolPlacement.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["symbol-placement"])),
    symbolPlacementExpression:
        _optionalCastList(map["layout"]["symbol-placement"]),
    symbolSortKey: _optionalCast(map["layout"]["symbol-sort-key"]),
    symbolSortKeyExpression:
        _optionalCastList(map["layout"]["symbol-sort-key"]),
    symbolSpacing: _optionalCast(map["layout"]["symbol-spacing"]),
    symbolSpacingExpression:
        _optionalCastList(map["layout"]["symbol-spacing"]),
    symbolZElevate: _optionalCast(map["layout"]["symbol-z-elevate"]),
    symbolZElevateExpression:
        _optionalCastList(map["layout"]["symbol-z-elevate"]),
    symbolZOrder: map["layout"]["symbol-z-order"] == null
        ? null
        : SymbolZOrder.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["symbol-z-order"])),
    symbolZOrderExpression:
        _optionalCastList(map["layout"]["symbol-z-order"]),
    textAllowOverlap: _optionalCast(map["layout"]["text-allow-overlap"]),
    textAllowOverlapExpression:
        _optionalCastList(map["layout"]["text-allow-overlap"]),
    textAnchor: map["layout"]["text-anchor"] == null
        ? null
        : TextAnchor.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["text-anchor"])),
    textAnchorExpression: _optionalCastList(map["layout"]["text-anchor"]),
    textField: _optionalCast(map["layout"]["text-field"]),
    textFieldExpression: _optionalCastList(map["layout"]["text-field"]),
    textFont: (map["layout"]["text-font"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textFontExpression: _optionalCastList(map["layout"]["text-font"]),
    textIgnorePlacement:
        _optionalCast(map["layout"]["text-ignore-placement"]),
    textIgnorePlacementExpression:
        _optionalCastList(map["layout"]["text-ignore-placement"]),
    textJustify: map["layout"]["text-justify"] == null
        ? null
        : TextJustify.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["text-justify"])),
    textJustifyExpression: _optionalCastList(map["layout"]["text-justify"]),
    textKeepUpright: _optionalCast(map["layout"]["text-keep-upright"]),
    textKeepUprightExpression:
        _optionalCastList(map["layout"]["text-keep-upright"]),
    textLetterSpacing: _optionalCast(map["layout"]["text-letter-spacing"]),
    textLetterSpacingExpression:
        _optionalCastList(map["layout"]["text-letter-spacing"]),
    textLineHeight: _optionalCast(map["layout"]["text-line-height"]),
    textLineHeightExpression:
        _optionalCastList(map["layout"]["text-line-height"]),
    textMaxAngle: _optionalCast(map["layout"]["text-max-angle"]),
    textMaxAngleExpression:
        _optionalCastList(map["layout"]["text-max-angle"]),
    textMaxWidth: _optionalCast(map["layout"]["text-max-width"]),
    textMaxWidthExpression:
        _optionalCastList(map["layout"]["text-max-width"]),
    textOffset: (map["layout"]["text-offset"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textOffsetExpression: _optionalCastList(map["layout"]["text-offset"]),
    textOptional: _optionalCast(map["layout"]["text-optional"]),
    textOptionalExpression: _optionalCastList(map["layout"]["text-optional"]),
    textPadding: _optionalCast(map["layout"]["text-padding"]),
    textPaddingExpression: _optionalCastList(map["layout"]["text-padding"]),
    textPitchAlignment: map["layout"]["text-pitch-alignment"] == null
        ? null
        : TextPitchAlignment.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["text-pitch-alignment"])),
    textPitchAlignmentExpression:
        _optionalCastList(map["layout"]["text-pitch-alignment"]),
    textRadialOffset: _optionalCast(map["layout"]["text-radial-offset"]),
    textRadialOffsetExpression:
        _optionalCastList(map["layout"]["text-radial-offset"]),
    textRotate: _optionalCast(map["layout"]["text-rotate"]),
    textRotateExpression: _optionalCastList(map["layout"]["text-rotate"]),
    textRotationAlignment: map["layout"]["text-rotation-alignment"] == null
        ? null
        : TextRotationAlignment.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["text-rotation-alignment"])),
    textRotationAlignmentExpression:
        _optionalCastList(map["layout"]["text-rotation-alignment"]),
    textSize: _optionalCast(map["layout"]["text-size"]),
    textSizeExpression: _optionalCastList(map["layout"]["text-size"]),
    textSizeScaleRange: (map["layout"]["text-size-scale-range"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textSizeScaleRangeExpression:
        _optionalCastList(map["layout"]["text-size-scale-range"]),
    textTransform: map["layout"]["text-transform"] == null
        ? null
        : TextTransform.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["layout"]["text-transform"])),
    textTransformExpression:
        _optionalCastList(map["layout"]["text-transform"]),
    textVariableAnchor: (map["layout"]["text-variable-anchor"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textVariableAnchorExpression:
        _optionalCastList(map["layout"]["text-variable-anchor"]),
    textWritingMode: (map["layout"]["text-writing-mode"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textWritingModeExpression:
        _optionalCastList(map["layout"]["text-writing-mode"]),
    iconColor: (map["paint"]["icon-color"] as List?)?.toRGBAInt(),
    iconColorExpression: _optionalCastList(map["paint"]["icon-color"]),
    iconColorBrightnessMax:
        _optionalCast(map["paint"]["icon-color-brightness-max"]),
    iconColorBrightnessMaxExpression:
        _optionalCastList(map["paint"]["icon-color-brightness-max"]),
    iconColorBrightnessMin:
        _optionalCast(map["paint"]["icon-color-brightness-min"]),
    iconColorBrightnessMinExpression:
        _optionalCastList(map["paint"]["icon-color-brightness-min"]),
    iconColorContrast: _optionalCast(map["paint"]["icon-color-contrast"]),
    iconColorContrastExpression:
        _optionalCastList(map["paint"]["icon-color-contrast"]),
    iconColorSaturation: _optionalCast(map["paint"]["icon-color-saturation"]),
    iconColorSaturationExpression:
        _optionalCastList(map["paint"]["icon-color-saturation"]),
    iconEmissiveStrength:
        _optionalCast(map["paint"]["icon-emissive-strength"]),
    iconEmissiveStrengthExpression:
        _optionalCastList(map["paint"]["icon-emissive-strength"]),
    iconHaloBlur: _optionalCast(map["paint"]["icon-halo-blur"]),
    iconHaloBlurExpression: _optionalCastList(map["paint"]["icon-halo-blur"]),
    iconHaloColor: (map["paint"]["icon-halo-color"] as List?)?.toRGBAInt(),
    iconHaloColorExpression:
        _optionalCastList(map["paint"]["icon-halo-color"]),
    iconHaloWidth: _optionalCast(map["paint"]["icon-halo-width"]),
    iconHaloWidthExpression:
        _optionalCastList(map["paint"]["icon-halo-width"]),
    iconImageCrossFade: _optionalCast(map["paint"]["icon-image-cross-fade"]),
    iconImageCrossFadeExpression:
        _optionalCastList(map["paint"]["icon-image-cross-fade"]),
    iconOcclusionOpacity:
        _optionalCast(map["paint"]["icon-occlusion-opacity"]),
    iconOcclusionOpacityExpression:
        _optionalCastList(map["paint"]["icon-occlusion-opacity"]),
    iconOpacity: _optionalCast(map["paint"]["icon-opacity"]),
    iconOpacityExpression: _optionalCastList(map["paint"]["icon-opacity"]),
    iconTranslate: (map["paint"]["icon-translate"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconTranslateExpression:
        _optionalCastList(map["paint"]["icon-translate"]),
    iconTranslateAnchor: map["paint"]["icon-translate-anchor"] == null
        ? null
        : IconTranslateAnchor.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["paint"]["icon-translate-anchor"])),
    iconTranslateAnchorExpression:
        _optionalCastList(map["paint"]["icon-translate-anchor"]),
    occlusionOpacityMode: map["paint"]["occlusion-opacity-mode"] == null
        ? null
        : OcclusionOpacityMode.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["paint"]["occlusion-opacity-mode"])),
    occlusionOpacityModeExpression:
        _optionalCastList(map["paint"]["occlusion-opacity-mode"]),
    symbolZOffset: _optionalCast(map["paint"]["symbol-z-offset"]),
    symbolZOffsetExpression:
        _optionalCastList(map["paint"]["symbol-z-offset"]),
    textColor: (map["paint"]["text-color"] as List?)?.toRGBAInt(),
    textColorExpression: _optionalCastList(map["paint"]["text-color"]),
    textEmissiveStrength:
        _optionalCast(map["paint"]["text-emissive-strength"]),
    textEmissiveStrengthExpression:
        _optionalCastList(map["paint"]["text-emissive-strength"]),
    textHaloBlur: _optionalCast(map["paint"]["text-halo-blur"]),
    textHaloBlurExpression: _optionalCastList(map["paint"]["text-halo-blur"]),
    textHaloColor: (map["paint"]["text-halo-color"] as List?)?.toRGBAInt(),
    textHaloColorExpression:
        _optionalCastList(map["paint"]["text-halo-color"]),
    textHaloWidth: _optionalCast(map["paint"]["text-halo-width"]),
    textHaloWidthExpression:
        _optionalCastList(map["paint"]["text-halo-width"]),
    textOcclusionOpacity:
        _optionalCast(map["paint"]["text-occlusion-opacity"]),
    textOcclusionOpacityExpression:
        _optionalCastList(map["paint"]["text-occlusion-opacity"]),
    textOpacity: _optionalCast(map["paint"]["text-opacity"]),
    textOpacityExpression: _optionalCastList(map["paint"]["text-opacity"]),
    textTranslate: (map["paint"]["text-translate"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textTranslateExpression:
        _optionalCastList(map["paint"]["text-translate"]),
    textTranslateAnchor: map["paint"]["text-translate-anchor"] == null
        ? null
        : TextTranslateAnchor.values.firstWhere((e) => e.name
            .toLowerCase()
            .replaceAll("_", "-")
            .contains(map["paint"]["text-translate-anchor"])),
    textTranslateAnchorExpression:
        _optionalCastList(map["paint"]["text-translate-anchor"]),
  );
}