2011-12-14 83 views
2

我想我在這裏有兩個不同的問題,我正在構建這個question。編號喜歡採取這一步更多,並將px值轉換爲真正的緯度和經度座標。將px轉換成度

所以想轉251px N,10px的ë40°10' 33 '' N,3°4' 56 '' E

40°= 40度

10' = 10分鐘

33‘’=33秒

或40.133我覺得但當分鐘到60它踢下度了一個。所以41時40.559 + 1秒。我希望有人能理解。

var screenX = $(document).width()/2; 
var screenY = $(document).height()/2; 

$(document).mousemove(function(e){ 

var apX = screenX - e.pageX; 
var apY = screenY - e.pageY; 

var latT = (apY>=0) ? 'N' : 'S'; 
var lonT = (apX>=0) ? 'W' : 'E'; 

apX = Math.round(Math.abs(apX)); 
apY = Math.round(Math.abs(apY)); 

$('#detect').html(apX + 'px '+ latT +', '+ apY + 'px '+ lonT ); 

}); 

Demo上面的代碼。有什麼建議?

+1

這裏有幾件不清楚的事情 - 對我和可能對你。 40°10'33''是**不是**與小數點40.133相同,是40.175833(見http://en.wikipedia.org/wiki/Geographic_coordinate_conversion)。將「像素」(笛卡爾座標)轉換爲地質座標也取決於地圖「下方」的投影。 – RoToRa 2011-12-14 11:47:07

+0

我正在嘗試將網頁轉換爲經緯度座標。我希望將網頁的高度轉換爲100%,並從那裏計算出小數點後兩位。我認爲我沒有正確描述它,你能編輯我的問題,以便更容易理解嗎? – uriah 2011-12-14 11:55:09

回答

1

像這樣的東西應該工作:

$('#detect').html(toGeo(apX, screenX) + latT +', '+ toGeo(apY, screenY) + lonT ); 

function toGeo(d, max) { 
    var c = ''; 

    var r = d/max * 180; 
    var deg = Math.floor(r); 
    c += deg + "° "; 

    r = (r - deg) * 60; 
    var min = Math.floor(r); 
    c += min + "′ "; 

    r = (r - min) * 60; 
    var sec = Math.floor(r); 
    c += sec + "″"; 

    return c; 
} 

正如一個提醒:這些都是「假」的座標,他們不會對應一個真實的地圖。