Изменить проекцию в OpenLayers Map - PullRequest
3 голосов
/ 20 апреля 2010

Я хочу установить "EPSG: 4326" в качестве проекции карты OpenLayers, но когда я пробую ее, я всегда получаю "EPSG: 900913".

function init() {

    var options = {
            projection: new OpenLayers.Projection("EPSG:4326")  // ignored
    };

    map = new OpenLayers.Map('map', options);

    var layer = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
    map.addLayer(layer);

    ...

    alert(map.getProjection());  // returns "EPSG:900913"

    ...

}

Базовая карта - это открытая карта улиц.

Как установить проекцию на EPSG: 4326?

Ответы [ 4 ]

5 голосов
/ 30 июля 2010

Как указывало milovanderlinden , необходимо преобразовать значения широты / долготы (используемые в картах Google или Bing), прежде чем их можно будет применять в слоях OpenStreetMap, таких как Osmarender или Mapnik:

var datapoint = new OpenLayers.LonLat(-71.0, 42.0);
var proj_1 = new OpenLayers.Projection("EPSG:4326");
var proj_2 = new OpenLayers.Projection("EPSG:900913");
datapoint.transform(proj_1, proj_2);
2 голосов
/ 18 мая 2010

Это Osmarender, который имеет жестко запрограммированную проекцию 900913, с этим ничего не поделаешь. Но думали ли вы о том, чтобы все было наоборот? Преобразование ваших координат или слоя в EPSG: 900913? Проверьте документацию здесь: http://docs.openlayers.org/library/spherical_mercator.html

0 голосов
/ 25 августа 2010

Это не ошибка, это особенность. Сферическая проекция Меркатора представляет собой проекцию с квадратными пикселями, поэтому векторные элементы ваших открытых слоев могут быть точно размещены на карте - это не так с WSG-84 (EPSG: 4326)

0 голосов
/ 22 апреля 2010

Что такое базовый слой. Вы пытаетесь рисовать на картах GMaps или Bing? Если это так, то OpenLayers может пытаться привести данные в соответствие с проекцией базового слоя, чтобы они правильно выстроились.

...