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: styleOptionalCastList(map["layout"]["visibility"]),
    filter: styleOptionalCastList(map["filter"]),
    iconAllowOverlap: styleOptionalCast(map["layout"]["icon-allow-overlap"]),
    iconAllowOverlapExpression: styleOptionalCastList(
      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: styleOptionalCastList(map["layout"]["icon-anchor"]),
    iconIgnorePlacement: styleOptionalCast(
      map["layout"]["icon-ignore-placement"],
    ),
    iconIgnorePlacementExpression: styleOptionalCastList(
      map["layout"]["icon-ignore-placement"],
    ),
    iconImage: styleOptionalCast(map["layout"]["icon-image"]),
    iconImageExpression: styleOptionalCastList(map["layout"]["icon-image"]),
    iconKeepUpright: styleOptionalCast(map["layout"]["icon-keep-upright"]),
    iconKeepUprightExpression: styleOptionalCastList(
      map["layout"]["icon-keep-upright"],
    ),
    iconOffset: (map["layout"]["icon-offset"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconOffsetExpression: styleOptionalCastList(map["layout"]["icon-offset"]),
    iconOptional: styleOptionalCast(map["layout"]["icon-optional"]),
    iconOptionalExpression: styleOptionalCastList(
      map["layout"]["icon-optional"],
    ),
    iconPadding: styleOptionalCast(map["layout"]["icon-padding"]),
    iconPaddingExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["icon-pitch-alignment"],
    ),
    iconRotate: styleOptionalCast(map["layout"]["icon-rotate"]),
    iconRotateExpression: styleOptionalCastList(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: styleOptionalCastList(
      map["layout"]["icon-rotation-alignment"],
    ),
    iconSize: styleOptionalCast(map["layout"]["icon-size"]),
    iconSizeExpression: styleOptionalCastList(map["layout"]["icon-size"]),
    iconSizeScaleRange: (map["layout"]["icon-size-scale-range"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconSizeScaleRangeExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["icon-text-fit"],
    ),
    iconTextFitPadding: (map["layout"]["icon-text-fit-padding"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconTextFitPaddingExpression: styleOptionalCastList(
      map["layout"]["icon-text-fit-padding"],
    ),
    symbolAvoidEdges: styleOptionalCast(map["layout"]["symbol-avoid-edges"]),
    symbolAvoidEdgesExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["symbol-placement"],
    ),
    symbolSortKey: styleOptionalCast(map["layout"]["symbol-sort-key"]),
    symbolSortKeyExpression: styleOptionalCastList(
      map["layout"]["symbol-sort-key"],
    ),
    symbolSpacing: styleOptionalCast(map["layout"]["symbol-spacing"]),
    symbolSpacingExpression: styleOptionalCastList(
      map["layout"]["symbol-spacing"],
    ),
    symbolZElevate: styleOptionalCast(map["layout"]["symbol-z-elevate"]),
    symbolZElevateExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["symbol-z-order"],
    ),
    textAllowOverlap: styleOptionalCast(map["layout"]["text-allow-overlap"]),
    textAllowOverlapExpression: styleOptionalCastList(
      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: styleOptionalCastList(map["layout"]["text-anchor"]),
    textField: styleOptionalCast(map["layout"]["text-field"]),
    textFieldExpression: styleOptionalCastList(map["layout"]["text-field"]),
    textFont: (map["layout"]["text-font"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textFontExpression: styleOptionalCastList(map["layout"]["text-font"]),
    textIgnorePlacement: styleOptionalCast(
      map["layout"]["text-ignore-placement"],
    ),
    textIgnorePlacementExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["text-justify"],
    ),
    textKeepUpright: styleOptionalCast(map["layout"]["text-keep-upright"]),
    textKeepUprightExpression: styleOptionalCastList(
      map["layout"]["text-keep-upright"],
    ),
    textLetterSpacing: styleOptionalCast(
      map["layout"]["text-letter-spacing"],
    ),
    textLetterSpacingExpression: styleOptionalCastList(
      map["layout"]["text-letter-spacing"],
    ),
    textLineHeight: styleOptionalCast(map["layout"]["text-line-height"]),
    textLineHeightExpression: styleOptionalCastList(
      map["layout"]["text-line-height"],
    ),
    textMaxAngle: styleOptionalCast(map["layout"]["text-max-angle"]),
    textMaxAngleExpression: styleOptionalCastList(
      map["layout"]["text-max-angle"],
    ),
    textMaxWidth: styleOptionalCast(map["layout"]["text-max-width"]),
    textMaxWidthExpression: styleOptionalCastList(
      map["layout"]["text-max-width"],
    ),
    textOffset: (map["layout"]["text-offset"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textOffsetExpression: styleOptionalCastList(map["layout"]["text-offset"]),
    textOptional: styleOptionalCast(map["layout"]["text-optional"]),
    textOptionalExpression: styleOptionalCastList(
      map["layout"]["text-optional"],
    ),
    textPadding: styleOptionalCast(map["layout"]["text-padding"]),
    textPaddingExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["text-pitch-alignment"],
    ),
    textRadialOffset: styleOptionalCast(map["layout"]["text-radial-offset"]),
    textRadialOffsetExpression: styleOptionalCastList(
      map["layout"]["text-radial-offset"],
    ),
    textRotate: styleOptionalCast(map["layout"]["text-rotate"]),
    textRotateExpression: styleOptionalCastList(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: styleOptionalCastList(
      map["layout"]["text-rotation-alignment"],
    ),
    textSize: styleOptionalCast(map["layout"]["text-size"]),
    textSizeExpression: styleOptionalCastList(map["layout"]["text-size"]),
    textSizeScaleRange: (map["layout"]["text-size-scale-range"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textSizeScaleRangeExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["layout"]["text-transform"],
    ),
    textVariableAnchor: (map["layout"]["text-variable-anchor"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textVariableAnchorExpression: styleOptionalCastList(
      map["layout"]["text-variable-anchor"],
    ),
    textWritingMode: (map["layout"]["text-writing-mode"] as List?)
        ?.map<String?>((e) => e.toString())
        .toList(),
    textWritingModeExpression: styleOptionalCastList(
      map["layout"]["text-writing-mode"],
    ),
    iconColor: (map["paint"]["icon-color"] as List?)?.toRGBAInt(),
    iconColorExpression: styleOptionalCastList(map["paint"]["icon-color"]),
    iconColorBrightnessMax: styleOptionalCast(
      map["paint"]["icon-color-brightness-max"],
    ),
    iconColorBrightnessMaxExpression: styleOptionalCastList(
      map["paint"]["icon-color-brightness-max"],
    ),
    iconColorBrightnessMin: styleOptionalCast(
      map["paint"]["icon-color-brightness-min"],
    ),
    iconColorBrightnessMinExpression: styleOptionalCastList(
      map["paint"]["icon-color-brightness-min"],
    ),
    iconColorContrast: styleOptionalCast(map["paint"]["icon-color-contrast"]),
    iconColorContrastExpression: styleOptionalCastList(
      map["paint"]["icon-color-contrast"],
    ),
    iconColorSaturation: styleOptionalCast(
      map["paint"]["icon-color-saturation"],
    ),
    iconColorSaturationExpression: styleOptionalCastList(
      map["paint"]["icon-color-saturation"],
    ),
    iconEmissiveStrength: styleOptionalCast(
      map["paint"]["icon-emissive-strength"],
    ),
    iconEmissiveStrengthExpression: styleOptionalCastList(
      map["paint"]["icon-emissive-strength"],
    ),
    iconHaloBlur: styleOptionalCast(map["paint"]["icon-halo-blur"]),
    iconHaloBlurExpression: styleOptionalCastList(
      map["paint"]["icon-halo-blur"],
    ),
    iconHaloColor: (map["paint"]["icon-halo-color"] as List?)?.toRGBAInt(),
    iconHaloColorExpression: styleOptionalCastList(
      map["paint"]["icon-halo-color"],
    ),
    iconHaloWidth: styleOptionalCast(map["paint"]["icon-halo-width"]),
    iconHaloWidthExpression: styleOptionalCastList(
      map["paint"]["icon-halo-width"],
    ),
    iconImageCrossFade: styleOptionalCast(
      map["paint"]["icon-image-cross-fade"],
    ),
    iconImageCrossFadeExpression: styleOptionalCastList(
      map["paint"]["icon-image-cross-fade"],
    ),
    iconOcclusionOpacity: styleOptionalCast(
      map["paint"]["icon-occlusion-opacity"],
    ),
    iconOcclusionOpacityExpression: styleOptionalCastList(
      map["paint"]["icon-occlusion-opacity"],
    ),
    iconOpacity: styleOptionalCast(map["paint"]["icon-opacity"]),
    iconOpacityExpression: styleOptionalCastList(
      map["paint"]["icon-opacity"],
    ),
    iconTranslate: (map["paint"]["icon-translate"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    iconTranslateExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      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: styleOptionalCastList(
      map["paint"]["occlusion-opacity-mode"],
    ),
    symbolZOffset: styleOptionalCast(map["paint"]["symbol-z-offset"]),
    symbolZOffsetExpression: styleOptionalCastList(
      map["paint"]["symbol-z-offset"],
    ),
    textColor: (map["paint"]["text-color"] as List?)?.toRGBAInt(),
    textColorExpression: styleOptionalCastList(map["paint"]["text-color"]),
    textEmissiveStrength: styleOptionalCast(
      map["paint"]["text-emissive-strength"],
    ),
    textEmissiveStrengthExpression: styleOptionalCastList(
      map["paint"]["text-emissive-strength"],
    ),
    textHaloBlur: styleOptionalCast(map["paint"]["text-halo-blur"]),
    textHaloBlurExpression: styleOptionalCastList(
      map["paint"]["text-halo-blur"],
    ),
    textHaloColor: (map["paint"]["text-halo-color"] as List?)?.toRGBAInt(),
    textHaloColorExpression: styleOptionalCastList(
      map["paint"]["text-halo-color"],
    ),
    textHaloWidth: styleOptionalCast(map["paint"]["text-halo-width"]),
    textHaloWidthExpression: styleOptionalCastList(
      map["paint"]["text-halo-width"],
    ),
    textOcclusionOpacity: styleOptionalCast(
      map["paint"]["text-occlusion-opacity"],
    ),
    textOcclusionOpacityExpression: styleOptionalCastList(
      map["paint"]["text-occlusion-opacity"],
    ),
    textOpacity: styleOptionalCast(map["paint"]["text-opacity"]),
    textOpacityExpression: styleOptionalCastList(
      map["paint"]["text-opacity"],
    ),
    textTranslate: (map["paint"]["text-translate"] as List?)
        ?.map<double?>((e) => e.toDouble())
        .toList(),
    textTranslateExpression: styleOptionalCastList(
      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: styleOptionalCastList(
      map["paint"]["text-translate-anchor"],
    ),
  );
}