页面加载调用后的谷歌地图api

google maps api after page loading call

本文关键字:谷歌地图 api 调用 加载      更新时间:2023-09-26

我想在谷歌位置自动完成上设置国际化。通过选择一种语言,应用程序应该加载该语言的正确谷歌api。

现在我有这个js代码:

function loadScript(src) {
    var script = document.createElement("script");
    document.body.appendChild(script);
    script.src = src;
};
$('#' + country_id).change(function(){
            delete google.maps;
            $('script').each(function () {
                if (this.src.indexOf('googleapis.com/maps') >= 0
                    || this.src.indexOf('maps.gstatic.com') >= 0
                    || this.src.indexOf('earthbuilder.googleapis.com') >= 0) {
                        // console.log('removed', this.src);
                        $(this).remove();
                    }
            });
            loadScript("http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false&language=" + this.value);
            setTimeout(function(){ google_address(input_id, options_type, country_id, auto_complete) }, 2000);
    });

其中,google_address是设置自动完成的函数。这个解决方案不起作用,并使我在chrome:上出现错误

Failed to execute 'write' on 'Document': It isn't possible to write into a document from an asynchronously-loaded external script unless it is explicitly opened.

也尝试过使用谷歌加载,但没有成功。。。

任何想法都将非常受欢迎。

问题来自脚本为加载api而调用的document.write。无法在页面加载之外调用此函数。因此出现了错误。

多亏了这个例子,我用document.body.appendChild.为每种语言制作了自定义加载器

我也需要删除pac容器来取消绑定以前的语言选择。

只需在调用中添加一个回调参数即可避免此错误。

注意"after page loading" == "asynchronous"