2012-10-06 33 views
3

我試圖在加載時將Bootstrap彈出式廣告放置在Google地圖上。Google地圖上的BootStrap彈出式廣告

彈出窗口必須位於特定的緯度/經度位置並在加載地圖時加載,它必須能夠包含HTML。

我試過了很多東西。我試圖使用Infobox和谷歌自定義覆蓋在地圖上浮動div。有趣的是,這些div出現在正確的位置,然後我可以鏈接到它們並將它們用作popover的元素。但是他們不會在開始時加載。您必須在控制檯中啓動它們,例如

$("#example1").popover({ title: 'Look! A bird image!', content: "hello"}) 

$("#example1").popover('show') 

當我手動輸入這些信息時,它會在地圖上運行並彈出。如果我把它們放到我的javascript文件中並在所有內容加載後加載它:

$(document).ready(
    function(){ 
    $("#example1").popover({ title: 'Look! A bird image!', content: "hello"}) 
    $("#example1").popover('show') 
    console.log("hello") 
}); 

什麼也沒有發生。它根本不起作用。

我想要做的是在lat/lng上定位一個div,然後使用該div與其中的一個元素用於彈出窗口的位置。一切都在開始時發生。

有沒有更簡單的方法,我沒有看到?

+0

這有什麼好做的谷歌地圖API V3,而且正是因爲同樣的問題http://stackoverflow.com/questions/12761131/float-a-div-over-google -maps-at-specific-lat-lng – Marcelo

+0

對不起,你覺得這樣,但我認爲這是一個不同的問題。因爲我在地圖上有div,所以我只是想讓彈出窗口出現,我認爲Google Maps API正在停止。奇怪的是,它在控制檯中工作,但沒有加載 –

+0

您是否嘗試過設置選項'trigger:'manual''? – Gady

回答

1

我懷疑它不能在你的代碼中工作,因爲它在地圖準備就緒之前發射得太快(準備就緒()會在DOM準備好時觸發,而不一定要等待Google的javascript完全準備就緒)。

首先,檢查它是否確實與這個測試中的計時問題:

$(document).ready(function(){ 
    setTimeout(function() { 
    $("#example1").popover({ title: 'Look! A bird image!', content: "hello"}) 
    $("#example1").popover('show') 
    console.log("hello") 
    }, 2000); 
}); 

的酥料餅應該在頁面加載後出現2秒。

如果這樣的作品,那麼嘗試一下本作的實際解決方案:

$(document).ready(function(){ 
    google.maps.event.addListenerOnce(map, 'idle', function(){ 
    $("#example1").popover({ title: 'Look! A bird image!', content: "hello"}) 
    $("#example1").popover('show') 
    console.log("hello") 
    }); 
}); 
0

我有一個類似的問題。我通過用$(window).load代替$(document).ready來修復它。通過這種方式,我們知道Google地圖在調用之前可能不存在的元素上的彈出窗口之前已經加載。你的情況:

$(window).load(
    function(){ 
    $("#example1").popover({ title: 'Look! A bird image!', content: "hello"}) 
    $("#example1").popover('show') 
    console.log("hello") 
});