[OpenLayers-Users] How to change geometry's projection back andforth

Arnd Wippermann arnd.wippermann at web.de
Mon Dec 8 14:21:41 EST 2008


Hi,

Perhaps this is the issue:
http://www.mail-archive.com/users@openlayers.org/msg04875.html
 
Arnd Wippermann

-----Ursprüngliche Nachricht-----
Von: users-bounces at openlayers.org [mailto:users-bounces at openlayers.org] Im
Auftrag von Lehtonen, Mika
Gesendet: Montag, 8. Dezember 2008 15:57
An: OpenLayers
Betreff: [OpenLayers-Users] How to change geometry's projection back
andforth

Hi,
I am trying to limit the size of a drawn geometry (regular polygon). So
after the feature is created, I jump to my limiting function which suppose
to redraw the geometry taking into account the set limit. My map is in
EPSG:900913 (spherical mercator) because of the Google base maps, but all my
geometries are natively in EPSG:2393. So in order to accomplish some
comparison I have to reproject the drawn polygon into 2393, do the
comparison and then reproject it back to 900913. The drawn geometry
reprojects nicely to 2393 (with proj4js) but I can't get the new geometry
reprojected back. What's wrong with this? Here is the
essential:
                    geometria = event.feature;
                    kkj = geometria.geometry;
                    kkj.transform(new
OpenLayers.Projection("EPSG:900913"), new
OpenLayers.Projection("EPSG:2393"));
                    radius =
OpenLayers.Number.limitSigDigs((kkj.getBounds().getHeight()/1000),2);
                    if (radius > 50) {
                    var scale = 50 / radius;
                    var x = kkj.getBounds().getCenterLonLat().lon;
                    var y = kkj.getBounds().getCenterLonLat().lat;
                    var origin = new OpenLayers.Geometry.Point(x,y);
                        kkj.resize(scale,origin,1); alert(kkj);
                    kkj.transform(new
OpenLayers.Projection("EPSG:2393"), new
OpenLayers.Projection("EPSG:900913"));
alert(kkj);   /* this is exactly the same than it was before */
                    geometria.geometry = kkj;
                    vlayer.drawFeature(geometria);
                    // vlayer.redraw(true);
                    OpenLayers.Util.getElement('metapalkki').innerHTML = "
Hakuympyrän säde voi olla max. 50 km!";
                    } else {
                    OpenLayers.Util.getElement('metapalkki').innerHTML = "
Hakuympyrän säde on " + radius + "km";
                    }

If I do this without reprojection, the geometry limitation works, although
the scale is a little bit wrong and my other comparisons don't work because
they should be using 2393.

- mika -
_______________________________________________
Users mailing list
Users at openlayers.org
http://openlayers.org/mailman/listinfo/users




More information about the Users mailing list