Вопрос

Я хочу установить «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?

Это было полезно?

Решение

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

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

Так как MilovanderLinden Указал, вы должны преобразовать значения широты / долготы (как используют в Google или Bing Maps) до того, как может быть применен в слоях OpenStreetMapOsmarenderили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);

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

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

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