Google 街景缩放到 Fov
Google Street View zoom to Fov
我需要完全按照用户选择的方式保存街景图像(包括 panoID、航向、俯仰角和视野)。我有以下代码:
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 (default is 90) determines the horizontal field of view of the image. The field of view is expressed in degrees, with a maximum allowed value of 120. When dealing with a fixed-size viewport, as with a Street View image of a set size, field of view in essence represents zoom, with smaller numbers indicating a higher level of zoom.
我找到了一些 "convertation" 信息
https://developers.google.com/maps/documentation/javascript/streetview#TilingPanoramas
但是它告诉我们,fov 可以到 180,但是 prev。 link 告诉 120 值是最大的。为什么?
当然,我可以找到转换比率,但也许存在正常方式(即全景 returns Fov 而不是缩放)?
此外,放大 pov_changed 似乎不是最好的方法。有时缩放未正确更新
找到以下从缩放转换为 FOV 的函数:
var k = Math.pow(0.5051, zoom);
var fov = 103.7587 * k;
有效(几乎完全正确):)
已添加
更精确的结果:
var fov = 180 / Math.pow(2,zoom)
感谢 trungk18
您可以使用以下公式将 fov 转换为缩放:
fov 到 zoom:
zoom = Math.log(180/
fov
)/(Math.log(2))
反之亦然:
缩放到fov:
fov = 180 / Math.pow(2,
zoom
)
original answer
我需要完全按照用户选择的方式保存街景图像(包括 panoID、航向、俯仰角和视野)。我有以下代码:
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 (default is 90) determines the horizontal field of view of the image. The field of view is expressed in degrees, with a maximum allowed value of 120. When dealing with a fixed-size viewport, as with a Street View image of a set size, field of view in essence represents zoom, with smaller numbers indicating a higher level of zoom.
我找到了一些 "convertation" 信息 https://developers.google.com/maps/documentation/javascript/streetview#TilingPanoramas
但是它告诉我们,fov 可以到 180,但是 prev。 link 告诉 120 值是最大的。为什么? 当然,我可以找到转换比率,但也许存在正常方式(即全景 returns Fov 而不是缩放)?
此外,放大 pov_changed 似乎不是最好的方法。有时缩放未正确更新
找到以下从缩放转换为 FOV 的函数:
var k = Math.pow(0.5051, zoom);
var fov = 103.7587 * k;
有效(几乎完全正确):)
已添加
更精确的结果:
var fov = 180 / Math.pow(2,zoom)
感谢 trungk18
您可以使用以下公式将 fov 转换为缩放:
fov 到 zoom:
zoom = Math.log(180/
fov
)/(Math.log(2))
反之亦然:
缩放到fov:
fov = 180 / Math.pow(2,
zoom
)
original answer