谷歌地图 api 长时间加载的 jQuery 移动对话框消失

Posted

技术标签:

【中文标题】谷歌地图 api 长时间加载的 jQuery 移动对话框消失【英文标题】:jQuery mobile dialog disappears for google maps api long loads 【发布时间】:2016-02-27 06:45:50 【问题描述】:

当 Google Maps API 加载时间过长时,我在 jQuery Mobile 中使用的伪启动页面(它是加载时以编程方式打开的对话框)时遇到问题。

实际上发生的事情是,当谷歌地图需要一段时间才能完成加载时,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;
);

html中是这样的锚标记

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

【问题讨论】:

请提供一个Minimal, Complete, Tested and Readable example 来证明该问题。 抱歉,代码已添加。 【参考方案1】:

您能否发布用于显示 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>

【讨论】:

这似乎允许我以编程方式关闭对话框,但我试图阻止这种情况,因为当我不希望它时它似乎正在消失。

以上是关于谷歌地图 api 长时间加载的 jQuery 移动对话框消失的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Mobile 和 Google Maps API - 地图未加载到设备上

无法将谷歌静态地图加载到jquery mobile中的div中

如何在移动设备的混合应用程序中使用谷歌地图 API

谷歌图表需要很长时间才能加载

jquery mobile刷新加载地图api v3

谷歌地图更新jquery移动问题