我可以成功做到:

point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));

以谷歌格式(以米为单位)的一点,但是当我想相反时:
point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));

到4326(常规纬度/经度格式)的程度,我遇到了一些问题。

当我进行转换时,任何负值似乎都会变成NaN(而不是数字)。关于反向转换,我是否不了解?

编辑:更糟糕的是,当我没有负值时,坐标似乎消失了。我通过在屏幕上绘制一个正方形来获取坐标,然后将这些坐标保存到数据库中并稍后加载。我可以在非洲尖端(正坐标)附近绘制一个正方形,然后在加载时在大西洋的非洲顶部附近绘制一个正方形。我肯定做错了...

编辑:这是我的代码:http://pastie.org/911524

具体来说:这就是我初始化地图的方式:
 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
        });

最佳答案

啊,我知道了:

在我的代码中,有一点我混淆了纬度和经度,这弄乱了所有东西。

关于map - OpenLayers投影,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2607734/

10-09 06:56