Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 无法在页面加载后添加Google Map API脚本_Jquery_Google Maps - Fatal编程技术网

Jquery 无法在页面加载后添加Google Map API脚本

Jquery 无法在页面加载后添加Google Map API脚本,jquery,google-maps,Jquery,Google Maps,由于一些限制,我无法在页面加载中使用GoogleMapAPI的脚本标记。我尝试了多种方式将脚本添加到页面,包括使用jQuery添加脚本标记,如下所示: $('head').append('<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>'); 这两个示例都会导致整个页面变为白色和空白。有什么想法吗?如果您查看试图从Google加载的

由于一些限制,我无法在页面加载中使用GoogleMapAPI的脚本标记。我尝试了多种方式将脚本添加到页面,包括使用jQuery添加脚本标记,如下所示:

$('head').append('<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>');

这两个示例都会导致整个页面变为白色和空白。有什么想法吗?

如果您查看试图从Google加载的URL返回的JavaScript,您会看到它包含一个文档。write()语句:

函数getScript(src){ 文件。写(“”); } document.write()是一个仅在页面加载期间可用的命令。它不能事后调用,否则您将体验到您提到的那些结果。Google不希望您在页面加载后加载此特定脚本


我敢说吗?也许您需要插入一个iframe,指向带有google地图代码设置的页面,以便document.write()可以按照他们的设计工作。

即使问题有点老,我也会回答。 我认为你应该使用谷歌api

google.load
遵循此文档 . 要做到这一点,您需要一个GoogleAPI密钥,并且需要在页面源代码中包含使用它们的脚本。
之后,您可以使用回调来加载地图。

这对我来说很有效(遵循JAM的注释)-只需在页面加载后运行函数即可

function writeGoogleMapsScript()
{
        document.oldWrite = document.write; 
        document.write = function(text)
        {                                 
            var parser = new DOMParser();
            var element = parser.parseFromString(text, "text/xml");           
            var child = element.firstChild;                
            var element = document.createElement("script");
            element.src = child.getAttribute('src');
            element.type= "text/javascript";            
            document.getElementsByTagName("head")[0].appendChild(element);                          
            document.write = document.oldWrite;
        };                         
        var element = document.createElement("script");
        element.src = "http://maps.google.com/maps/api/js?sensor=true&language=iw";
        element.type= "text/javascript";            
        document.getElementsByTagName("head")[0].appendChild(element);  
}

我相信Fabio Pozzi的答案是正确的解决方案,除了他的答案之外,这里还有一段代码,使用jQuery.getScript加载google api加载程序和地图

            // load the google api loader
            if( typeof(google) == 'undefined' || !google.load ) {
                $.getScript( '//www.google.com/jsapi', function() {
                    loadMaps();
                });
            }

            // otherwise just load maps
            else {
                loadMaps();
            }

            // load the google maps api
            function loadMaps() {
                google.load("maps", "3", {
                    callback: initMap,
                    other_params: 'sensor=true'
                });
            }

我确实意识到这是一个老问题,但以下解决方案对我有效: 然后将脚本添加到页面中,您应该提供
回调
参数,然后延迟加载和倾斜适用于谷歌地图。下面是一个例子:

 $('body').append('<script type="text/javascript" src="https://maps.google.com/maps/api/js?key=XXX-YYYY-ZZZ&sensor=false&callback=initializeGoogleMaps"></script>');
 window.initializeGoogleMaps = function () {
 }
$('body')。追加(“”);
window.initializeLogleMaps=函数(){
}

我明白了。嗯。。。我还可以在加载之前将document.write更改为不同的函数,是吗?我做到了!我做到了:document.oldswrite=document.write;document.write=函数(whatToWrite){$(“body”).append(whatToWrite);};document.write=document.oldwite;我不认为你需要API密钥来使用这个。
            // load the google api loader
            if( typeof(google) == 'undefined' || !google.load ) {
                $.getScript( '//www.google.com/jsapi', function() {
                    loadMaps();
                });
            }

            // otherwise just load maps
            else {
                loadMaps();
            }

            // load the google maps api
            function loadMaps() {
                google.load("maps", "3", {
                    callback: initMap,
                    other_params: 'sensor=true'
                });
            }
 $('body').append('<script type="text/javascript" src="https://maps.google.com/maps/api/js?key=XXX-YYYY-ZZZ&sensor=false&callback=initializeGoogleMaps"></script>');
 window.initializeGoogleMaps = function () {
 }