getCentroid: function() { if (this.components) { var len = this.components.length; if (len > 0 && len <= 2) { return this.components[0].clone(); } else if (len > 2) { var sumX = 0.0; var sumY = 0.0; var averX = this.components[0].x; var averY = this.components[0].y; for (var i = 0; i < len - 1; i++) { var b = this.components[i]; var c = this.components[i+1]; sumX += (b.x + c.x - 2 * averX) * ((b.x - averX) * (c.y - averY) - (c.x - averX) * (b.y - averY)); sumY += (b.y + c.y - 2 * averY) * ((b.x - averX) * (c.y - averY) - (c.x - averX) * (b.y - averY)); } var area = -1 * this.getArea(); var x = averX + sumX / (6 * area); var y = averY + sumY / (6 * area); return new OpenLayers.Geometry.Point(x, y); } else { return null; } } },