Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算宽度&;图像地图上多边形区域的高度_Javascript_Image_Imagemap - Fatal编程技术网

Javascript 计算宽度&;图像地图上多边形区域的高度

Javascript 计算宽度&;图像地图上多边形区域的高度,javascript,image,imagemap,Javascript,Image,Imagemap,是否可以使用坐标计算图像地图上每个多边形区域的宽度和高度 我有一个图像和使用多个不同大小的多边形图像地图。我需要找到每个多边形的中心点。要找到中心点,需要找到多边形的最小和最大X和Y坐标,然后取每个多边形的中点,得到平均中心点。这里有一个函数可以为一组imagemap区域执行此操作。该函数接受一个数组,而不仅仅是一个区域,以防您需要来自多个区域的中心点,这在地理图像地图中是典型的 此处的工作示例将在所选美国州的中心点上绘制一个圆: /*计算区域阵列的最中心点 @param{element[]}

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


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

要找到中心点,需要找到多边形的最小和最大X和Y坐标,然后取每个多边形的中点,得到平均中心点。这里有一个函数可以为一组imagemap区域执行此操作。该函数接受一个数组,而不仅仅是一个区域,以防您需要来自多个区域的中心点,这在地理图像地图中是典型的

此处的工作示例将在所选美国州的中心点上绘制一个圆:

/*计算区域阵列的最中心点
@param{element[]}区域区域一个区域元素数组
@返回中心点的{object}{x,y}坐标
*/
功能计算中心点(区域){
var maxX=0,
minX=无穷大,
maxY=0,
minY=无穷大;
//注意:使用Array.prototype.forEach而不是直接调用forEach
//在“区域”上,这样它就可以处理类似数组的对象,例如jQuery
Array.prototype.forEach.call(区域,函数(e){
var i=0,
coords=e.getAttribute('coords').split(',');
而(imaxX)maxX=x,则为else;
如果(ymaxY)maxY=y,则为else;
}
});
返回{
x:minX+(maxX-minX)/2,
y:minY+(maxY-minY)/2
};
}

@jamie treworgy如果要在一个循环中分别获得多个区域的中心,我需要更改什么。假设我有适用于5个状态的条件。现在我想在页面加载上标记这些状态。谢谢。太好了~!谢谢
/* 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
    };
}