Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将像素位置转换为纬度/经度&;反之亦然_Java_Javascript_Actionscript 3_Geolocation_Latitude Longitude - Fatal编程技术网

Java 将像素位置转换为纬度/经度&;反之亦然

Java 将像素位置转换为纬度/经度&;反之亦然,java,javascript,actionscript-3,geolocation,latitude-longitude,Java,Javascript,Actionscript 3,Geolocation,Latitude Longitude,我需要将经纬度值转换为像素位置,也需要做相反的操作。我已经找到了很多解决方案,可以从lat/lng->pixel开始,但找不到任何相反的解决方案 几点注意: 地图大小固定,没有缩放,没有平铺 我不需要任何超精确的东西,这并不重要 最好是墨卡托投影,但不是必需的。我不打算实际显示结果。(任何二维投影) 我不能依赖任何基于网络的API,即:没有谷歌地图 只要不依赖于任何特定于平台的API,几乎任何编程语言的解决方案都可以 这是一个从lat/lng->pixel的示例: var y = Math.

我需要将经纬度值转换为像素位置,也需要做相反的操作。我已经找到了很多解决方案,可以从lat/lng->pixel开始,但找不到任何相反的解决方案

几点注意:

  • 地图大小固定,没有缩放,没有平铺
  • 我不需要任何超精确的东西,这并不重要
  • 最好是墨卡托投影,但不是必需的。我不打算实际显示结果。(任何二维投影)
  • 我不能依赖任何基于网络的API,即:没有谷歌地图
只要不依赖于任何特定于平台的API,几乎任何编程语言的解决方案都可以

这是一个从lat/lng->pixel的示例:

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

因为这是在我的头脑中完成的,所以我对这个数学没有完全的信心,但是这些应该是可行的,只要确保首先测试它们。

你需要知道计算必须用于哪个地图投影。您问题中的示例计算不适用于墨卡托地图;它假设一个。我对任何二维投影开放,等矩形将完美地满足我的需求。我没有将结果可视化,所以我没有绑定到特定的投影。如果你没有显示任何东西,那么你首先使用像素到底是为了什么(!)呢?做一些服务器端的工作,需要将lat/lng转换为2D平面,它最终会在客户端可视化之前转换回lat/lng。像素对于这个问题来说不是一个非常精确的词,但它帮助我表达了我所需要的。但是(纬度、经度)已经构成了二维坐标。你可以在你的头脑中称之为“像素”(x=经度,y=纬度),而不以任何方式改变它们,如果这能帮助你可视化计算的话。这可能是显而易见的,因为我的数学技能已经过时了。非常感谢,这正是我需要的!数字是多少?180、360等等?另外,地图高度是以度或像素为单位的吗?我也想知道John评论的答案
var lat=(y/(this.MAP_HEIGHT/180)-90)/-1
var lng = x/(this.MAP_WIDTH/360)-180