getConvexHull static method

List<LatLng?> getConvexHull(
  1. List<LatLng> latLngs
)

Implementation

static List<LatLng?> getConvexHull(List<LatLng> latLngs) {
  // find first baseline
  double? maxLat, minLat, maxLng, minLng;

  LatLng? maxLatPt, minLatPt, maxLngPt, minLngPt, maxPt, minPt;

  for (var i = latLngs.length - 1; i >= 0; i--) {
    var pt = latLngs[i];

    if (maxLat == null || pt.latitude > maxLat) {
      maxLatPt = pt;
      maxLat = pt.latitude;
    }
    if (minLat == null || pt.latitude < minLat) {
      minLatPt = pt;
      minLat = pt.latitude;
    }
    if (maxLng == null || pt.longitude > maxLng) {
      maxLngPt = pt;
      maxLng = pt.longitude;
    }
    if (minLng == null || pt.longitude < minLng) {
      minLngPt = pt;
      minLng = pt.longitude;
    }
  }

  if (minLat != maxLat) {
    minPt = minLatPt;
    maxPt = maxLatPt;
  } else {
    minPt = minLngPt;
    maxPt = maxLngPt;
  }

  return <LatLng?>[
    ..._buildConvexHull([minPt!, maxPt!], latLngs),
    ..._buildConvexHull([maxPt, minPt], latLngs)
  ];
}