Javascript google maps api长加载时,jQuery mobile对话框消失

Javascript google maps api长加载时,jQuery mobile对话框消失,javascript,jquery,google-maps,jquery-mobile,Javascript,Jquery,Google Maps,Jquery Mobile,当GoogleMapsAPI加载时间过长时,我在jQueryMobile中使用的伪启动页面(这是一个加载时以编程方式打开的对话框)遇到了问题 实际上,当Google Maps需要一段时间来完成加载时,jQuery Mobile对话框窗口消失,url仍然显示#&ui state=dialog,就好像它仍然打开一样,所以它没有关闭它,只是让它消失 我尝试过很多方法,但我不知道如何解决或预防它 $("#map_canvas").ready(function() { var myOptions

当GoogleMapsAPI加载时间过长时,我在jQueryMobile中使用的伪启动页面(这是一个加载时以编程方式打开的对话框)遇到了问题

实际上,当Google Maps需要一段时间来完成加载时,jQuery Mobile对话框窗口消失,url仍然显示#&ui state=dialog,就好像它仍然打开一样,所以它没有关闭它,只是让它消失

我尝试过很多方法,但我不知道如何解决或预防它

$("#map_canvas").ready(function() {

    var myOptions = {
        zoom: 13,
        center:latLngVar,
        mapTypeId:google.maps.MapTypeId.ROADMAP,
        disableDefaultUI:true,
        zoomControlOptions:{ position:google.maps.ControlPosition.LEFT_TOP }
    };

    if(firstShow){

        var winHeight = $(window).height();
        var winWidth = $(window).width();
        var oMod = winHeight/winWidth;
        if ( oMod <= 1 ){
            renderLandscape(winHeight,winWidth);
        }else if( oMod > 1 ){
            renderPortrait(winHeight,winWidth);
        }
        drawMap(myOptions);
    }

    showHomeScreen();

    splashListener = google.maps.event.addListener(map, "idle", function(){
        setTimeout(function(){$("#dlgSplash").click()}, 500);
        google.maps.event.removeListener(splashListener);
    })

    firstShow = false;
});
$(“#映射_画布”).ready(函数(){
变量myOptions={
缩放:13,
中心:latLngVar,
mapTypeId:google.maps.mapTypeId.ROADMAP,
disableDefaultUI:true,
ZoomControl选项:{position:google.maps.ControlPosition.LEFT_TOP}
};
如果(第一场){
var winHeight=$(window.height();
var winWidth=$(window.width();
var oMod=winHeight/winWidth;
如果(oMod 1){
renderPortrait(winHeight,winWidth);
}
绘图(myOptions);
}
showHomeScreen();
splashListener=google.maps.event.addListener(映射,“空闲”,函数(){
setTimeout(函数(){$(“#dlgSplash”)。单击()},500);
google.maps.event.RemovelListener(splashListener);
})
firstShow=false;
});
html中有一个锚定标记,如下所示

<a href="splash.php" data-prefetch data-rel="dialog" id="dlgSplash" style="display: none;"></a>

您是否能够发布用于显示jQuery Mobile对话框并将其关闭的代码?以下几点可以帮助您实现目标:

<script async defer
  src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
<script type='text/javascript'>

$(function() {
    $("#dialog").popup("open");
});

function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
        center: {lat: -34.397, lng: 150.644},
        zoom: 8
    });
    $("#dialog").popup("close");
}

</script>

$(函数(){
$(“#对话框”)。弹出(“打开”);
});
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
中心:{纬度:-34.397,液化天然气:150.644},
缩放:8
});
$(“#对话框”)。弹出(“关闭”);
}

请提供一个演示此问题的示例。抱歉,已添加代码。这似乎允许我以编程方式关闭对话框,但我正试图阻止它,因为它似乎在我不希望它消失时消失了。