在openlayers中使用drawinteraction绘制线时,如何查找相交的要素?

在openlayers中使用drawinteraction绘制线时,如何查找相交的要素?,openlayers,Openlayers,我使用的是openlayers版本6.5.0 我用drawinteraction画了一条线 这条线可能与其他线相交 相交时,我能知道相交点和相交线的特征信息吗 绘制完成后,将触发“抽屉”事件 此时,交点应添加到我绘制的直线上 如何向绘制的直线添加交点 交点不是特征,它应该作为我绘制的线的几何图形的坐标添加。您可以使用turp.js查找交点 html,body,.map{ 保证金:0; 填充:0; 宽度:100%; 身高:100%; } #地图{ 位置:相对位置; } #形式{ z指数:1;

我使用的是openlayers版本6.5.0

我用drawinteraction画了一条线

这条线可能与其他线相交

相交时,我能知道相交点和相交线的特征信息吗

绘制完成后,将触发“抽屉”事件

此时,交点应添加到我绘制的直线上

如何向绘制的直线添加交点


交点不是特征,它应该作为我绘制的线的几何图形的坐标添加。

您可以使用turp.js查找交点


html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}
#地图{
位置:相对位置;
}
#形式{
z指数:1;
位置:绝对位置;
底部:0;
左:0;
}
几何类型
指向
线绳
多边形
圆圈
没有一个
var raster=新建ol.layer.Tile({
来源:new ol.source.OSM()
});
var source=new ol.source.Vector({wrapX:false});
var vector=新的ol.layer.vector({
资料来源:资料来源
});
var map=新ol.map({
图层:[光栅,矢量],
目标:“地图”,
视图:新ol.view({
中心:[-11000000,4600000],
缩放:4
})
});
var typeSelect=document.getElementById('type');
var format=new ol.format.GeoJSON();
var paund=函数(事件){
var geometry=event.feature.getGeometry();
var type=geometry.getType();
如果(类型==“线串”| |类型==“多边形”){
var geojson1=format.writeFeaturesObject([event.feature]);
var extent=geometry.getExtent();
source.forEachFeatureIntersectingExtent(范围,函数(特征){
var geometry=feature.getGeometry();
var type=geometry.getType();
如果(类型==“线串”| |类型==“多边形”){
var geojson2=format.writeFeaturesObject([feature]);
var intersects=turf.LineINTERSECTS(geojson1,geojson2);
var points=格式。读取特征(相交);
来源。添加特征(点);
}
});
}
};
var draw;//全局,以便稍后删除它
函数addInteraction(){
var值=typeSelect.value;
如果(值!=“无”){
draw=新ol.interaction.draw({
资料来源:资料来源,
类型:typeSelect.value
});
在(‘付款人’、付款人)上提款;
地图。添加交互作用(绘制);
}
}
/**
*处理更改事件。
*/
typeSelect.onchange=函数(){
映射。移除交互(绘制);
addInteraction();
};
addInteraction();

您可以使用turf.js查找交点


html,body,.map{
保证金:0;
填充:0;
宽度:100%;
身高:100%;
}
#地图{
位置:相对位置;
}
#形式{
z指数:1;
位置:绝对位置;
底部:0;
左:0;
}
几何类型
指向
线绳
多边形
圆圈
没有一个
var raster=新建ol.layer.Tile({
来源:new ol.source.OSM()
});
var source=new ol.source.Vector({wrapX:false});
var vector=新的ol.layer.vector({
资料来源:资料来源
});
var map=新ol.map({
图层:[光栅,矢量],
目标:“地图”,
视图:新ol.view({
中心:[-11000000,4600000],
缩放:4
})
});
var typeSelect=document.getElementById('type');
var format=new ol.format.GeoJSON();
var paund=函数(事件){
var geometry=event.feature.getGeometry();
var type=geometry.getType();
如果(类型==“线串”| |类型==“多边形”){
var geojson1=format.writeFeaturesObject([event.feature]);
var extent=geometry.getExtent();
source.forEachFeatureIntersectingExtent(范围,函数(特征){
var geometry=feature.getGeometry();
var type=geometry.getType();
如果(类型==“线串”| |类型==“多边形”){
var geojson2=format.writeFeaturesObject([feature]);
var intersects=turf.LineINTERSECTS(geojson1,geojson2);
var points=格式。读取特征(相交);
来源。添加特征(点);
}
});
}
};
var draw;//全局,以便稍后删除它
函数addInteraction(){
var值=typeSelect.value;
如果(值!=“无”){
draw=新ol.interaction.draw({
资料来源:资料来源,
类型:typeSelect.value
});
在(‘付款人’、付款人)上提款;
地图。添加交互作用(绘制);
}
}
/**
*处理更改事件。
*/
typeSelect.onchange=函数(){
映射。移除交互(绘制);
addInteraction();
};
addInteraction();

查看ol ext ol/interaction/splitter,它在编辑矢量线字符串时充当分割要素代理。

请参见示例:

查看ol ext ol/interaction/splitter,它在编辑矢量线字符串时充当分割要素代理。

参见示例:

谢谢。我解决了我三天来一直担心的问题。谢谢。我解决了我担心了三天的问题。