2

我在 WordPress 中创建了一个脚本来加载我所有的 JavaScript 文件,合并并压缩它们。在我使用的 JavaScript 文件和以下 JavaScript 文件中:

http://maps.googleapis.com/maps/api/js?sensor=false

虽然我的脚本运行良好,但谷歌地图加载的 JavaScript 文件看起来没有运行,以便从谷歌加载所有外部 JavaScript 文件。

谷歌地图文件在我生成的合并压缩后的 JavaScript 文件的最顶部,其内容如下:

window.google = window.google||{};
google.maps = google.maps||{};
(
    function()
    {
        function getScript(src)
        {
            document.write('<'+'script src="'+src+'"'+' type="text/javascript"><'+'/script>');
        }

        var modules = google.maps.modules = {};
        google.maps.__gjsload__ = function(name, text)   
        {
            modules[name]=text;
        };

        google.maps.Load = function(apiLoad)
        {
            delete google.maps.Load;
            apiLoad(
            [
                null,
                [
                    [
                        [
                            "http://mt0.googleapis.com/vt?lyrs=m@183000000\u0026src=api\u0026hl=en-US\u0026",
                            "http://mt1.googleapis.com/vt?lyrs=m@183000000\u0026src=api\u0026hl=en-US\u0026"],
                        ...
                        DATA
                        ...
                null,
                null,
                0,
                "http://khm.googleapis.com/mz?v=115\u0026",
                null,
                "https://earthbuilder.google.com",
                "https://earthbuilder.googleapis.com"
            ],
            loadScriptTime
        );
    };

    var loadScriptTime = (new Date).getTime();
    getScript(
        "http://maps.gstatic.com/intl/en_us/mapfiles/api-3/9/13b/main.js"
    );
}
)();

以上内容与我通过网络浏览器直接访问 URL http://maps.googleapis.com/maps/api/js?sensor=false的内容相同。

现在的问题是,虽然我得到了正确的数据,但我在控制台中得到的 google mas 对象如下:

console.log(google);
Object
    maps: Object
    Load: function (apiLoad)
    {
        delete google.maps.Load;
        ...
        data
        ...
    }
    __gjsload__: function(name, text)
    {
        modules[name] = text;
    }
    modules: Object
        __proto__: Object
        __proto__: Object

对于以下我得到:

console.log(google.maps.LatLng);
undefined
4

1 回答 1

3

Google Maps API 团队有特定的代码,不允许您在本地复制主脚本。特别是,该代码每隔这么多小时就会“过期”。您不能将 Google Maps API 脚本与您的其他脚本结合使用。

于 2012-08-27T20:37:38.023 回答