[OpenLayers-Users] How to change geometry's projection back
andforth
Christopher Schmidt
crschmidt at metacarta.com
Mon Dec 8 15:00:36 EST 2008
On Mon, Dec 08, 2008 at 09:50:54PM +0200, Lehtonen, Mika wrote:
> Thanks Arnd,
>
> you nailed it. Removing
> if (point.transformed) {
> this.log("point already transformed");
> return;
> }
This code is not in the proj4js trunk code.
http://svn.osgeo.org/metacrs/proj4js/trunk/
> 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
> >
> >
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users
--
Christopher Schmidt
MetaCarta
More information about the Users
mailing list