Alterar projeção no mapa do OpenLayers
-
28-09-2019 - |
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?
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 comoOsmarender
ouMapnik
:
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)