¿Cómo obtener el centro de un polígono en google maps v3?

No necesita ser 100% correcto, puede ser el centro del rectángulo delimitador.

Algoritmo:

Corre a través de todos los puntos en el polígono. Para todos los puntos encuentra;

  • x1 , la coordenada x más baja
  • y1 , la coordenada y más baja
  • x2 , la coordenada x más alta
  • y2 , la coordenada y más alta

Ahora tiene el rectángulo delimitador, y puede resolver el centro usando:

 center.x = x1 + ((x2 - x1) / 2); center.y = y1 + ((y2 - y1) / 2); 

La respuesta de Matthew es una buena solución. Sin embargo, al usar Google Maps API v3, es posible que desee pasar cada punto del polígono a un objeto LatLngBounds mediante el método extend() y, finalmente, llamar al método getCenter() en el objeto LatLngBounds . Considere el siguiente ejemplo:

 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()); 

puedes extender la clase Polygon con tu propia versión de la función que falta, vamos a llamarla my_getBounds ():

 google.maps.Polygon.prototype.my_getBounds=function(){ var bounds = new google.maps.LatLngBounds() this.getPath().forEach(function(element,index){bounds.extend(element)}) return bounds } 

y que usarlo en un código como este:

 myPolygon.my_getBounds().getCenter() 

… etc, debería ser equivalente al comportamiento v2

Respuesta de @Matthew Scharley este es mi algoritmo. Probablemente sea malo. Sé gentil. Lo escribí porque la función getCenter () en la API V3 solo funciona para rectangularjs y círculos, no para polígonos.

 function polygonCenter(poly) { var lowx, highx, lowy, highy, lats = [], lngs = [], vertices = poly.getPath(); for(var i=0; i 

Tenga en cuenta que, en el caso de un polígono cóncavo, el centro del rectángulo delimitador puede estar completamente fuera del polígono. Si sus polígonos pueden ser cóncavos, recomiendo usar el centro del círculo inscrito más grande como el “centro” del polígono. Aquí puede ver un algoritmo bastante simple (p.4) . Si su tarea es colocar una etiqueta en el polígono, esto también dará los resultados más agradables desde el punto de vista estético (en cuyo caso, recomendaría usar este método incluso si sus polígonos no fueran cóncavos).