Javascript 如何在Web Worker中计算SVG BBox?

Javascript 如何在Web Worker中计算SVG BBox?,javascript,svg,web-worker,Javascript,Svg,Web Worker,我正在开发一个地图应用程序,在其中我在客户端渲染标签,基本上我在解决这个问题。我有很多标签,在将它们呈现在屏幕上之前,我需要做一个步骤,计算标签将放置在哪里,它们在屏幕上占据多少空间,是否有重叠等。因为所有这些都很耗时,所以这是在web工作人员身上完成的。为了测试是否存在重叠,我需要计算SVG BBox。如何在web worker上执行此操作?web worker无权访问DOM。即使有,我也不想在这个计算过程中在屏幕上渲染任何东西 由于无法访问Web Worker中的DOM,因此无法从Worke

我正在开发一个地图应用程序,在其中我在客户端渲染标签,基本上我在解决这个问题。我有很多标签,在将它们呈现在屏幕上之前,我需要做一个步骤,计算标签将放置在哪里,它们在屏幕上占据多少空间,是否有重叠等。因为所有这些都很耗时,所以这是在web工作人员身上完成的。为了测试是否存在重叠,我需要计算SVG BBox。如何在web worker上执行此操作?web worker无权访问DOM。即使有,我也不想在这个计算过程中在屏幕上渲染任何东西

由于无法访问Web Worker中的DOM,因此无法从Worker中准确计算文本标签的边界框

一些可能的解决办法:

  • 在主线程上执行边界框计算,然后将带有结果的消息传递给工作线程。(您不必在屏幕上呈现任何内容:只需制作一个分离的SVG元素,而不附加到文档中。)
  • 通过预先计算单个字符边界框或通过em-width估计平均值来估计长度。工人完成后,对主螺纹进行检查和校正

当我被标签的最终位置卡住和/或与其他标签冲突时,我会让观众能够拖放有问题的标签。