Fergal
Fergal

Reputation: 2474

OpenLayers LonLat transform

I want to use decimal Lon and Lat like Google Maps uses. But it seems I need to transform the LonLat object in OpenLayers, e.g.

    var map, layer;
    function init(){
        map = new OpenLayers.Map('map');
        layer = new OpenLayers.Layer.OSM( "Simple OSM Map");
        map.addLayer(layer);
        map.setCenter(
            new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(
                new OpenLayers.Projection("EPSG:4326"),
                map.getProjectionObject()
            ), 6
        ); 

        var markers = new OpenLayers.Layer.Markers( "Markers" );
        map.addLayer(markers);

        var size = new OpenLayers.Size(21,25);
        var offset = new OpenLayers.Pixel(0,0);
        var icon = new OpenLayers.Icon('http://www.openlayers.org/dev/img/marker.png', size, offset);
        markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(-1.60400390625, 54.07228265560386).transform(new OpenLayers.Projection("EPSG:4326"),map.getProjectionObject()),icon));           
    }

Each time I place a marker the position needs to be transformed to EPSG:4326. Is there a way to tell the map to always use this projection?

Upvotes: 0

Views: 8093

Answers (1)

Manuel Leuenberger
Manuel Leuenberger

Reputation: 2367

Whether you can set the projection on a map or not, depends on which service you are using for the base layer. As far as I know, OSM only provides its rendered tiles in EPSG:900913, so there is no way around transforming your coordinates before adding them to the map. You could search for a service that provides its tiles in multiple projections, but I haven't seen one that is free to use so far. An alternative would be to render your own tiles in the needed projection and provide them through your own tile server.

Let's suppose you have such a map, you can change the projection using OpenLayers.Map.setOptions() like this:

map.setOptions({
    projection: "EPSG:4326"
});

But you may also need to set some projection related properties, like maxExtent etc. See this question.

Upvotes: 1

Related Questions