Javascript Openlayers 3-将一个点插入直线上某个位置之间的线串中
我正在寻找一种智能方法,使用Openlayers-3将点插入到线字符串中。今天,我保存了整个线条字符串上的最近点,使用forEachSegment循环查找最近点的线段,并在该线段的起点和终点之间插入该点。最后,我将新的部分返回到完整线条的几何体中 它起作用了。但有更聪明、更简短的解决方案吗 谢谢,干杯! 安德烈亚斯Javascript Openlayers 3-将一个点插入直线上某个位置之间的线串中,javascript,openlayers-3,Javascript,Openlayers 3,我正在寻找一种智能方法,使用Openlayers-3将点插入到线字符串中。今天,我保存了整个线条字符串上的最近点,使用forEachSegment循环查找最近点的线段,并在该线段的起点和终点之间插入该点。最后,我将新的部分返回到完整线条的几何体中 它起作用了。但有更聪明、更简短的解决方案吗 谢谢,干杯! 安德烈亚斯 看起来foreachsegment无法处理具有多个线段的线。要将多个点插入到线串中,我现在使用此解决方案: p=new Array(); cmpos=modifyfeatures.i
看起来foreachsegment无法处理具有多个线段的线。要将多个点插入到线串中,我现在使用此解决方案:
p=new Array();
cmpos=modifyfeatures.item(g).getGeometry().getClosestPoint(eventcoord);
linegeo=modifyfeatures.item(g).getGeometry().getCoordinates();
for (a=0;a<linegeo.length-1;a++)
{
start=linegeo[a];
end=linegeo[a+1];
var segment = new ol.Feature({geometry:new ol.geom.LineString([start, end], 'XY')});
p.push(start);
if (segment.getGeometry().getClosestPoint(cmpos).toString()==cmpos.toString()){p.push(cmpos); }
p.push(end);
}
modifyfeatures.item(g).getGeometry().setCoordinates(p);
p=newarray();
cmpos=modifyfeatures.item(g).getGeometry().GetClosesPoint(eventcoord);
linegeo=modifyfeatures.item(g).getGeometry().getCoordinates();
对于(a=0;前后第一行:cmpos=modifyfeatures.item(g).getGeometry().getClosestPoint(eventcoord);
p=new Array();
cmpos=modifyfeatures.item(g).getGeometry().getClosestPoint(eventcoord);
linegeo=modifyfeatures.item(g).getGeometry().getCoordinates();
for (a=0;a<linegeo.length-1;a++)
{
start=linegeo[a];
end=linegeo[a+1];
var segment = new ol.Feature({geometry:new ol.geom.LineString([start, end], 'XY')});
p.push(start);
if (segment.getGeometry().getClosestPoint(cmpos).toString()==cmpos.toString()){p.push(cmpos); }
p.push(end);
}
modifyfeatures.item(g).getGeometry().setCoordinates(p);