4

我需要完全按照用戶選定的方式(包括panoID,標題,球場和fov)保存街景視圖圖像。我有以下代碼:谷歌街景放大到Fov

  panorama = new google.maps.StreetViewPanorama(document.getElementById('pano')); 
      panorama.addListener('pano_changed', function() { 
       $('#panoID').val(panorama.getPano()); 
      }); 
      panorama.addListener('pov_changed', function() { 
       $('#heading').val(panorama.getPov().heading); 
       $('#pitch').val(panorama.getPov().pitch); 
       $('#fov').val(panorama.getZoom()); 
      }); 

問題是我想保存縮放爲FOV值 https://developers.google.com/maps/documentation/streetview/intro(看FOV可選參數)

FOV(默認爲90)決定的水平視場的形象。視角用度表示,最大允許值爲120.當處理固定大小的視口時,與設置大小的街景圖像一樣,視野本質上表示縮放,較小的數字表示縮放更高級別的縮放。

我發現了一些 「convertation」 信息 https://developers.google.com/maps/documentation/javascript/streetview#TilingPanoramas

enter image description here

,但它告訴,這FOV可至180,但分組。鏈接告訴120值是最大值。爲什麼? 當然,我可以找到轉換率,但也許存在正常的方式(即全景返回Fov而不是縮放)?

另外,似乎抓住放大pov_changed不是最好的方法。有時變焦不能正確更新

回答

6

發現下列函數從縮放轉換到視界:

var k = Math.pow(0.5051, zoom); 
var fov = 103.7587 * k; 

它的工作原理(幾乎一模一樣):)

ADDED

更精確的結果:

var fov = 180/Math.pow(2,zoom) 

感謝trungk18

+2

這是正確的方法。我看到var fov = 180/Math.pow(2,縮放)給我更精確的結果? – trungk18

0

你可以用下面的公式轉換視界放大:

  • FOV變焦

    zoom = Math.log(180/fov)/(Math.log(2))

或者反之亦然:

  • 變焦FOV

    fov = 180/Math.pow(2,zoom)

original answer