addPolygon method

Future<Polygon> addPolygon(
  1. PolygonOption option
)

添加多边形

在点points的位置添加线, 可以设置宽度width和颜色strokeColor

Implementation

Future<Polygon> addPolygon(PolygonOption option) {
  assert(option != null, 'option不能为null');

  return platform(
    android: (pool) async {
      final map = await _androidController.getMap();

      // 构造折线点
      List<com_amap_api_maps_model_LatLng> latLngList = [];
      for (final point in option.latLngList) {
        final latLng =
            await createcom_amap_api_maps_model_LatLng__double__double(
                point.latitude, point.longitude);
        latLngList.add(latLng);
      }

      // 构造参数
      final polygonOptions =
          await createcom_amap_api_maps_model_PolygonOptions__();

      // 添加参数
      await polygonOptions.addAll(latLngList);
      // 宽度
      if (option.width != null) {
        await polygonOptions.strokeWidth(option.width);
      }
      // 边框颜色
      if (option.strokeColor != null) {
        await polygonOptions
            .strokeColor(Int32List.fromList([option.strokeColor.value])[0]);
      }
      // 填充颜色
      if (option.fillColor != null) {
        await polygonOptions
            .fillColor(Int32List.fromList([option.fillColor.value])[0]);
      }

      // 设置参数
      final polygon = await map.addPolygon(polygonOptions);

      pool
        ..add(map)
        ..add(polygonOptions)
        ..addAll(latLngList);

      return Polygon.android(polygon);
    },
    ios: (pool) async {
      await _iosController.set_delegate(_iosMapDelegate);

      // 构造折线点
      List<CLLocationCoordinate2D> latLngList = [];
      for (final point in option.latLngList) {
        final latLng = await createCLLocationCoordinate2D(
            point.latitude, point.longitude);
        latLngList.add(latLng);
      }

      // 构造折线参数
      final polygon = await MAPolygon.polygonWithCoordinatesCount(
          latLngList, latLngList.length);

      // 宽度和颜色需要设置到STACK里去
      if (option.width != null)
        await pushStackJsonable('width', option.width);
      if (option.strokeColor != null)
        await pushStackJsonable('strokeColor', option.strokeColor.value);
      if (option.fillColor != null)
        await pushStackJsonable('fillColor', option.fillColor.value);

      // 设置参数
      await _iosController.addOverlay(polygon);

      pool.addAll(latLngList);

      return Polygon.ios(polygon, _iosController);
    },
  );
}