[OpenLayers-Users] How to change geometry's projection back
andforth
Lehtonen, Mika
mika at digikartta.net
Mon Dec 8 15:14:30 EST 2008
Thanks,
downloaded, tested, happy :-)
- mika -
Christopher Schmidt kirjoitti:
> 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
>>
>
>
More information about the Users
mailing list