OpenLayers 3.2.1 - 更改默认投影

时间:2015-03-02 16:55:00

标签: openlayers-3

我很难尝试更改地图视图的默认投影。

这是一个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
        })
    });
});

我将使用来自EPSG中的REST调用的GeoJSON:4326,我想轻松映射它。

现在,我似乎无法让地图改变投影并显示实际的中心。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:3)

当您使用MapQuest图块时,您的地图必须位于EPSG:3857 中,因为ol3不支持光栅重投影(从版本3.11.0开始支持光栅重投影,但性能不佳通常建议重新投影矢量数据的原因)。但是,通过在vector source上设置目标投影,您的GeoJSON矢量数据可以从EPSG:4326动态重新投影到EPSG:3857

例如:

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/

答案 1 :(得分:2)

从OpenLayers 3.11.0开始,现在可以重新投影栅格源。查看release notes

因此,只需在视图(您已经执行过)和所有源(您当前没有)上明确指定投影。 OpenLayers完成其余的工作!