Pergunta

Quero definir "EPSG: 4326" como a projeção de um mapa do OpenLayers, mas quando tento, sempre recebo "EPSG: 900913".

function init() {

    var options = {
            projection: new OpenLayers.Projection("EPSG:4326")  // ignored
    };

    map = new OpenLayers.Map('map', options);

    var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
    map.addLayer(layer);

    ...

    alert(map.getProjection());  // returns "EPSG:900913"

    ...

}

O mapa base é o mapa de rua aberto.

Como posso definir a projeção para EPSG: 4326?

Foi útil?

Solução

É osmarender que possui uma projeção de 900913 codificada, nada a fazer sobre isso. Mas você pensou em levar as coisas para o contrário? Transformando suas coordenadas ou camada em EPSG: 900913? Verifique a documentação aqui: http://docs.openlayers.org/library/spherical_mercator.html

Outras dicas

Como Milovanderlinden apontou, você deve transformar os valores de latitude/longitude (como usado no Google ou Bing Maps) antes que possam ser aplicados em camadas OpenStreetMap comoOsmarenderouMapnik:

var datapoint = new OpenLayers.LonLat(-71.0, 42.0);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
datapoint.transform(proj_1, proj_2);

Qual é a camada base. Você está tentando desenhar no GMAPS ou no Bing Maps? Nesse caso, o OpenLayers pode estar tentando obter os dados para corresponder à projeção da camada base, para que ele se alinhe corretamente.

Isto não é um erro, é um recurso. O Spherical Mercator é uma projeção de pixels quadrados, portanto, os recursos do vetor do OpenLayers podem ser colocados com precisão no mapa-este não é o caso do WSG-84 (EPSG: 4326)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top