[OSM-dev] OpenLayers problem with latitude and longitude placement

Ulf Lamping ulf.lamping at googlemail.com
Sun Dec 7 14:14:35 GMT 2008


Maarten Deen schrieb:
> Are there any OpenLayers experts here?
> 
> I'm trying to draw lines on a map using plain latitude and longitude 
> coordinates. So that I can use (0,0) for the equator and (0, 51) for some point 
> on the Greenwich meridian in England.
> 
> But I can't find out how to do it.
> I have an example at <http://www.maasluip.nl/ebt/test.html>
> I make the lines in a loop at line 52. I almost thought "nice, it's degrees * 
> 111320", but that doesn't add up at higher latitudes.
> 
> I understood the maxExtent in the projection to be the way to control this, but 
> apparently it isn't (as I have the map created with maxExtent: new 
> OpenLayers.Bounds(-180,-90,180,90))
> 
> Any ideas?
> 

No expert here, but I'm currently playing around with OSM myself.

I guess it's better to use the LonLat.transform function.


Maybe something like (quick hack):

             for (var p=0; p <= 50; p++)
             {
                var pointList = [];
			
			   var lonLat0 = new OpenLayers.LonLat(0, 
p).transform(map.displayProjection,  map.projection);
			   var lonLat1 = new OpenLayers.LonLat(1, 
p).transform(map.displayProjection,  map.projection);

                newPoint = new OpenLayers.Geometry.Point(lonLat0.lon, 
lonLat0.lat);
                pointList.push(newPoint);
                newPoint = new OpenLayers.Geometry.Point(lonLat1.lon, 
lonLat1.lat);
                pointList.push(newPoint);

                var lineFeature = new OpenLayers.Feature.Vector(
                    new OpenLayers.Geometry.LineString(pointList));

                vectorLayer.addFeatures([lineFeature]);
         	}


Please let me know, if this is the correct solution.

I may need it later myself ...

Regards, ULFL




More information about the dev mailing list