如何在OpenLayers 4中为多边形绘制内部缓冲区或内部描边

4
我希望能够重新创建OSM在编辑多边形时使用的相同样式。我将其称为“内部描边”或“内部缓冲区”。
OSM示例:

enter image description here

我知道我可以使用ol.style.Style的数组,其中一个将geometry发送回内部缓冲区。但是,仅为了表示具有缓冲区的原始几何体而创建新几何体似乎非常资源密集。这是推荐的方法吗?我能以某种高级方式使用ol.style.Stroke吗?


另一个特点是,“内部描边”的屏幕像素宽度是一个固定值,不受缩放级别的影响。例如,这是多边形缩小和放大后的效果:

Zoomed out Zoomed in

1个回答

0

这与我在项目中使用的类似。我从http://openlayers.org/en/latest/apidoc/ol.style.html获取了这段代码。如果你想要一个更粗的边框,可以增加 stroke 中的宽度。

var fill = new ol.style.Fill({
    color: 'rgba(255,255,255,0.4)'
});
var stroke = new ol.style.Stroke({
    color: '#3399CC',
    width: 1.25
});
var style = new ol.style.Style({
    fill: fill,
    stroke: stroke
});

仅使用带宽的笔画会将笔画像素直接放置在实际坐标的中心,而不是在内部,就像我所要求的那样。我正在寻找一种方法来表达:“在形状内部绘制笔画,而不是边框上”。 - craigsnyders
1
如果你想在形状内部绘制,那么我想你将不得不使用2个多边形。我查看了API,没有找到任何可以用单个多边形解决你的问题的东西。 - sudhir shakya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接