Преобразование OpenLayers EPSG900913-›EPSG4326 дает неверные результаты

У меня проблема с преобразованием местоположения пикселя из экрана в градусы (EPSG4326).

Значение долготы/широты в EPSG900913 правильное, согласно http://proj4js.org/ и картам Google.

Некоторые примеры значений, которые я получаю,

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

person Marcus    schedule 21.10.2011    source источник


Ответы (1)


... и ответ в том, что я перепутал порядок широты и долготы в этой строке:

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

должно быть

_point = new OpenLayers.Geometry.Point(_lonlat.lon, _lonlat.lat);
person Marcus    schedule 21.10.2011