2012-01-16 38 views
1

我目前正在參與一個項目,在VIDEO元素(大小512x288)之上顯示地理點作爲疊加層會很有用。latlon points的相對位置

VIDEO元素包含一個實況廣播,我也有一個實時的方位,緯度,經度和高度的饋送,作爲JavaScript變量提供給站點。

我也有一個包含在網站中的興趣點(興趣點)數組。該POI的是按以下格式:

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

每五秒鐘左右的時間,我想通過POI的數組循環,並檢查其中是否是視頻的當前視口內 - 如果屬實,將它們覆蓋在VIDEO元素的頂部。

有人能指出我正確的方向,我應該看什麼?我假設我必須使用例如圖像將點映射到2D平面。墨卡託投影。

但是當涉及到將POI的相對像素位置映射到視頻時,我有點失落。

期待得到一些提示!

回答

1

在完成之前,最關鍵的要素是在垂直或水平方向上準確地確定攝像機的視場(至少達到百分之一度)。然後,使用atan公式,使用視頻的寬高比(512/288 = 1.78)來確定其他角度(如果需要)(不要將垂直視野乘以寬高比以獲得水平方向的常見錯誤視野是視角,縱橫比是線性的)。例如,在OpenGL中設置攝像頭,除非攝像頭位於真實世界中。而不是選擇視野和攝像機方向,你將不得不測量它。

爲了正確地疊加圖形,您需要了解相機的姿態(搖攝/傾斜或俯仰/滾動/偏轉)。

您不需要墨卡託投影。我假設相機的視場相對較小(即40度H左右),因此通常可以假定投影表面是矩形(技術上,它是一個球體的小片)。