如何在 javascript 没有互联网的情况下处理 google 地图 api

How to handle google maps api with out Internet in javascript

在我们的应用程序中,我们在 jsp 中使用 google 地图 api。最近我们在离线模式下发现 google 地图 js 文件未加载,因此其他与应用程序相关的 javascript 文件停止工作。

以下是我尝试解决的方法,但不幸的是,这两种方法都不起作用。

我将我的 javascript 从脚本标签移到 window 页面加载,但在这种情况下,网络浏览器会继续旋转以加载 google 地图脚本,为了避免这种情况,我设置了window 超时(不知道它到底做了什么)。即使在超时之后,浏览器也会继续旋转。

发件人:

<script
    src="http://maps.google.com/maps?file=api&v=2&key=<%=mapKey%>"
    type="text/javascript"></script>

收件人:

function loadScript() {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = 'http://maps.google.com/maps?file=api&v=2&key=<=%googleMapKey%>';
    document.body.appendChild(script);
  }
  window.onload = loadScript;

 $(function(){
        var timeoutId;
        timeoutId = window.setTimeout(function() {
            alert("Script Error!");
            //document.getElementById("myFrame").value = "";

        }, 20);
        var url = 'http://maps.google.com/maps?file=api&v=2&key=<%=googleMapKey%>&callback=initialize';
        $.getScript(url, function(){ window.clearTimeout(timeoutId) });
    });

如果你能帮助我处理这个问题,我将不胜感激。

您可以通过 jQuery 的 getScript 之类的方式异步加载脚本,然后仅在 ajax 调用成功时执行您的函数来加载 google 地图内容,如果不,然后在没有 google 地图的情况下继续正常进行。

$.getScript( "http://maps.google.com/maps?file=api&v=2&key=<%=googleMapKey%>&callback=initialize" )
  .done(function( script, textStatus ) {
    //load your google maps stuff
  })
  .fail(function( jqxhr, settings, exception ) {
    //hide placeholder for google maps / display error
});

(无耻地取自 http://api.jquery.com/jquery.getscript/