我使用谷歌地圖v3與標記clusterer v3顯示1000年的標記。我也有一個側面板,列出了每個標記的標題。當用戶將鼠標懸停在面板上的標題上時,我會爲相應的標記設置動畫,並停止在鼠標懸停時進行動畫製作。標記消失後動畫
當標記不在集羣中時,這可以正常工作。標記位於羣集中時出現問題。
如果標記位於簇中,首先將標記的地圖對象從null(之前由markerClusterer設置,以便將標記放入簇中時將其隱藏)更改爲我的地圖對象,然後爲標記設置動畫。再次,這工作。這是鼠標,我遇到了我的問題。
在mouseout上我將標記動畫設置爲null,然後將標記的地圖對象設置爲null。這是你所期望的(隱藏標記),但是我不能讓標記在任何後續的懸停事件中再次顯示。標記仍然存在於適當的簇對象內,我可以調用setMap()來設置標記的地圖屬性,但標記仍然不會顯示在地圖上。下面是相關代碼:
if (event.type === 'mouseover' || event.type === 'mouseenter') {
if (!marker.getMap()) { //marker is in a cluster
inCluster = true;
marker.setMap(map)
} else {
inCluster = false
};
marker.setAnimation(google.maps.Animation.BOUNCE);
} else {
marker.setAnimation(null);
if (inCluster == true) { //hide the clusterized marker
marker.setMap(null)
}
};
如果我註釋掉兩個setAnimation()調用,則代碼將工作,並預期可顯示標記,然後隱藏(只是沒有動畫)。此外,當我使用控制檯玩耍時,我可以將標記顯示在羣集外,然後我可以對它進行動畫處理,然後我可以對其進行動畫處理,然後我可以重新將它隱藏起來,一遍又一遍。但是,如果我在去除動畫標記之前調用setMap(null),那麼我就會碰到我的bug。
因此,只有在調用setMap(null)之前動畫沒有停止時,問題才存在。我試着設置一個定時器,讓動畫在調用setMap之前停止幾百毫秒,這有時會起作用,但有時會觸發其他更糟的行爲。
任何幫助解決此問題將不勝感激(並熱切接受)!
謝謝丹, 這個錯誤已經被報告給谷歌地圖api團隊(問題#167)。你可以在這裏找到http://code.google.com/p/google-maps-utility-library-v3/issues/detail?id=167&colspec=ID%20Type%20Status%20Priority%20Fixed%20Owner%20Summary%20Stars – 2012-04-22 15:47:56
這仍然發生在api v3,(3.16)!!怎麼了? – Nick 2014-07-22 16:35:52