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
        });
Foi útil?

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.

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