我可以成功地做到:
point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));到了google格式(以米为单位),但当我想反其道而行之时:
point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));在4326 (常规经纬度格式)中,我遇到了一些问题。
当我进行转换时,任何负值似乎都变成了NaN (而不是数字)。关于反向转换,有什么我不明白的地方吗?
编辑:更糟糕的是,当我没有负值时,坐标似乎是关闭的。我通过在屏幕上绘制一个正方形来获得坐标,然后将这些坐标保存到数据库中并在稍后加载它们。我可以在非洲尖端附近画一个正方形(正坐标),然后当它加载时,它就在大西洋中的非洲顶部附近。我肯定做错了什么.
编辑:这是我的代码:http://pastie.org/911524
具体来说:我是这样初始化我的map的:
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
});发布于 2010-04-10 01:18:42
啊,我想通了:
在我的代码中,我一度混淆了纬度和经度,这把一切都搞乱了。
发布于 2010-05-19 06:51:31
如果你真的想要使用所有的坐标转换功能,你应该使用proj4js http://proj4js.org/来增强openlayers,这是一个完整的坐标转换框架。
https://stackoverflow.com/questions/2607734
复制相似问题