4

Мне нужно сохранить изображение в виде улиц точно так же, как выбрано пользователем (включая panoID, заголовок, шаг и fov). У меня есть следующий код:Google Street View увеличить до 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

enter image description here

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

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

ответ

6

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

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

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

ДОБАВЛЕНО

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

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

благодаря trungk18

+2

Правильно ли это. Я видел, что var fov = 180/Math.pow (2, zoom) дает мне более точные результаты? – trungk18

0

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

  • FOV в зум:

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

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

  • зум в FOV:

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

original answer