Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.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
Openlayers 计算捕捉的中点_Openlayers - Fatal编程技术网

Openlayers 计算捕捉的中点

Openlayers 计算捕捉的中点,openlayers,Openlayers,如何使用OpenLayers 2.13计算层中所有线的中点,并将其添加到层中进行中点捕捉 我尝试了以下代码,但不起作用: var features=vectors.features; var len=vectors.features.length; for (var i=0 ; i < len ; i++){ for(var j=0 ; j<features[i].geometry.getVertices().length ; j++){ po

如何使用OpenLayers 2.13计算层中所有线的中点,并将其添加到层中进行中点捕捉

我尝试了以下代码,但不起作用:

var features=vectors.features;
var len=vectors.features.length;
for (var i=0 ; i < len ; i++){
    for(var j=0 ; j<features[i].geometry.getVertices().length ; j++){
        points.push(features[i].geometry.getVertices()[j]);
    }
}
i=0;
while(i<points.length){
    xA=points[i].x;
    yA=points[i].y;
    xB=points[i+1].x;
    yB=points[i+1].y;
    xC=(xA+xB)/2;
    yC=(yA+yB)/2;
    midPoints.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(xC,yC)));
    i++;
}
有人能帮我吗?

我找到了解决方案:

var middlePoints=[];
function createPoint(p1,p2){
    var xC,yC;
    xC=(p1.x+p2.x)/2;
    yC=(p1.y+p2.y)/2;
    var point= new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(xC,yC));
    point.style={strokeColor:"red",strokeOpacity:0.3,fillColor:"red",fillOpacity:0.1,pointRadius:1};
    return point;
}
var state=1;
function getMiddlePoint(){
    if(state==1){
        var points=[];
        var features=vectors.features;
        var len=vectors.features.length;
        var point;
        for (var j=0 ; j < len ; j++){
            for(var i=0 ; i < features[j].geometry.getVertices().length-1; i+=2) {
                var prevVertex = features[j].geometry.getVertices()[i];
                var nextVertex = features[j].geometry.getVertices()[i + 1];
                if(prevVertex.CLASS_NAME == "OpenLayers.Geometry.Point" &&
                    nextVertex.CLASS_NAME == "OpenLayers.Geometry.Point") {
                    point = createPoint( prevVertex, nextVertex);
                    middlePoints.push(point);
            }
            }
        }
        vectors.addFeatures(middlePoints);
        vectors.refresh({force:true});
        vertexSnap.activate();
        state=0;
    }else{
        vectors.removeFeatures(middlePoints);
        middlePoints=[];
        state=1;
    }
}