views:

68

answers:

2

It doesn't need to be 100% correct, it can be the center of the bounding rectangle.

Thank you in advance

+3  A: 

Algorithm:

Run through all the points in the polygon. For all the points find;

  • x1, the lowest x coordinate
  • y1, the lowest y coordinate
  • x2, the highest x coordinate
  • y2, the highest y coordinate

You now have the bounding rectangle, and can work out the center using:

center.x = x1 + ((x2 - x1) / 2);
center.y = y1 + ((y2 - y1) / 2);
Matthew Scharley
Well, i've found that in v2, I was able to do it just by calling polygon.getBounds().getCenter(), but I guess i'll have to do it your way. Thanks
ANd
I have no idea, that may work in v3 too. I havn't looked too closely at the Google Maps API. But this way does essentially that anyway.
Matthew Scharley
It looks like Google forgot the `Polygon.getBounds()` method. It is available for `Circle` and `Rectangle`, but not for the `Polygon` class.
Daniel Vassallo
+2  A: 

Matthew's answer is a good solution. However, when using the Google Maps API v3, you might want to pass each point of the polygon to a LatLngBounds object through the extend() method, and then finally call the getCenter() method on the LatLngBounds object. Consider the following example:

var bounds = new google.maps.LatLngBounds();
var i;

// The Bermuda Triangle
var polygonCoords = [
  new google.maps.LatLng(25.774252, -80.190262),
  new google.maps.LatLng(18.466465, -66.118292),
  new google.maps.LatLng(32.321384, -64.757370),
  new google.maps.LatLng(25.774252, -80.190262)
];

for (i = 0; i < polygonCoords.length; i++) {
  bounds.extend(polygonCoords[i]);
}

// The Center of the Bermuda Triangle - (25.3939245, -72.473816)
console.log(bounds.getCenter());
Daniel Vassallo
+1 for the Bermuda Triangle :-)
LeonixSolutions
This is the better solution.
Matthew Scharley