2013-08-28 86 views
0

無盡的搜索後,我撞上了一堵牆。我有一個使用許多標籤的OpenLayers地圖。我的兩個選擇是使用彈出式類或標記的矢量功能。我嘗試過使用Popup類,但是當更新圖層時(通過Chrome開發人員CPU分析驗證),佔用大約75%的CPU負載的DOM佔用極其沉重。從彈出窗口切換到帶有標籤的矢量功能後,所有處理器權重都脫離DOM,現在一切運行平穩。唯一的問題是,我無法在標籤後面找到一個純色的盒子。OpenLayers - 圍繞標記的矢量特徵繪製一個框

標籤在文本和tspan svg元素內呈現。從我讀過的內容來看,沒有辦法使用文本或tspan的屬性來指定背景顏色屬性。這是一個無盡的搜索。我可以使用getBBox在文本元素周圍添加一個矩形,但OpenLayers管理tspan元素,並且與OpenLayers一起操作似乎是不可能的。

接下來,我想我可以添加一個矩形的標記矢量功能。這裏雖然沒有辦法在標籤的確切尺寸和後面繪製矩形。也許這是不可能的。希望你們中的一個知道解決方案。謝謝。

回答

0

我想通了。一旦我花了一些時間在GitHub上看OpenLayers,我就明白了看Popup類。首先,必須將autosize設置爲false,並且除了contentsize之外,還必須設置size屬性。由於內容是構造函數的一部分,因此必須在初始化後明確設置popup.size。這將阻止執行setSize()方法,這會將負載減少約50%。然後,我去修改了這個類並刪除了大量的事件處理程序。這兩種方法減少了大約50-75%的CPU負載。