MapPolygon.coordinates constructor

MapPolygon.coordinates(
  1. List<double> coordinates
)

Implementation

factory MapPolygon.coordinates(List<double> coordinates) {
  List<MapPoint> externalPoints = [];
  List<MapLinearRing> internalRings = [];
  List<MapPoint> points = [];
  for (int i = 0; i < coordinates.length; i = i + 2) {
    if (i < coordinates.length - 1) {
      double x = coordinates[i];
      double y = coordinates[i + 1];
      points.add(MapPoint(x, y));
      if (points.length >= 3) {
        if (points.first.x == x && points.first.y == y) {
          // closing ring
          if (externalPoints.length == 0) {
            externalPoints = points;
          } else {
            internalRings.add(MapLinearRing(points));
          }
          points = [];
        }
      }
    }
  }
  return MapPolygon(MapLinearRing(externalPoints), internalRings);
}