繁体   English   中英

如何在带有Google地图的openlayers中取消投影和重新投影多边形的顶点

[英]How to Unproject and Reproject Vertices of a Polygon in openlayers with Google maps

我想重新投影多边形的顶点。 我已经能够在边界范围内实现这一点,但是在顶点上却遇到了一些麻烦。

           function onFeatureModified(event) {
           var bounds = event.feature.geometry.getBounds();
           var answer = "bottom: " + bounds.bottom + "\n";
           answer += "left: " + bounds.left + "\n";
           answer += "right: " + bounds.right + "\n";
           answer += "top: " + bounds.top + "\n";
           alert(answer);

           var mapProjv =  map.getProjectionObject();
           var epsg4326v = new OpenLayers.Projection("EPSG:4326");
       var verticesNative = event.features[0].geometry.getVertices();
       var verticesLatLon = verticesNative.transform( mapProjv , epsg4326v  );
       var vertices = verticesNative;
           alert(verticesNative);
           }

下面的代码有效:

           var vertices = event.features[0].geometry.getVertices();
           alert(vertices);

getVertices()方法返回一个OpenLayers.Geometry.Point对象数组,因此您不能在其上调用transform()方法。 相反,您应该做的是遍历数组,并像这样对每个对象调用transform()

var vertices = event.features[0].geometry.getVertices();
var transformedVertices = [];
for(var i=0; i < vertices.length; i++){
    transformedVertices.push(vertices[i].transform(
        new OpenLayers.Projection("EPSG:900913"),
        new OpenLayers.Projection("EPSG:4326")
    ));
}

//create new feature with transformed vertices

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM