2013-06-03 128 views
2

我想我的口活地震混搭在Google地圖何時加載?

http://www.oe-files.de/gmaps/eqmashup.html

谷歌地圖API第3版。目前我正努力尋找地圖和特別是自定義控件呈現的正確時刻,所以我可以加載第一個數據饋送。自定義控件需要顯示,因爲代表多個提要中的一個的提要被突出顯示。

我已閱讀關於google.maps.event.addListenerOnce和事件「空閒」和「tilesLoaded」,但這些似乎都不起作用。

混搭,只要我來了,可以在這裏找到:

http://www.oe-files.de/gmaps/eqmashup-ng.html

點擊進一個選擇器(右下)將裝載的飼料,一旦頁面加載。但我似乎無法找到正確的時刻加載頁面後調用「switchFeed」。

大量的其他東西仍然缺失,但目前這是最大的問題。任何幫助表示讚賞。


更新:

目前,該序列應該初始化地圖並加載第一個數據:

google.maps.event.addDomListener(window, 'load', initMashup); 
google.maps.event.addListenerOnce(map, 'tilesLoaded', function() { 
     switchFeed('usgs25'); 
    }); 

這不起作用,因爲「地圖」未初始化當addListerOnce被執行時。我曾嘗試另一種方式是(或多或少)

google.maps.event.addDomListener(window, 'load', initMashup); 
switchFeed('usgs25'); 

這也不管用,因爲switchFeed切換被添加自定義控制(通過map.controls)按鈕的樣式,該按鈕尚未呈現。

所以我的問題是:什麼時候地圖完全加載,以及如何將動作附加到這個事件?

回答

0

我不知道如果我得到你的問題,對我來說聽起來很瑣碎,你可以同時加載你的谷歌地圖和控制,一旦你的Feed加載,你可以更新你的地圖,現在當用戶拖動選擇,根據天氣,你會提出一個新的請求或將使用預加載的JSON文件,你可以選擇清除舊的標記和加載新的?如果這不是你要求的,也許編輯你的問題將幫助我更好地回答你

0

沒關係,我找到了一個操作順序,以便頁面加載。它不如V2 API那樣流暢,但它起作用。

儘管如此,還有一些其他的(純粹的JavaScript)糾結。我認爲從V2過渡到V3並不像Google想讓我們相信的那樣容易...

0

沒有理由在加載Feed之前等待很長時間。只需在initMashup()初始化地圖,只要您致電setCenter()並初始化您的控件,地圖就可以進行進一步操作。您可以在此之後立即致電switchFeed(),但在之內之內initMashup()功能。你的第二個代碼示例不起作用,因爲你在初始化代碼執行之前調用了switchFeed()

請記住,這是異步代碼;注意執行的順序。一些放置良好的console.log()電話將澄清很多。

+0

異步性是*問題。就我所見,map.controls []。push在控件實際繪製之前返回。這樣,即使我使用google.maps.addListenerOnce等待調用loadInitialFeed,對switchFeed的調用也會生成一個錯誤,因爲document.getElementById(currentfeed).setAttribute會嘗試更改當前不可用的元素樣式。我已經轉移了一系列的行動,現在已經找到了一個有效的方法。這遠不是很好,但整個代碼從來沒有打算贏得選美比賽...... – user2449450