Я не могу взглянуть на (закрытый) исходный код для GMaps, поэтому могу только догадаться , что проблема может быть в том, что где-то отсутствует свойство zoom
.
Одна возможность - google.maps.StreetViewPanoramaOptions
- там есть свойство zoom
. Так что вместо
var pano = new google.maps.StreetViewPanorama(panoEl, {
position: fenway,
pov: { heading: 165, pitch: 0 }
});
Я бы попробовал что-то вроде
var pano = new google.maps.StreetViewPanorama(panoEl, {
position: fenway,
pov: { heading: 165, pitch: 0 },
zoom: 0
});
Другая возможность состоит в том, что между гонкой GoogleMutant и изменением уровня масштабирования существует условие гонки.
Если вы прочитаете код для GoogleMutant, вы увидите, что событие spawned
происходит, когда мутант создается , но задолго до его уровень масштабирования установлен . Есть нетривиальная последовательность событий, происходящих, когда мутант добавляется на карту.
Поэтому, чтобы убедиться, что уровень масштабирования мутанта инициализирован перед показом панорамы, я бы изменил ...
roads.on('spawned', function(ev) {
var googleMap = ev.mapObject;
googleMap.setOptions({ streetViewControl: true, fullscreenControl: false,})
googleMap.setStreetView(pano)
});
... во что-то вроде ...
roads.once('spawned', function(ev) {
roads.once('loading', function(ev) {
var googleMap = ev.mapObject;
googleMap.setOptions({ streetViewControl: true, fullscreenControl: false,})
googleMap.setStreetView(pano)
});
});
В этом случае другой возможностью будет запускать другое настраиваемое событие в строке 79 GoogleMurant.js - возможно, что-то вроде this.fire('ready')