我需要完全按用户选择保存街景图像(包括panoID,航向,俯仰和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.在处理固定大小的视口时,与设定大小的街景视图图像一样,视野本质上表示缩放,较小的数字表示更高级别的缩放。
我找到了一些"转换"信息 https://developers.google.com/maps/documentation/javascript/streetview#TilingPanoramas
但它告诉我,fov可以到180,但是上一个。链接告诉120值是最大值。为什么? 当然,我可以找到转换的比率,但也许存在正常的方式(即全景返回Fov而不是缩放)?
另外,看来,抓住放大pov_changed不是最好的方法。有时缩放未正确更新
答案 0 :(得分:6)
找到以下功能以从缩放转换为FOV:
var k = Math.pow(0.5051, zoom);
var fov = 103.7587 * k;
它的工作原理(几乎完全):)
<强> ADDED 强>
更精确的结果:
var fov = 180 / Math.pow(2,zoom)
感谢trungk18
答案 1 :(得分:0)
您可以使用以下公式将fov转换为缩放:
fov 到缩放:
zoom = Math.log(180/
的 fov
强> )/(Math.log(2))
反之亦然:
缩放到 fov :
fov = 180 / Math.pow(2,
的 zoom
强> )
<子> original answer 子>