Openlayers 3 如果文字标签适合多边形的几何图形,则仅将ol.style.Text打印到多边形

Openlayers 3 如果文字标签适合多边形的几何图形,则仅将ol.style.Text打印到多边形,openlayers-3,Openlayers 3,在OpenLayers中,我用于向联邦州多边形添加文本标签。各州有不同长度的名称,也有不同大小的多边形。看起来是这样的: 如果文本标记位于其多边形内(例如放大后),是否可以仅打印文本标记?例如,在上面的例子中,黑森、图林根、萨克森和拜仁将被印刷,但莱茵·普法尔茨、萨尔和巴登-沃尔滕堡将被省略,因为文本超出了其特征的几何结构 我知道我可以根据分辨率将font属性设置为特定大小的ol.style.Text,但这在这里没有帮助,因为文本有时仍会重叠边框…在库的帮助下,这目前是不可能的。但是,您可以在

在OpenLayers中,我用于向联邦州多边形添加文本标签。各州有不同长度的名称,也有不同大小的多边形。看起来是这样的:

如果文本标记位于其多边形内(例如放大后),是否可以仅打印文本标记?例如,在上面的例子中,黑森、图林根、萨克森和拜仁将被印刷,但莱茵·普法尔茨、萨尔和巴登-沃尔滕堡将被省略,因为文本超出了其特征的几何结构


我知道我可以根据
分辨率将
font
属性设置为特定大小的
ol.style.Text
,但这在这里没有帮助,因为文本有时仍会重叠边框…

在库的帮助下,这目前是不可能的。但是,您可以在向量层的
stlyeFunction
中使用,以获得标签的宽度,并将其与特定分辨率下多边形的范围宽度进行比较,然后根据该宽度决定是否渲染。您也可以比使用范围宽度更聪明,但对于许多情况,它可能是一个足够好的近似值。

Thx!但是如何在打印文本的水平对齐处获得范围的宽度呢?首先,我需要知道文本打印的位置(不总是中间)。怎么用?然后是多边形在这条水平线上的延伸?再次说明如何操作?多边形的标签点是使用
ol.geom.polygon#getInteriorPoint()
获得的点。如果查找
ol.geom.flat.interiorpoint.linearRings
的源代码,您将看到一个名为
maxSegmentLength
的变量。这是您可以用来贴标签的宽度。谢谢!我会试试这个(如果我有东西在运行,那么也在这里发布一个答案)