Javascript 谷歌地图街景仅第一次显示

Javascript 谷歌地图街景仅第一次显示,javascript,jquery-ui,google-maps-api-3,Javascript,Jquery Ui,Google Maps Api 3,我有一个谷歌地图页面,上面有来自数据库的标记。在marker信息窗口中有一个可单击的链接,该链接打开一个jquery对话框,其中包含位置的街景。 问题是,街景只在我第一次点击信息窗口链接时显示。如果我关闭对话框并再次尝试打开它(单击其他信息窗口,甚至再次单击同一个信息窗口),我会得到带有街景控件的对话框,新地址也会显示出来(带有“地址是近似值”),但对话框的其余部分是统一的浅灰色 我试过在stackoverflow上发布一些warkarounds(如),但灰色对话框仍然存在 编辑: 使用oncl

我有一个谷歌地图页面,上面有来自数据库的标记。在marker信息窗口中有一个可单击的链接,该链接打开一个jquery对话框,其中包含位置的街景。 问题是,街景只在我第一次点击信息窗口链接时显示。如果我关闭对话框并再次尝试打开它(单击其他信息窗口,甚至再次单击同一个信息窗口),我会得到带有街景控件的对话框,新地址也会显示出来(带有“地址是近似值”),但对话框的其余部分是统一的浅灰色

我试过在stackoverflow上发布一些warkarounds(如),但灰色对话框仍然存在

编辑:

使用onclick侦听器创建标记:

function addMarker(feature) {
    var marker = new google.maps.Marker({
        position: feature.position,
        icon: icons[feature.type].icon,
        map: map
    });
    //Create Infowindow
    var infowindow = new google.maps.InfoWindow();
    var content = '<h1 id="Heading" class="Heading">' + feature.shopName + '</h1>' +
                  '<div id="iwcontent" class="iwcontent">'+
                  '<p><b>Naslov : </b>' + feature.shopAddress + '</br>' +
                  '<p><b>Telefon : </b>' + feature.shopTel + '</br>' +
                  '</div>'+
                  '<div id="iwsw" class="iwsw">StreetView</div>'
                  ;
    //Call StreetView
    google.maps.event.addDomListener(infowindow, 'domready', function () {
        $('.iwsw').click(function () {
            showStreetView(feature.position);
        });
    });
    .
    .
    .
对话框定义:

$(function(){
    $('#dialog-sw-canvas').dialog({
        title: 'Street View',
        width: 1024,
        height: 768,
        closed: true,
        cache: false,
        modal: true,
        onClose: function(){
            $('#dialog-sw-canvas').empty();
        }
    });
});

一切都像一个魔咒,但只有一次。

打开对话框后触发全景图的调整大小事件,然后API将能够重新计算全景图的大小:

//Display dialog with streetview
function showStreetView(position){
    var panoramaOptions = {position: position, pov: {heading: 34,pitch: 10}};
    var panorama = new  google.maps
        .StreetViewPanorama(document.getElementById("dialog-sw-canvas"), panoramaOptions);
    map.setStreetView(panorama);
    $( "#dialog-sw-canvas" ).dialog("open");
    google.maps.event.trigger(panorama,'resize');
}

打开对话框后触发全景图的调整大小事件,然后API将能够重新计算全景图的大小:

//Display dialog with streetview
function showStreetView(position){
    var panoramaOptions = {position: position, pov: {heading: 34,pitch: 10}};
    var panorama = new  google.maps
        .StreetViewPanorama(document.getElementById("dialog-sw-canvas"), panoramaOptions);
    map.setStreetView(panorama);
    $( "#dialog-sw-canvas" ).dialog("open");
    google.maps.event.trigger(panorama,'resize');
}

我对你的代码没有问题。你能提供一个展示问题的演示吗?如果你在全景选项中添加
visible:true
?尽管这可能很愚蠢,但我不会放弃它。@amenadiel尝试过,但遗憾的是,结果是失败的same@Dr.Molle我已经将基本代码与mysql/framework解耦,并且可以在这里使用:我对您的代码没有任何问题。你能提供一个展示问题的演示吗?如果你在全景选项中添加
visible:true
?尽管这可能很愚蠢,但我不会放弃它。@amenadiel尝试过,但遗憾的是,结果是失败的same@Dr.Molle我已经从mysql/framework中解耦了基本代码,它在这里可用:棒极了。很有魅力。太棒了,我从没想过!我使用的是一个基础对话框,必须把它放在一个超时的时间上,例如:<代码> StimeTimeOutin(函数){谷歌.MMAP.Engult.Cut发器(全景,“ResiSe”);},1000);代码>好的解决方案+1我们很好。很有魅力。太棒了,我从没想过!我使用的是一个基础对话框,必须把它放在一个超时的时间上,例如:<代码> StimeTimeOutin(函数){谷歌.MMAP.Engult.Cut发器(全景,“ResiSe”);},1000);代码>好的解决方案+1.