calculateCentroid function
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);
}