overlayHandle method

Future overlayHandle(
  1. MethodCall method
)

Implementation

Future<dynamic> overlayHandle(MethodCall method) async {
  final argument = method.arguments;
  final type =
      OverlayType.values.firstWhere((e) => e.value == argument["type"]);
  final layerId =
      argument.containsKey("layerId") ? argument["layerId"] : null;

  switch (method.method) {
    case "createLabelLayer":
      _labelLayer[layerId!] =
          WebLabelController._(layerId!, controller, this, false);
      break;
    case "createLodLabelLayer":
      _lodLabelLayer[layerId!] =
          WebLabelController._(layerId!, controller, this, true);
      break;
    case "createRouteLayer":
      _routeLayer[layerId!] =
          WebRouteController._(layerId!, controller, this);
      break;
    case "createShapeLayer":
      _shapeLayer[layerId!] =
          WebShapeController._(layerId!, controller, this);
      break;
    case "removeLabelLayer":
      _labelLayer[layerId!]!.removeLabelLayer();
      _labelLayer.remove(layerId!);
      return;
    case "removeLodLabelLayer":
      _lodLabelLayer[layerId!]!.removeLabelLayer();
      _lodLabelLayer.remove(layerId!);
      return;
    case "removeRouteLayer":
      _routeLayer[layerId!]!.removeRouteLayer();
      _routeLayer.remove(layerId!);
      return;
    case "addPoiStyle":
      final poiStyleId = argument["styleId"] ?? _uuid.v4();
      _poiStyles[poiStyleId] =
          PoiStyle.fromMessageable(argument["styles"], poiStyleId);
      return poiStyleId;
    case "addRouteStyle":
      final routeStyleId = argument["styleId"] ?? _uuid.v4();
      _routeStyles[routeStyleId] = argument["styles"]
          .map<RouteStyle>((e) => RouteStyle.fromMessageable(e, routeStyleId))
          .toList();
      return routeStyleId;
    case "addPolylineShapeStyle":
      final polylineStyleId = argument["styleId"] ?? _uuid.v4();
      _polylineStyles[polylineStyleId] = argument["styles"]
          .map<PolylineStyle>((payload) =>
              PolylineStyle.fromMessageable(payload, polylineStyleId))
          .toList();
      return polylineStyleId;
    case "addPolygonShapeStyle":
      final polygonStyleId = argument["styleId"] ?? _uuid.v4();
      _polygonStyles[polygonStyleId] = argument["styles"]
          .map<PolygonStyle>((payload) =>
              PolygonStyle.fromMessageable(payload, polygonStyleId))
          .toList();
      return polygonStyleId;
  }

  switch (type) {
    case OverlayType.label || OverlayType.lodLabel:
      WebLabelController? layer = _labelLayer[layerId!];
      layer = layer ?? _lodLabelLayer[layerId!];
      return await layer?.labelHandle(method);
    case OverlayType.shape:
      return await _shapeLayer[layerId!]?.shapeHandle(method);
    case OverlayType.route:
      return await _routeLayer[layerId!]?.routeHandle(method);
  }
}