2015-03-02 2 views
2

У меня трудное время, пытаясь изменить проекцию карты по умолчанию.OpenLayers 3.2.1 - Изменение проекции по умолчанию

Вот JSFIDDLE: http://jsfiddle.net/qtcpjape/3/

$(document).ready(function() { 
    var proj = new ol.proj.Projection({ 
     code: 'EPSG:4326', 
     units: 'm', 
     extent: [-180.0000, -90.0000, 180.0000, 90.0000] 
    }); 

    var map = new ol.Map({ 
     target: 'map', 
     controls: [], 
     layers: [ 
      new ol.layer.Tile({ 
       source: new ol.source.MapQuest({ 
        layer: 'osm' 
       }) 
      }) 
     ], 
     view: new ol.View({ 
      center: [-90.78885827595732, 38.78662388327825], 
      projection: proj, 
      zoom: 15 
     }) 
    }); 
}); 

у меня будет GeoJSON исходит от REST вызова, который находится в EPSG: 4326, и я хотел бы, чтобы отобразить его легко.

Прямо сейчас, я не могу заставить карту изменить проекцию и показать фактический центр.

Любая помощь будет оценена! Благодаря!

ответ

3

Как вы используете Mapquest плитку, ваша карта должна быть в EPSG:3857, поскольку OL3 не поддерживает растровую перепроецирование (растр перепроецирование поддерживается начиная с версии 3.11.0, но по причинам производительности это, как правило, рекомендуют перепроецировать векторные данные). Но ваши векторные данные GeoJSON можно перепрограммировать на лету от EPSG:4326 до EPSG:3857, установив целевой прогноз на vector source.

Например:

var vectorSource = new ol.source.GeoJSON({ 
    ... 
    projection: 'EPSG:3857' 
}); 


var vectorLayer = new ol.layer.Vector({ 
    source: vectorSource 
}); 


var map = new ol.Map({ 
    target: 'map', 
    controls: [], 
    layers: [ 
     new ol.layer.Tile({ 
      source: new ol.source.MapQuest({ 
       layer: 'osm' 
      }) 
     }), 
     vectorLayer 
    ], 
    view: new ol.View({ 
     center: ol.proj.transform([6, 49], 'EPSG:4326', 'EPSG:3857'), 
     zoom: 3, 
     projection: 'EPSG:3857' 
    }) 
}); 

См http://jsfiddle.net/qtcpjape/5/

+0

Не могли бы вы привести пример о том, как это сделать на лету? Благодаря! – Primm

+0

Я обновил свой ответ. – tsauerwein

+0

Большое спасибо! Я пробовал это, но использовал «EPSG: 4326» в качестве проекции, думая, что это должна быть проекция, в которой были данные. Очень ценим! – Primm

2

Начиная с OpenLayers 3.11.0, теперь можно перепроецировать растровые источники. Проверьте release notes.

Так что просто укажите проекцию явно на вид (который вы уже делаете) и на все источники (которых у вас сейчас нет). OpenLayers делает все остальное!

+0

Спасибо за подсказку, я обновил свой ответ. – tsauerwein

Смежные вопросы