我正在添加使用SVG到Google Map的自定義控件。如何在我的元素已連接到DOM時得到通知
地圖已經加載和顯示我的控制,我需要從svg
元搶BBOX。由於我不控制何時將元素連接到DOM,因此我試圖找到一個允許我在回調中完成該工作的事件。
這裏大概是我有:
map = new google.maps.Map(...);
...
container = document.createElement("div")
svg = createAndDrawSVGElement(...); //this returns an svg element
container.appendChild(svg);
INSERT_THE_RIGHT_EVENT_HERE(function() {
var bbox = svg.getBBox();
... //bbox will be empty if svg isn't attached
}
map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(container);
我現在的,醜陋的解決方法是一個setTimeout
。我想要更可預測的事情。
你」我必須展示你是如何構建和附加你的控制,我。即'createAndDrawSVGElement()'和'addSVGtoContainer()'。通常的模式是,異步執行的函數具有一種機制,您可以在該機制中指定僅在異步操作完成後才執行的回調函數。但要確定這一點,我們需要看到更多的代碼。 – ccprog
@ccprog這些函數已經存在;我沒有向他們展示,因爲他們與問題無關。一個返回'svg'元素,另一個將其追加到'div'。我以不同的方式解決了我的問題,現在我將發佈。 [SVG的GetBBox時隱時現]的 –
複製(https://stackoverflow.com/questions/28282295/getbbox-of-svg-when-hidden) – geocodezip