Вопрос

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

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 (обычный формат lat / lon), у меня есть некоторые проблемы.

Любое отрицательное значение, похоже, становится 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
        });
Это было полезно?

Решение

Ах, я понял это:

В какой-то момент в моем коде я запутал широту и долготу, все это возилось.

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top