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;
}
}
},