Как распроектировать и перепроектировать вершины многоугольника в openlayers с Google maps - PullRequest
0 голосов
/ 29 марта 2012

Я хочу перепроектировать вершины моего многоугольника.Я смог добиться этого за границы, но у меня возникли небольшие проблемы с вершинами.

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

1 Ответ

0 голосов
/ 30 марта 2012
Метод

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
...