Это не должно быть на 100% корректно, это может быть центр ограничительного прямоугольника.
Алгоритм:
Переберите все точки в многоугольнике. Для всех точек найдите;
x1
, наименьшую x
координатуy1
, наименьшую y
координатуx2
, наибольшая x
координатаy2
, наибольшая y
координатаТеперь у вас есть ограничивающий прямоугольник, и вы можете определить центр, используя:
center.x = x1 + ((x2 - x1) / 2);
center.y = y1 + ((y2 - y1) / 2);
Ответ Мэтью - хорошее решение. Однако при использовании Google Maps API v3 вы можете передать каждую точку многоугольника объекту LatLngBounds
через метод extend ()
, а затем, наконец, вызвать ] getCenter ()
для объекта LatLngBounds
. Рассмотрим следующий пример:
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());