0

我试图捕捉街景小人图标何时落在谷歌地图上并将全景位置和缩放发送到服务器。下面的代码用于监听 visible_changed 事件。但是 thePanorama.getZoom() 和 getPosition() 返回未定义。

thePanorama = map.getStreetView();

streetviewChangeListener = google.maps.event.addListener(thePanorama, 'visible_changed', function() {
                console.log('visible_changed ');
                console.log('streetview panorama position: ' + thePanorama.getPosition() + ' zoom: ' + thePanorama.getZoom());
                emitStreetViewEvents({position: thePanorama.getPosition(),  zoom: thePanorama.getZoom()});
             });

帮助?

4

2 回答 2

2

不幸的是,我遇到了一个模拟问题,计算标记之间的距离以及全景位置以隐藏和显示标记。

我得出的结论是,使用visible_changed您可以获得更改前的位置。

为了让它工作,我必须为position_changes添加一个额外的监听器。在我的代码中,我必须使用各种标记,一种链接到全景图,一种链接到外部网站,两者都在地图模式下可见。在全景模式下,全景标记被隐藏。检查网站标记与全景位置的距离,并仅显示一定距离内的标记。

    google.maps.event.addListener(panorama, 'visible_changed', function() {
    if (panorama.getVisible()) {
        hideMarkers();
        checkZelfstudies();
    } else {
        showMarkers();
        showZelfstudies();
    }
});

google.maps.event.addListener(panorama, 'position_changed', function() {
    checkZelfstudies(); 
});

https://developers.google.com/maps/documentation/javascript/streetview?hl=nl#StreetViewEvents

希望这可以帮助您解决问题。它适用于我的代码。

于 2014-05-22T09:46:48.577 回答
0

当街景小人在谷歌地图第 3 版中被删除时,我只是对更新位置和缩放进行了编码,因此,使用您的变量并添加其他一些行,也许它会对您有所帮助:

var marker;
var latlng;
var map;
var panorama;

function initialize(position) {

map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions);
panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
thePanorama.setStreetView(panorama);

google.maps.event.addListener(panorama, 'position_changed', function() {
 marker.setMap(null);
 marker = new google.maps.Marker({
 position: panorama.getPosition(),
 map: map,
 draggable: false
 });
 map.setCenter(marker.getPosition());
 console.log(marker.position.lat());
 console.log(marker.position.lng());
});

google.maps.event.addListener(map, 'zoom_changed', function() {
 console.log('zoom_changed');
 console.log(thePanorama.getZoom());
});
google.maps.event.addListener(panorama, 'pano_changed', function() {
 console.log(panorama.getPano());
});
google.maps.event.addListener(panorama, 'pov_changed', function() {
 console.log(panorama.getPov().heading % 360);
 console.log(panorama.getPov().pitch);
});
}

我希望它对你有用,问候。

于 2014-05-17T14:08:56.727 回答