【问题标题】:How to Unproject and Reproject Vertices of a Polygon in openlayers with Google maps如何使用 Google 地图在 openlayers 中取消投影和重新投影多边形的顶点
【发布时间】:2012-03-29 10:23:24
【问题描述】:

我想重新投影多边形的顶点。我已经能够在边界上实现这一点,但在顶点方面有点麻烦。

           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);

【问题讨论】:

    标签: javascript google-maps openlayers polygon


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多