Google Street View увеличить до Fov

Мне нужно сохранить изображение Street view точно так же, как выбрано пользователем (включая 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. При работе с видовым экраном фиксированного размера, как и с изображением Street View заданного размера, поле зрения по существу представляет собой масштаб с меньшими номерами, указывающими более высокий уровень масштабирования.

Я нашел информацию о "конвертации" https://developers.google.com/maps/documentation/javascript/streetview#TilingPanoramas

введите описание изображения здесь

но он говорит, что fov может быть до 180, но пред. link говорит, что значение 120 максимально. Зачем? Конечно, я могу найти соотношение для преобразования, но, возможно, существует обычным способом (т.е. Панорама возвращает Fov вместо масштабирования)?

Кроме того, кажется, поймать увеличение в pov_changed не самый лучший способ. Иногда масштабирование не обновляется должным образом

+4
10 февр. '16 в 22:27
источник поделиться
2 ответа

Найдена следующая функция для преобразования из масштабирования в FOV:

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

он работает (почти точно):)

ADDED

более точные результаты:

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

благодаря trungk18

+6
11 февр. '16 в 18:49
источник

Вы можете использовать следующую формулу для преобразования fov для увеличения:

  • fov - увеличить:

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

Или наоборот:

  • увеличить до fov:

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

оригинальный ответ

0
18 дек. '17 в 19:08
источник

Посмотрите другие вопросы по меткам или Задайте вопрос