2

すべての JavaScript ファイルをロードし、それらを結合して圧縮するスクリプトを WordPress で作成しました。私が使用しているJavaScriptファイルと、次のJavaScriptファイルの中で:

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

私のスクリプトは正常に機能していますが、Google マップに読み込まれた JavaScript ファイルは、Google からすべての外部 JavaScript ファイルを読み込むために実行されていないように見えます。

Google マップ ファイルは、結合および圧縮後に生成された 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"
    );
}
)();

上記の内容は、Web ブラウザーで直接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チームには、メインスクリプトをローカルにコピーできないようにする特定のコードがあります。特に、そのコードは非常に多くの時間ごとに「期限切れ」になります。GoogleMapsAPIスクリプトを他のスクリプトと組み合わせることはできません。

于 2012-08-27T20:37:38.023 に答える