2012-03-29 9 views
0

Ich möchte die Scheitelpunkte meines Polygon reprojecten. Ich war in der Lage, dies für die Grenzen zu erreichen, aber ein bisschen Probleme mit den Ecken.Wie Unscheitelpunkte eines Polygon in Openlayers mit Google Maps Unproject und Reproprojects

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

Below-Code, der funktioniert:

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

Antwort

0

getVertices() Methode gibt ein Array von OpenLayers.Geometry.Point Objekte, so dass Sie nicht transform() Methode auf sie anrufen können. Was Sie stattdessen tun sollten, ist ein Array zu durchlaufen und transform() auf jedem Objekt wie folgt zu rufen:

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