calculateCentroid function

LatLng calculateCentroid(
  1. Map<String, dynamic> geometry
)

Calculates a basic centroid for a polygon (average of all vertices).

Implementation

LatLng calculateCentroid(Map<String, dynamic> geometry) {
  if (geometry['type'] != 'Polygon' && geometry['type'] != 'MultiPolygon') {
    return const LatLng(0, 0);
  }

  List<dynamic> coordinates;
  if (geometry['type'] == 'Polygon') {
    coordinates = geometry['coordinates'][0]; // Exterior ring
  } else {
    coordinates =
        (geometry['coordinates'][0]
            as List<dynamic>)[0]; // First ring of first polygon
  }

  if (coordinates.isEmpty) return const LatLng(0, 0);

  double sumLat = 0;
  double sumLng = 0;
  int count = 0;

  for (var coord in coordinates) {
    if (coord is List && coord.length >= 2) {
      sumLng += (coord[0] as num).toDouble();
      sumLat += (coord[1] as num).toDouble();
      count++;
    }
  }

  if (count == 0) return const LatLng(0, 0);
  return LatLng(sumLat / count, sumLng / count);
}