mcn*_*a86 0 openlayers reactjs
我有这个jsfiddle,它能够在完美运行的地图上绘制多边形。我想不通的是如何设置 .Draw 交互的样式。
目前,我有一条虚线用于用户已经绘制的多边形部分,另一条虚线将第一个绘制的点连接到最后一个绘制的点。
当我写样式时,它似乎会影响这两行。
我需要的是一条黑色虚线连接用户已经绘制的点,并且没有线(完全透明)用于将最后绘制的点连接回第一个绘制点的线。
这是我当前的样式对象:
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(0, 0, 0, 0.5)',
lineDash: [10, 10],
width: 3
}),
image: new ol.style.Circle({
fill: new ol.style.Fill({ color: [0, 0, 0, 0.2] }),
stroke: new ol.style.Stroke({
color: [0, 0, 0, 0.5],
width: 1
}),
radius: 4
})
})
Run Code Online (Sandbox Code Playgroud)
我曾尝试添加颜色和样式数组,但似乎无法正常工作。
有没有人遇到过这个问题并找到了解决方法?
好的,我已经破解了这个,我不得不深入研究图书馆的来源才能弄清楚,所以我将在这里发布答案,希望它在未来可以帮助其他人,所以这里是:
我在源代码中看到的是,当您使用ol.interaction.Draw绘制多边形时,会使用多个几何图形。有底层Polygon,这是具有笔划和填充并显示连接线(基于其笔划样式)的位。有一个LineString只显示用户绘制的点的线(没有填充和没有连接线)。还有一个点,它附着在鼠标指针上。我在 jsfiddle 中留下了一个 `console.log()' 来展示这一切。
我已经创建了这个工作jsfiddle。我所做的是,而不是直接在ol.interaction.Draw我使用的内部设置样式styleFunction(见下面的代码)。我按类型检测每个几何图形并为其设置特定样式。
const styleFunction = feature => {
var geometry = feature.getGeometry();
console.log('geometry', geometry.getType());
if (geometry.getType() === 'LineString') {
var styles = [
new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(255, 102, 0, 1)',
width: 3
})
})
];
return styles;
}
if (geometry.getType() === 'Polygon') {
var styles = [
new ol.style.Style({
stroke: new ol.style.Stroke({
color: 'rgba(255, 102, 0, 0)',
width: 3
}),
fill: new ol.style.Fill({
color: 'rgba(255, 102, 0, 0.3)'
})
})
];
return styles;
}
return false;
};
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
645 次 |
| 最近记录: |