如何使用OpenLayers 4在多边形上绘制内部缓冲区或内部笔划

如何使用OpenLayers 4在多边形上绘制内部缓冲区或内部笔划,openlayers,openlayers-3,cartography,Openlayers,Openlayers 3,Cartography,我想重新创建OSM在编辑多边形时使用的相同样式。我称之为“内部冲程”或“内部缓冲” OSM示例: 我知道我可以使用ol.style.style数组,其中一个将几何体发送回内部缓冲区。然而,创建新的几何图形仅仅是为了用缓冲区表示原始几何图形,这似乎是资源密集型的。这是推荐的方式吗?我可以以某种高级方式使用ol.style.Stroke 另一个特点是,“内部笔划”的屏幕像素宽度是恒定的,与缩放级别无关。例如,下面是缩小和放大的多边形: 这与我在项目中使用的类似。我从中得到了这段代码,如果你想要

我想重新创建OSM在编辑多边形时使用的相同样式。我称之为“内部冲程”或“内部缓冲”

OSM示例:

我知道我可以使用
ol.style.style
数组,其中一个将
几何体
发送回内部缓冲区。然而,创建新的几何图形仅仅是为了用缓冲区表示原始几何图形,这似乎是资源密集型的。这是推荐的方式吗?我可以以某种高级方式使用
ol.style.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
});

只要使用一个宽度的笔划,笔划像素就直接位于实际坐标的中心,而不是像我要求的那样位于内部。我正在寻找一种方式来表达:“在形状内部绘制笔划,而不是在边界上”如果你想在形状内部绘制笔划,那么我猜你必须使用2个多边形。我看了API。没有找到任何可以解决单个多边形问题的方法。