Конвертация OpenLayers EPSG900913-> EPSG4326 дает неверные результаты - PullRequest
2 голосов
/ 21 октября 2011

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

Значение lon / lat в 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"));
});

1 Ответ

3 голосов
/ 21 октября 2011

... и ответ таков: я перепутал порядок в этой строке:

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

должно быть

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