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

Arnd Wippermann arnd.wippermann at web.de
Mon Dec 8 14:55:52 EST 2008


Hi Mika,

It was dicussed to remove this part from proj4js, but I also use an old
version of proj4js and don't no, what is (if there is) in the new version.

Arnd


-----Ursprüngliche Nachricht-----
Von: mika at digikartta.net [mailto:mika at digikartta.net] 
Gesendet: Montag, 8. Dezember 2008 20:51
An: Arnd Wippermann
Cc: users at openlayers.org
Betreff: Re: AW: [OpenLayers-Users] How to change geometry's projection back
andforth

Thanks Arnd,

you nailed it. Removing
        if (point.transformed) {
        this.log("point already transformed");
        return;
        }
made it possible to reproject the geometry back. Just wondering whether
there had been any changes in newer proj4js..  Mine is dated 2007. Have to
check that.

So this was not an Openlayers issue after all.

- mika -

Arnd Wippermann kirjoitti:
> 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