1

我目前正在参与一个项目,在该项目中,将地理点显示为VIDEO元素(尺寸 512x288)顶部的叠加层会很有用。

VIDEO元素包含一个现场直播,并且我还有一个实时的方位、纬度、经度和高度信息,这些信息作为 JavaScript 变量输入到站点中。

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

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

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

有人可以指出我应该看什么的正确方向吗?我假设我必须使用例如墨卡托投影将点映射到 2D 平面。

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

期待得到一些提示!

4

1 回答 1

1

之前已经这样做了,最关键的元素是在垂直或水平方向上准确地确定相机的视野(至少百分之一度)。然后,使用视频的纵横比 (512/288 = 1.78) 使用 atan 公式确定另一个角度(如果需要)(不要犯将垂直视野乘以纵横比得到水平的常见错误)视野。视野是有角度的,纵横比是线性的)。考虑一下设置相机,例如,在 OpenGL 中,除了您的相机在现实世界中。您将不得不测量它,而不是选择视野和相机方向。

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

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

于 2012-01-17T02:11:13.557 回答