计算图像地图上多边形区域的宽度和高度

3

是否可以使用坐标计算图像地图上每个多边形区域的宽度和高度?

我有一张图片,并使用具有多个不同大小多边形的图像地图。我需要找到每个多边形的中心点。

1个回答

8
为了找到中心点,您需要找到多边形的最小和最大X和Y坐标,然后取每个中点以获得平均中心点。以下是一个函数,用于对图像地图区域数组执行此操作。该函数接受一个数组而不仅仅是一个区域,以防您需要从多个区域获取中心点,这在地理图像映射中很常见。
工作示例,在所选美国州的中心点上绘制一个圆: http://jsfiddle.net/jamietre/6ABfa/
/* Calculate the centermost point of an array of areas 
   @param {element[]}   areas     an array of area elements
   @returns {object}              {x,y} coords of the center point
 */

function calculateCenterPoint(areas) {
    var maxX = 0,
        minX = Infinity,
        maxY = 0,
        minY = Infinity;

   // note: using Array.prototype.forEach instead of calling forEach directly 
   // on "areas" so it will work with array-like objects, e.g. jQuery

    Array.prototype.forEach.call(areas, function (e) {
        var i = 0,
            coords = e.getAttribute('coords').split(',');

        while (i < coords.length) {
            var x = parseInt(coords[i++],10),
                y = parseInt(coords[i++],10);

            if (x < minX) minX = x;
            else if (x > maxX) maxX = x;

            if (y < minY) minY = y;
            else if (y > maxY) maxY = y;
        }
    });

    return {
        x: minX + (maxX - minX) / 2,
        y: minY + (maxY - minY) / 2
    };
}

@jamie-treworgy 如果我想在循环中分别获得多个区域的中心,我需要改变什么?假设我有一个适用于5个州的条件。现在我想在页面加载时标记这些州。谢谢。 - Nauman
完美!谢谢。 - Lin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接