2014-03-27 268 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 $(source).css(「left」,xPoint); \t \t $(source).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}