是否可以使用坐标计算图像地图上每个多边形区域的宽度和高度?
我有一个图像并使用具有多个不同大小的多边形的图像贴图。我需要找到每一个的中心点。
要找到中心点,您需要找到多边形的最小和最大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
};
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)