我有一个用户输入的坐标列表,如何计算尽可能接近所有坐标的点?

I have a list of user-inputted coordinates, how do i calculate the point that is as close as possible to all the coordinates?

我以前使用下面的代码计算质心,但是当有很多点彼此靠近时,质心被拉向那个方向,使得坐标到计算点的距离不那么相等。如何计算所有坐标到中点距离最短的坐标?

$.each( routeStart, function(i, routeCoords){
      centroidx += parseFloat(routeCoords[0]);
      centroidy += parseFloat(routeCoords[1]);
    });
    endpoint = ol.proj.fromLonLat([(centroidx / routeStart.length), (centroidy / routeStart.length)])

您正在求给定分数的平均值。相反,我认为您正在寻找的是所有绝对最大值和最小值的平均值。

例如:

var points = [
    { x: 6, y: 1},
    { x: 3, y: 4},
    { x: 7, y: 8},
    { x: -4, y:-10},
    { x: -5, y:-11},
    { x: -5, y:-10}
  ]; 
var maxX, minX, maxY, minY;
points.forEach(point => {
    if(maxX === undefined || maxX < point.x) {
        maxX = point.x
    }
    if(minX === undefined || minX > point.x) {
        minX = point.x
    }
    if(maxY === undefined || maxY < point.y) {
        maxY = point.y
    }
    if(minY === undefined || minY > point.y) {
        minY = point.y
    }
});
var centerPoint = { 
    x: ((maxX + minX) / 2),
    y: ((maxY + minY) / 2)
};
console.log("Center point: ", centerPoint);

要对此进行测试,您可以 运行 上面的代码,然后将以下内容添加到点列表中。这不应该改变中心点。

{ x: -5, y:-10},
{ x: -5, y:-10},
{ x: -5, y:-10},