我可以成功地做到:
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(常规lat / lon格式),我遇到了一些问题。
当我进行转换时,任何负值似乎都会变成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
});
答案 0 :(得分:2)
在我的代码的某一点上,我混淆了纬度和经度,这让一切都变得混乱。
答案 1 :(得分:2)
如果你真的想要使用所有的坐标转换能力,你应该使用proj4js http://proj4js.org/增强openlayers一个完整的坐标转换框架。