6

你好编程世界,

我正在使用 Google Maps API v3,并且我有一个需要特定坐标的地图叠加层。

在图像中,我设法将左上角和右下角的两个像素坐标集手动转换为纬度和经度坐标。我发现了这些等式:

左上角:
1px [x 轴], 1px [y 轴])像素等于...
-109.05005006119609° [经度], 41.00062580014626° [纬度])纬度/经度

右下:
575px [x 轴], 423px [y 轴])以像素为单位等于...
-102.0423399657011° [经度], 36.99314427042206° [纬度])以纬度/经度为单位

然而,我的老板后来决定他宁愿让谷歌地图用谷歌的折线绘图类来绘制这个(所以我需要在我的叠加层中以纬度/经度坐标绘制的每个边框角度)。

我的问题是,给定这两组坐标,是否有某种方程式或公式可以使用,以便我可以找到像素坐标(我已经在图像地图文件中拥有)并将其转换为纬度/经度协调。

示例:兴趣点位于 132 像素 x 轴和 10 像素 y 轴 = a° 经度和 b° 纬度 找到 a 和 b。

感谢您的帮助,Llewgnolm

4

1 回答 1

3

我和我的一个朋友谈过,他回答了我的问题,所以我想我会把结果贴在这里给任何想知道的人。

我们所做的是创建一个线性方程组:
Lat/Lng = Multiplier*Pixels+Constant (L=m*p+c)

我们将手动找到的数字代入系统的两个方程,即(对于经度):
-109.05...=m*(1)+c 和
-102.04...=m*575+c 并解决了 m 和 c


最终,数字出来是(经度):
m = 0.01220895749767
c = -109.06228374530811

然后我们可以使用我们的 m 和 c 值将任何像素值代入该方程并找到纬度/经度,即(再次从上面列出的示例数字中,对于经度):
L = 0.01220895749767(132) - 109.06228374530811
L(x 方向上 132px 处的经度)= -107.45070135561566°

这会根据图像像素找到度数值,直到小数点后第 14 位(绰绰有余)。对于纬度,我只是用内部基于纬度的数字制作了一个不同的方程组,以找到不同的 m 和 c 值。希望这可以帮助任何偶然发现类似问题的人。

于 2013-10-26T07:44:33.593 回答