OpenLayers: EPSG:900913 в EPSG:4326
Добавлено: 24 июн 2013, 23:46
Всем привет!
Есть карта, на ней маркер векторный. координаты маркера изначально передаются из базы и имеют тип "EPSG:4326" на сколько я понимаю (45.03604888 и 37.9922891470) их я присваиваю полям txtX.ClientID и txtY.ClientID соответственно.
Далее я его рисую так:
и вот далее начинается непонятное мне (перерыл уже всё что можно):
далее я вызываю самопальную функцию
getNewCoordinates();
где пытаюсь преобразовать координаты маркера обратно в тот формат в котором его надо записывать в базу
Координаты получаются - но с большой погрешностью. например X превращается в 45 ровно (вместо приблизительных 45.03604888) , а Y становится 37.00000000000032 (вместо 37.992289147)
Подскажите что не так делаю?
Замечу что между markerLayer.addFeatures(feature); и getNewCoordinates(); я поставил alert, чтбы убедится что в текстовых полях правильные координаты (те что в базе)
Есть карта, на ней маркер векторный. координаты маркера изначально передаются из базы и имеют тип "EPSG:4326" на сколько я понимаю (45.03604888 и 37.9922891470) их я присваиваю полям txtX.ClientID и txtY.ClientID соответственно.
Далее я его рисую так:
Код: Выделить всё
var lonLat = new OpenLayers.LonLat(parseFloat($("#<%=txtX.ClientID %>").val()), parseFloat($("#<%=txtY.ClientID %>").val())).transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));
marker = new OpenLayers.Geometry.Point(lonLat.lon, lonLat.lat);
feature = new OpenLayers.Feature.Vector(marker);
markerLayer.addFeatures(feature);
далее я вызываю самопальную функцию
getNewCoordinates();
где пытаюсь преобразовать координаты маркера обратно в тот формат в котором его надо записывать в базу
Код: Выделить всё
function getNewCoordinates() {
var coordinates = feature.geometry.getBounds().getCenterLonLat().transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
alert(coordinates.toString());
}
Подскажите что не так делаю?
Замечу что между markerLayer.addFeatures(feature); и getNewCoordinates(); я поставил alert, чтбы убедится что в текстовых полях правильные координаты (те что в базе)