2013-03-18 3 views

답변

7

중심점을 찾으려면 다각형의 최소 및 최대 X 좌표를 찾은 다음 각각의 중간 점을 가져 와서 평균 중심점을 얻어야합니다. 다음은 이미지 맵 영역의 배열에 대해이 작업을 수행하는 함수입니다. 이 함수는 지형 이미지 맵에서 일반적인 것처럼 여러 영역에서 중심점이 필요한 경우에 대비하여 하나의 영역이 아니라 배열을 수용합니다. 솔루션에 대한 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

덕분에 ... 내가 변경해야 할 무엇 제이미-treworgy @ :) –

+0

다음의 중심점에 원을 그릴 것입니다 여기

작동 예는 미국의 국가를 선택 루프에서 여러 영역의 중심을 개별적으로 얻으려는 경우. 5 개 주에 적용되는 조건이 있다고 말할 수 있습니다. 이제 페이지로드시 해당 상태를 표시하려고합니다. 감사합니다. – nomi416

+0

완벽 ~! 감사. – Lin

관련 문제