поиск полигона центр Google Map API 3 - PullRequest
0 голосов
/ 17 октября 2018

Я хочу найти центр многоугольника на карте Google, я пробовал несколько решений, однако ни одно из них не работало правильно для многоугольника прямоугольника. Вот пример кода:

var path = new Array(new google.maps.LatLng(1, 1), new google.maps.LatLng(1, 10), new google.maps.LatLng(10, 10), new google.maps.LatLng(1, 1));

var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(40, 9),
    mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);

var polygon = new google.maps.Polygon({
    path: path,
    map: map
});

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

for (var i=0; i<polygon.getPath().length; i++) {

    var point = new google.maps.LatLng(path[i].lat(), path[i].lng());
    bounds.extend(point);
}

map.fitBounds(bounds);
    const marker = new google.maps.Marker({
  position: {
    lat: bounds.getCenter().lat(),
    lng: bounds.getCenter().lng()
  },
  map: this.map,
  title: "Hello World!"
});
marker.setMap(map);

Я использовал google.maps.LatLngBounds(); длянайти центр треугольника и отметить центр на карте, однако центр результата на самом деле не является истинным центром треугольника, jsfiddle пример этого кода .
Я использовал другое решение , которое обсуждаетсяздесь для нахождения центра многоугольника, но это тоже не сработает, так есть ли другое решение для нахождения точного центра многоугольников независимо от типа многоугольника?

1 Ответ

0 голосов
/ 17 октября 2018

points - это массив точек многоугольника, вызовите getCenter, чтобы получить координаты центра.

var points = [[1,1],[1,10],[10,10]];
function getCenter(){
    var sumX = 0, sumY = 0;
    for(var i = 0; i < points.length; i++){
        var point = points[i];
        var x = point[0];
        var y = point[1];
        sumX += x;
        sumY += y;
    }
    return {x:sumX / points.length,y:sumY / points.length};
}

var centerOfPoints = getCenter();
...