OpenLayers Проекции - PullRequest
       32

OpenLayers Проекции

3 голосов
/ 09 апреля 2010

Я могу успешно сделать:

point.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));

До точки в формате Google (в метрах), но когда я хочу сделать обратное:

point.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913"));

до точки в 4326 (обычный формат широта / долгота), у меня возникли некоторые проблемы.

Кажется, что любое отрицательное значение становится NaN (не число), когда я делаю преобразование. Есть ли что-то в обратном преобразовании, которое я не понимаю?

Редактировать: еще хуже, когда у меня нет отрицательных значений, координаты кажутся отключенными. Я получаю координаты, рисуя квадрат на экране, затем сохраняю эти координаты в базе данных и загружаю их позже. Я могу нарисовать квадрат около вершины Африки (положительные координаты), а затем, когда он загружается, он находится около вершины Африки в Атлантическом океане. Я определенно делаю что-то не так ...

Редактировать: Вот мой код: http://pastie.org/911524

В частности: так я инициализирую свою карту:

 var navControl = new OpenLayers.Control.Navigation();
                 map = new OpenLayers.Map('map', {

                // restrictedExtent: bounds.clone(),


                 }); 
       //actually draws the map 
        layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik", {
        displayOutsideMaxExtent: false,
        wrapDateLine: true
        //numZoomLevels: 10
        });

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

Если вы действительно хотите использовать всю мощь преобразования координат, вы должны улучшить открытые слои с помощью proj4js http://proj4js.org/ полной структуры преобразования координат.

2 голосов
/ 09 апреля 2010

Ах, я понял:

В какой-то момент в моем коде я перепутал широту и долготу, все было испорчено.

...