3

我可以成功地做到:

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
        });
4

2 回答 2

2

啊,我想通了:

在我的代码中的某一时刻,我混淆了纬度和经度,它把一切都搞砸了。

于 2010-04-09T17:18:41.813 回答
2

如果你真的想使用所有的坐标变换功能,你应该使用 proj4js http://proj4js.org/一个完整的坐标变换框架来增强 openlayers。

于 2010-05-18T22:51:31.400 回答