2013-03-18 89 views
2

聚區域的高度是可以計算的寬度和高度爲使用COORDS圖像地圖上的每個區域的聚?計算寬度與圖像映射

我有一個圖像,並使用具有多個不同尺寸的多邊形圖像映射。我需要找到每一箇中心點。

回答

7

要找到中心點,你需要找到的最小和最大X和Y座標的多邊形,然後取每個的中點,以獲得平均中心點。這裏有一個函數可以爲一組imagemap區域執行此操作。該功能接受一個數組而不僅僅是一個區域,以防您需要來自多個區域的中心點,就像典型的地理圖像地圖一樣。這裏

工作的例子,將借鑑的中心點的圓圈選擇美國的州: 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 
    }; 
} 
+0

感謝您的解決方案... :) – 2013-03-18 17:39:01

+0

@傑米 - treworgy什麼我需要改變如果要在一個循環中分別獲取多個區域的中心。可以說我有適用於5個州的條件。現在我想在頁面加載時標記這些狀態。 謝謝。 – nomi416 2016-11-14 09:50:55

+0

完美〜!謝謝。 – Lin 2017-08-16 22:46:50