一尘不染

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

java

我需要将纬度经度值转换为像素位置以及相反的操作。我发现许多解决方案都来自lat / lng-> pixel,但反之则找不到任何东西。

一些注意事项:

  • 地图是固定大小,无缩放,无图块。
  • 我不需要任何超级准确的信息,这并不重要。
  • 最好是墨卡托投影,但不是必需的。我实际上并没有显示结果。(任何2D投影)
  • 我不能依赖任何基于Web的API,即:没有Google Maps

只要不依赖任何平台特定的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));

阅读 316

收藏
2020-12-03

共1个答案

一尘不染

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

因为它是在我脑海中完成的,所以对那个数学不是完全有信心,但是那些应该起作用,只是确保先进行测试。

2020-12-03