OpenLayers - 在标记的矢量要素周围绘制一个框

时间:2013-08-28 01:47:57

标签: javascript css svg openlayers

经过不断的搜索,我撞墙了。我有一个使用许多标签的OpenLayers地图。我的两个选项是使用弹出类或标记的矢量特征。我已经尝试过使用Popup类,但是在更新图层时,DOM占用了大约75%的CPU负载(使用Chrome Developer CPU Profiling验证)。在从弹出窗口切换到带有标签的矢量要素之后,所有处理器的重量都来自DOM,现在一切都运行顺畅。唯一的问题是,我无法在标签后面找到一个纯色的盒子。

标签在文本和tspan svg元素中呈现。根据我的阅读,没有办法使用text或tspan的属性来指定backcolor属性。这是一个无休止的搜索。我可以使用getBBox在文本元素周围添加一个rect,但是OpenLayers管理tspan元素并且操作它与OpenLayers一起似乎是不可能的。

接下来,我想我可以添加一个矩形标记的矢量要素。但是,没有办法在标签的正确尺寸和后面绘制矩形。也许这是不可能的。希望你们中的一个人知道解决方案。感谢。

1 个答案:

答案 0 :(得分:-1)

我明白了。有一次我花了一些时间在GitHub上查看OpenLayers,我发现它看着Popup类。首先,必须将autosize设置为false,并且除了contentsize之外还必须设置size属性。由于contentsize是构造函数的一部分,因此必须在初始化后显式设置popup.size。这将阻止setSize()方法执行,这将减少约50%的负载。然后,我去修改了类并删除了大量的事件处理程序。这两种方法将CPU负载降低了约50-75%。