将像素位置转换为经度和纬度
我需要将纬度经度值转换为像素位置以及相反。我发现很多解决方案都是从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));
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
不是在数学完全有信心因为它是在我的脑海中完成的,但这些都应该起作用,只要确保先测试它们。
+1,用于尝试应该显而易见的事物! –
这可能很明显,我的数学技能是生锈的。非常感谢,正是我需要的! –
虽然数字是多少? 180,360等? Map_height的度数还是像素? –
您需要知道计算必须为哪个映射投影。您的问题中的示例计算将不适用于墨卡托地图;它假设一个[equirectangular projection](http://en.wikipedia.org/wiki/Equirectangular_projection)。 –
我开放给任何2D投影,equirectangular将完全满足我的需求。我没有看到结果,所以我没有被绑定到特定的预测。 –
如果你没有显示任何东西,那么你首先使用像素是什么(!)? –