OpenLayers: EPSG:900913 в EPSG:4326

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
J_Mnemonic
Участник
Сообщения: 59
Зарегистрирован: 15 июн 2013, 20:47
Репутация: 0

OpenLayers: EPSG:900913 в EPSG:4326

Сообщение J_Mnemonic »

Всем привет!
Есть карта, на ней маркер векторный. координаты маркера изначально передаются из базы и имеют тип "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());
         }
Координаты получаются - но с большой погрешностью. например X превращается в 45 ровно (вместо приблизительных 45.03604888) , а Y становится 37.00000000000032 (вместо 37.992289147)

Подскажите что не так делаю?

Замечу что между markerLayer.addFeatures(feature); и getNewCoordinates(); я поставил alert, чтбы убедится что в текстовых полях правильные координаты (те что в базе)
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: OpenLayers: EPSG:900913 в EPSG:4326

Сообщение Denis Rykov »

Вот набросал пример, из которого явно видно, что нет никаких диких расхождений после трансформации. Ввели (45.03604888,37.992289147), после перевода в 900913 получаем (5013390.027964709 4578336.584573525), снова переводим в географическую систему координат - (45.03604888 37.992289147000015).
Spatial is now, more than ever, just another column- The Geometry Column.
J_Mnemonic
Участник
Сообщения: 59
Зарегистрирован: 15 июн 2013, 20:47
Репутация: 0

Re: OpenLayers: EPSG:900913 в EPSG:4326

Сообщение J_Mnemonic »

Уфф... разобрался. дело было именно в первоначальной загрузке. в текстовых полях координаты хранились с запятой и поэтому при переводе в float обрезались... уффф. вчера часов 5 сидел изучал конвертации и пробовал миллиард комбинаций... а дело было в этом. надеюсь с опытом таких вещей будет меньше )
Денис, всё равно, респект за отзывчивость!
Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя