Openlayers - Проблемы с проекцией при получении широты / долготы от точки - PullRequest
2 голосов
/ 01 августа 2011

Я пытаюсь получить широту / долготу от перетаскиваемого маркера с помощью Openlayers и OSM, но я не могу найти хорошие настройки для преобразования проекции, что я делаю неправильно?

Воткод: http://pastie.org/2300321 (см. addMarker l140 и updateTargets l153) и небольшой демонстрационный тест .

Если вы отправляете адрес, перетащите маркер, долготу и широтуне правы.Я проверил несколько разных прогнозов, но я не уверен, что я буду использовать ...

1 Ответ

5 голосов
/ 01 августа 2011

Я думаю, что проблема в updateTargets методе:

var point = this.feature.geometry;
var pixel = new OpenLayers.Pixel(point.x, point.y);
var coord = this.map.getLonLatFromPixel(pixel).transform(
   new OpenLayers.Projection("EPSG:900913"),
   new OpenLayers.Projection("EPSG:4326")
);

this.feature.geometry уже указано в координатах lon / lat, а не в пикселях.Поэтому я предлагаю вам пропустить вторую строку и выполнить преобразование из проекции OpenStreetMap в lon / lat непосредственно на геометрическом объекте:

var coord = this.feature.geometry.transform(
   new OpenLayers.Projection("EPSG:900913"),
   new OpenLayers.Projection("EPSG:4326")
);
...