我有一个功能,允许用户在OpenLayers地图上绘制正方形或矩形。我想更改光标的样式。默认情况下,光标为蓝色圆圈。我想将其更改为正方形,以便符号系统与用户可能创建的形状匹配。
解决方案涉及添加样式属性。我需要有关如何为非图像游标实现样式属性的细节,该游标类似于默认的蓝色圆圈,而是一个正方形。谢谢!
<section>
Inside of main app component
</section>
<pm-first-child></pm-first-child>
<pm-second-child>
</pm-second-child>
<pm-first-content></pm-first-content>
<pm-second-content></pm-second-content>
<pm-content-projector> <!--- view child of app component -->
<section>
Inside app projector elememt yayyy
</section>
<pm-projector-child> --> content child of ContentProjectorComponent
</pm-projector-child>
</pm-content-projector>
答案 0 :(得分:0)
这是一个可行的解决方案,它将默认的蓝色圆圈光标更改为正方形,并允许用户在地图上创建正方形或矩形。
$scope.drawBoundingBox = () => {
const bbVector = new ol.source.Vector({ wrapX: false });
const vector = new ol.layer.Vector({
source: bbVector
});
bbVector.on("addfeature", evt => {
$scope.coords = evt.feature.getGeometry().getCoordinates();
});
const geometryFunction = ol.interaction.Draw.createRegularPolygon(4);
draw = new ol.interaction.Draw({
source: bbVector,
type: "Circle",
geometryFunction: geometryFunction,
style: new ol.style.Style({
stroke: new ol.style.Stroke({
color: "#FFF",
width: 3
}),
fill: new ol.style.Fill({
color: [255, 255, 255, 0]
}),
geometryFunction,
image: new ol.style.RegularShape({
fill: new ol.style.Fill({
color: '#FFF'
}),
stroke: new ol.style.Stroke({
color: "blue",
width: 3
}),
points: 4,
radius: 10,
angle: Math.PI / 4
}),
}),
});
vector.set("name", "boundingBox");
map.addLayer(vector);
map.addInteraction(draw);
};