latlon点的相对位置

时间:2012-01-16 20:15:51

标签: javascript latitude-longitude geo bearing

我目前正参与一个项目,在VIDEO元素(大小为512x288)的顶部显示地理点作为叠加层非常有用。

VIDEO元素包含直播,我还有实时的方位,纬度,经度和海拔,作为JavaScript变量输入网站。

我还有一系列包含在网站中的POI(兴趣点)。 POI的格式如下:

var points = [['Landmark name', 'latitude', 'longitude'], […]];

每隔5秒左右,我想循环遍历POI数组,并检查它们中是否有任何一个在视频的当前视口中 - 如果是,则将它们覆盖在VIDEO元素的顶部

有人能指出我应该关注的方向吗?我假设我必须使用例如将点映射到2D平面。墨卡托投影。

但是在将POI的相对像素位置映射到视频时,我有点迷失。

期待获得一些提示!

1 个答案:

答案 0 :(得分:1)

之前完成此操作,最关键的要素是在垂直或水平方向上准确地(至少到百分之一度)确定摄像机的视野。然后,使用视频的宽高比(512/288 = 1.78)来确定使用atan公式的另一个角度(如果需要)(不要将垂直视场乘以纵横比的常见错误得到水平视野。视野是角度,纵横比是线性的)。想象一下,在设置相机方面,例如,在OpenGL中,除了你的相机在现实世界中。无需选择视野和相机方向,您将不得不进行测量。

您需要知道相机的姿态(平移/倾斜或俯仰/滚动/偏航)才能正确叠加图形。

您不需要墨卡托投影。我假设相机的视野相对较小(即40度左右),所以你通常可以假设投影表面是一个矩形(从技术上讲,它是一个球体的小补丁)。