游戏地图查看器MouseX,Y到长,纬度

时间:2014-08-20 08:25:03

标签: delphi coordinates coordinate-transformation

我不确定如何正确地说这个,但是我一直在处理将位图文件加载到Direct2D表面的地图查看器。但是我希望地图查看器鼠标X,Y坐标匹配与游戏坐标相似的那些。

以下是我所指的示例图片:

http://i.stack.imgur.com/FOaxG.png

左侧地图查看器是一个单独的应用程序,我试图在我自己的地图查看器中模仿它,但是你可以看到我在两个表格的左下角,并且坐标与Lon / Lat不匹配我的地图查看器。

我们是4624像素宽,左下角应转换为Lon:16384 Lat:24577而右上角将转换为Lon:90111 Lat:98304

var
  BSize: TD2DSizeF;
  S4, S5: string;
  FPos: TPoint;
begin
  S4 := 'Longitude: '+FloatToStr((BSize.Width / 360) * (180 + FPos.X));
  S5 := 'Latitude: '+FloatToStr((BSize.Height / 180) * (90 - FPos.Y));

有人能指出我正确的方向来解决这个问题吗?我误解了这个概念吗?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,公式应为:

Lon := 16384 + x / MaxX * (90111 - 16384);
Lat := 98304 - y / MaxY * (98304 - 24577);

其中MaxXMaxY是右下角的像素坐标(即Width - 1Height - 1,相应的)。