【发布时间】:2011-10-24 13:10:23
【问题描述】:
我需要将纬度经度值转换为像素位置,反之亦然。我找到了许多从 lat/lng->pixel 出发的解决方案,但在反面找不到任何东西。
几点说明:
- 地图是固定大小的,没有缩放,没有图块。
- 我不需要任何超级准确的东西,这并不重要。
- 最好是墨卡托投影,但不是必需的。我实际上并没有显示结果。 (任何 2D 投影)
- 我不能依赖任何基于网络的 API,即:没有 Google 地图
几乎任何编程语言的解决方案都可以,只要它不依赖于任何特定于平台的 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));
【问题讨论】:
-
您需要知道计算必须适用于哪个地图投影。您问题中的示例计算不适适用于墨卡托地图;它假定为equirectangular projection。
-
我对任何 2D 投影都持开放态度,equirectangular 将完美地满足我的需求。我没有将结果可视化,所以我不依赖于特定的投影。
-
如果您没有显示任何内容,那么您到底在使用像素做什么(!)?
-
做一些需要将 lat/lng 转换为 2D 平面的服务器端工作,它最终会在客户端可视化之前转换回 lat/lng。像素对于这个问题来说并不是一个非常准确的词,但它帮助我表达了我所需要的。
-
但是(纬度,经度)已经构成二维坐标。您可以在头脑中将其称为“像素”(x=经度,y=纬度),而无需以任何方式更改它们,如果这有助于您可视化计算。
标签: java javascript actionscript-3 geolocation latitude-longitude