2012-03-29 84 views
0

我想重投影多边形的顶点。我已经能够达到这个界限,但是对顶点有点麻烦。如何使用Google地图在openlayers中取消投影和重新投影多边形的顶点

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

回答

0

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