3

私のページには、グーグルマップをロードするための小さなボタンがあります。私は自分のページを本当に速くロードしたいので、この機能は実際には必要ないので、ページロードにグーグルマップAPIスクリプトを埋め込みたくありません。ボタンが実際にクリックされたときにロードしたいだけです。

jquery $ .getScript()メソッドを使用しようとしましたが、上記のコードを使用すると、空白のページが表示されます。ページの読み込みが開始され、JavaScriptファイルが実行されるとすぐに、ページは空白(白)になります。

$.getScript("http://maps.google.com/maps/api/js?sensor=false", function(){
    $('#googleMap').live('click', function(e) {

        e.preventDefault();
        loadMap("mapBottomContainer", false);

    });
});

私はここで何が間違っているのですか?

編集/更新:

私がこれを行っても違いはないようです:

$('#googleMap').live('click', function(e) {

    $.getScript("http://maps.google.com/maps/api/js?sensor=false", function(){

        e.preventDefault();
        loadMap("mapBottomContainer", false);

    });

});

ページの読み込み時にページが空白になることはありませんが、マップボタンをクリックするとすぐにページが白くなります。

アップデート2:

loadMap関数:

function loadMap(cont, scroll) {

    var latlng = new google.maps.LatLng(47.244236,11.249194);
    var options = {
        zoom: 14,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        scrollwheel: scroll,
        streetViewControl: false,
        navigationControlOptions: {  
            style: google.maps.NavigationControlStyle.SMALL 
        }
    }

    var map = new google.maps.Map(document.getElementById(cont), options);

    var mapdesc = '<div id="gmContent">'+
    '<h3 id="gmTitle" class="widget-title">Something</h3>'+
    '<div id="gmBody">'+
    '</div>'+
    '</div>';

    var infowindow = new google.maps.InfoWindow({
        content: mapdesc
    });

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: 'My Title'
    });

    google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
    });

    infowindow.open(map,marker);

}
4

2 に答える 2

8

ここでの問題は、ロードしているgoogle map api jsリンクがdocument.writeを使用して、ページにスクリプトタグを追加することです。これにより、ページコンテンツが上書きされるため、実行しようとしていることが不可能になります。

于 2011-05-06T08:57:44.083 に答える
0

jsスクリプトが正常に読み込まれます。

alert(window.google);   // before load undefined
$.getScript("http://maps.google.com/maps/api/js?sensor=false", function(){
    alert(window.google); // after load [object Object]
});

ただし、たとえば、google.maps呼び出しているプロパティがないようです。loadMapgoogle.maps.LatLng

于 2011-05-06T08:42:41.947 に答える