Projeções do OpenLayers
-
25-09-2019 - |
Pergunta
Eu posso fazer com sucesso:
point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
Até um ponto que está no formato do Google (em metros), mas quando eu quero fazer o contrário:
point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
Até um ponto que está em 4326 (formato Lat/Lon regular), estou tendo alguns problemas.
Qualquer valor negativo parece se tornar NAN (não um número) quando eu faço a transformação. Existe algo sobre a transformação ao contrário que eu não entendo?
EDIT: Pior ainda, quando não tenho valores negativos, as coordenadas parecem desligadas. Estou recebendo as coordenadas desenhando um quadrado na tela, salvando essas coordenadas em um banco de dados e carregando -as mais tarde. Eu posso desenhar um quadrado perto da ponta da África (coordenadas positivas) e, quando carrega, fica perto do topo da África, no Oceano Atlântico. Estou definitivamente fazendo algo errado ....
EDIT: Aqui está o meu código: http://pastie.org/911524
Especificamente: é assim que inicializo meu mapa:
var navControl = new OpenLayers.Control.Navigation();
map = new OpenLayers.Map('map', {
// restrictedExtent: bounds.clone(),
});
//actually draws the map
layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {
displayOutsideMaxExtent: false,
wrapDateLine: true
//numZoomLevels: 10
});
Solução
Ah, eu descobri:
Em um ponto do meu código, confunhei a latitude e a longitude de que estava bagunçando tudo.
Outras dicas
Se você realmente deseja usar todo o poder de transformação de coordenadas, você deve aprimorar o OpenLayers com proj4js http://proj4js.org/ Uma estrutura completa de transformação de coordenadas.