Openlayers 3 OpenLayers 3.2.1-更改默认投影

Openlayers 3 OpenLayers 3.2.1-更改默认投影,openlayers-3,Openlayers 3,我很难更改地图视图的默认投影 下面是一个JSFIDLE: 我将从EPSG:4326中的REST调用获得GeoJSON,我希望能够轻松地映射它 现在,我似乎无法让地图改变投影并显示实际的中心 任何帮助都将不胜感激!谢谢 当您使用MapQuest互动程序时,您的地图必须位于EPSG:3857中,因为ol3不支持光栅重投影(自版本起支持光栅重投影,但出于性能原因,通常建议重投影矢量数据)。但您的GeoJSON矢量数据可以通过在屏幕上设置目标投影,动态地从EPSG:4326重新投影到EPSG:3857

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

下面是一个JSFIDLE:

我将从EPSG:4326中的REST调用获得GeoJSON,我希望能够轻松地映射它

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


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

当您使用MapQuest互动程序时,您的地图必须位于
EPSG:3857
中,因为ol3不支持光栅重投影(自版本起支持光栅重投影,但出于性能原因,通常建议重投影矢量数据)。但您的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'
    })
});

请参见

从OpenLayers 3.11.0开始,现在可以重新投影光栅源。看看这本书


因此,只需在视图(您已经这样做)和所有源(您当前没有)上明确指定投影。OpenLayers完成了剩下的工作

你能举个例子说明如何在飞行中做到这一点吗?谢谢非常感谢你!我试过了,但用了“EPSG:4326”作为投影,认为它必须是数据所在的投影。非常感谢!事实上,您在源上设置的投影是目标投影(在您的例子中是
EPSG:3857
。对于GeoJSON,默认投影是
EPSG:4326
,这就是您不必明确指定的原因。
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'
    })
});