我目前正参与一个项目,在VIDEO
元素(大小为512x288)的顶部显示地理点作为叠加层非常有用。
VIDEO
元素包含直播,我还有实时的方位,纬度,经度和海拔,作为JavaScript变量输入网站。
我还有一系列包含在网站中的POI(兴趣点)。 POI的格式如下:
var points = [['Landmark name', 'latitude', 'longitude'], […]];
每隔5秒左右,我想循环遍历POI数组,并检查它们中是否有任何一个在视频的当前视口中 - 如果是,则将它们覆盖在VIDEO
元素的顶部
有人能指出我应该关注的方向吗?我假设我必须使用例如将点映射到2D平面。墨卡托投影。
但是在将POI的相对像素位置映射到视频时,我有点迷失。
期待获得一些提示!
答案 0 :(得分:1)
之前完成此操作,最关键的要素是在垂直或水平方向上准确地(至少到百分之一度)确定摄像机的视野。然后,使用视频的宽高比(512/288 = 1.78)来确定使用atan公式的另一个角度(如果需要)(不要将垂直视场乘以纵横比的常见错误得到水平视野。视野是角度,纵横比是线性的)。想象一下,在设置相机方面,例如,在OpenGL中,除了你的相机在现实世界中。无需选择视野和相机方向,您将不得不进行测量。
您需要知道相机的姿态(平移/倾斜或俯仰/滚动/偏航)才能正确叠加图形。
您不需要墨卡托投影。我假设相机的视野相对较小(即40度左右),所以你通常可以假设投影表面是一个矩形(从技术上讲,它是一个球体的小补丁)。