javascript - OpenLayers EPSG900913->EPSG4326 转换给出错误结果

标签 javascript geocoding openlayers map-projections

我在将像素位置从屏幕转换为 Angular 时遇到问题 (EPSG4326)。

根据 http://proj4js.org/,EPSG900913 中的经/纬度值是正确的和谷歌地图。

我得到的一些示例值是

EPSG:900913 lon: 2763836.8383036, lat: 8815158.7073107

转换后

EPSG:4326  x: 79.18791 y: 24.08555

什么时候值应该是

EPSG 4326: Y: 24.69090 X: 60.193680

关于我做错了什么有什么想法吗?

这是我的代码的相关部分。

$mapObj.bind("contextmenu.zoom", function (evt) {
   var _px = new OpenLayers.Pixel(evt.pageX, evt.pageY),
   _lonlat = _mapObj.getLonLatFromPixel(_px),
   _point = new OpenLayers.Geometry.Point(_lonlat.lat, _lonlat.lon);

   _point = _point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
});

最佳答案

...答案是,我混淆了这一行的经纬度顺序:

_point = new OpenLayers.Geometry.Point(_lonlat.lat, _lonlat.lon);

应该是

_point = new OpenLayers.Geometry.Point(_lonlat.lon, _lonlat.lat);

关于javascript - OpenLayers EPSG900913->EPSG4326 转换给出错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7848079/

相关文章:

javascript - Openlayers 初始范围

javascript - 使用关联的实例创建 - Sequelize

ios - 执行许多地理编码请求的策略

python - 数学公式中的 mod 代表什么并使用它 python

javascript - 使用 Google Autocomplete API 根据位置名称获取经纬度

javascript - 如何绘制可与 OpenLayers 一起使用的多边形?

javascript - 如何显示日志使用的行号?

javascript - 为什么我的 ajax 调用失败

javascript - 单击处理程序到单个孤立的 Sprite

javascript - MapBox/Open Layers map 渲染图 block 不正确