Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Openlayers 3-将一个点插入直线上某个位置之间的线串中_Javascript_Openlayers 3 - Fatal编程技术网

Javascript Openlayers 3-将一个点插入直线上某个位置之间的线串中

Javascript Openlayers 3-将一个点插入直线上某个位置之间的线串中,javascript,openlayers-3,Javascript,Openlayers 3,我正在寻找一种智能方法,使用Openlayers-3将点插入到线字符串中。今天,我保存了整个线条字符串上的最近点,使用forEachSegment循环查找最近点的线段,并在该线段的起点和终点之间插入该点。最后,我将新的部分返回到完整线条的几何体中 它起作用了。但有更聪明、更简短的解决方案吗 谢谢,干杯! 安德烈亚斯 看起来foreachsegment无法处理具有多个线段的线。要将多个点插入到线串中,我现在使用此解决方案: p=new Array(); cmpos=modifyfeatures.i

我正在寻找一种智能方法,使用Openlayers-3将点插入到线字符串中。今天,我保存了整个线条字符串上的最近点,使用forEachSegment循环查找最近点的线段,并在该线段的起点和终点之间插入该点。最后,我将新的部分返回到完整线条的几何体中

它起作用了。但有更聪明、更简短的解决方案吗

谢谢,干杯! 安德烈亚斯


看起来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);