ol.style.RegularShape的Openlayers文档说:
radius number | undefined Radius of a regular polygon.
radius1 number | undefined Inner radius of a star.
radius2 number | undefined Outer radius of a star.
我的解释是,对于普通的多边形(三角形,正方形,五边形等),我会使用radius
,但不应使用radius1
或{{1} }。当然这很好。
同样,我将此解释为对于明星,我不应该使用radius2
并且我应该同时使用radius
和radius1
radius2
应小于radius1
。然而,这产生了一个相当古怪的符号,在其中我可以看到一个恒星的部分,但它似乎被一个方形面具裁剪。
要获得我想要的结果(在检查Openlayers示例代码之后),我最终使用radius2
和radius
,radius2
是较小的数字!
下面是两个版本的javascript,唯一的区别是使用了各种radius2
参数。
似乎我对文档的理解不正确(或文档/实现已被破坏)。
我更愿意知道为什么我的新代码有效。那么有人可以解释各种radius(X)
参数应该如何工作,并帮助我更好地理解这三个参数的描述?
这段代码产生了一个看起来很奇怪的符号,有点像一个方形蒙版的星形切割:
radius(X)
此代码生成正确的星号:
new ol.style.Style({
image: new ol.style.RegularShape({
stroke: new ol.style.Stroke({
color: '#333333FF',
width: 6.0
}),
radius1: 24,
radius2: 60,
points: 5
})
})
答案 0 :(得分:1)
你是对的。文档不正确。我创建了https://github.com/openlayers/openlayers/pull/6604并修复了。
您必须使用radius1
或radius
作为星的外半径,radius2
作为内半径。您的第一个示例不起作用的原因是因为符号大小是从radius
或radius1
确定的。如果这是较小的半径,则符号大小将不适应整个星。