4

我需要將緯度經度值轉換爲像素位置以及相反。我發現很多解決方案都是從lat/lng-> pixel,但是卻找不到相反的東西。將像素位置轉換爲經度和緯度

有兩點要注意:

  • 的地圖大小是固定的,沒有變焦,沒有磚。
  • 我不需要任何超級準確的東西,它並不重要。
  • 最好是墨卡託投影,但不是必需的。我實際上並沒有顯示結果。 (任何2D投影)
  • 我不能依賴於任何基於Web的API的,即:沒有谷歌地圖

一個在幾乎任何編程語言的解決辦法是罰款,只要它不依賴於任何平臺特定的API。

這是從拉丁語去一個例子/ lng->像素:

var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 
+1

您需要知道計算必須爲哪個映射投影。您的問題中的示例計算將不適用於墨卡托地圖;它假設一個[equirectangular projection](http://en.wikipedia.org/wiki/Equirectangular_projection)。 –

+0

我開放給任何2D投影,equirectangular將完全滿足我的需求。我沒有看到結果,所以我沒有被綁定到特定的預測。 –

+0

如果你沒有顯示任何東西,那麼你首先使用像素是什麼(!)? –

回答

5
var y = Math.round(((-1 * lat) + 90) * (this.MAP_HEIGHT/180)); 
var x = Math.round((lng + 180) * (this.MAP_WIDTH/360)); 

使用一些代數,我想出了:

var lat=(y/(this.MAP_HEIGHT/180)-90)/-1 
var lng = x/(this.MAP_WIDTH/360)-180 

不是在數學完全有信心因爲它是在我的腦海中完成的,但這些都應該起作用,只要確保先測試它們。

+0

+1,用於嘗試應該顯而易見的事物! –

+0

這可能很明顯,我的數學技能是生鏽的。非常感謝,正是我需要的! –

+2

雖然數字是多少? 180,360等? Map_height的度數還是像素? –