2014-03-27 2 views
0

이미지가 있습니다 (1536x1536),지도입니다.이미지 X & Y 축

그리고 최대 x : 3000.0, 최대 y : 3000.0, 최소 x : -3000.0, 최소 y : -3000.0에 X와 Y 축이 있어야합니다. 내가지도에 위치에 내 좌표 (X, Y)를 변환 할

(상/하 및 좌/우)

의견에서
+0

따라서 이미지를 6000px x 6000px 이상의 스타일로 날려 보냅니 까? 또는 6000에서 1536 사이의 스케일에서 가장 가까운 점을 계산 하시겠습니까? 그것은 '',''' user13500

+0

img입니다. 라이브 맵을 만들고 싶습니다. 이미지 좌표계에서 게임 좌표를 변환하고 싶습니다. – user3032469

+0

이 스크립트를 가지고 있습니다 : \t \t var size = document.getElementById ('unique_map'); \t \t var xMod = 6000/size.width; \t \t var yMod = 6000/size.height; \t \t var xPoint = x/xMod; \t \t var yPoint = y/yMod; \t \t xPoint = xPoint + (size.width/2); \t \t yPoint = - (yPoint - (size.height/2)); \t \t var source = "#circle_id_"+ ID; \t \t $ (출처) .css ("left", xPoint); \t \t $ (출처) .css ("top", yPoint); \t \t 정확하게 작동하지만 정확하지는 않습니다. – user3032469

답변

0

나는 그것이 자연스러운에서 당신이 그것을 CSS로 이미지 크기를 조정하지만 유지하지 않는 가정 상태. 따라서 비율 차이가있는 번역 개체를 사용할 수 있습니다. 이것이 인 경우 매우 리소스에 따라 다릅니다. 객체 위에 배열을 사용하는 것이 좋습니다 (아래 표시된 코드 참조).

픽셀 변환을 가리 킵니다.

var translate = { 
    x: 1536/6000, 
    y: 1536/6000 
}; 

function pt_translate(pt) { 
    return { 
     x: Math.round((pt.x + 3000) * translate.x), 
     y: Math.round((pt.y + 3000) * translate.y) 
    }; 
} 

// Sample coordinate input: 
pt = { 
    x: -1029.3652, 
    y: 369.122 
}; 

var ptt = pt_translate(pt); 

결과 :

{x: 504, y: 862} 

이상의 샘플 :

Various console log samples

console.log(pt_translate({x:0,y:0}), 'vs', 1536/2, 1536/2); 
console.log(pt_translate({x:3000,y:3000}), 'vs', 1536, 1536); 
console.log(pt_translate({x:-3000,y:-3000}), 'vs', 0,0); 
console.log(pt_translate({x:910,y:-1045}), 'vs', 1000,500); 
console.log(ptt); 

수율 :

{x: 768, y: 768} "vs" 768 768 
{x: 1536, y: 1536} "vs" 1536 1536 
{x: 0, y: 0} "vs" 0 0 
{x: 1000, y: 500} "vs" 1000 500 
{x: 504, y: 862}