在openlayers 3中设置地图的投影

时间:2015-09-23 15:24:30

标签: openlayers-3

我只想将Openlayers 3.9.0的默认投影从默认EPSG:3857转换为EPSG:4326

所以我编辑了像

这样的基本代码
var layer = new ol.layer.Tile({
    source: new ol.source.OSM()
});

var center = [-1.812, 52.443];

var proj = new ol.proj.Projection({
        code: 'EPSG:4326',
        units: 'm'
});

var view = new ol.View({
    center: center,
    zoom: 6,
    projection:proj
});


var map = new ol.Map({
    loadTilesWhileAnimating: false,
    loadTilesWhileInteracting:false,
    target: 'map',
    layers: [layer],
    view: view

});

如果中心像var center = [-1.812, 52.443];那样它不会在英国进入,那么它就会出现在地图的中心。

如果我喜欢var center = new ol.geom.Point(-1.812, 52.443);,我根本看不到任何地图。我在这里缺少什么?

由于

2 个答案:

答案 0 :(得分:1)

OL当前不会转换切片,但这种方法正在发挥作用。

https://github.com/openlayers/ol3/issues/3785

答案 1 :(得分:1)

您有两个问题:

你不应该自己实例化EPSG:4326投影,它由OpenLayers 3完成。你可以通过调用ol.proj.get('EPSG:4326')来获得投影。

ol.source.OSM来源从仅支持EPSG:3857的服务加载其图块。由于它是基于XYZ的tilesource,您实际上可能会使地图工作(如果tilecoords有效),但该图层将无法正确定位并仍在EPSG:3857中。您可以使用EPSG:4326作为视图投影,但是您必须使用支持它的背景地图。

可以在official examples中找到工作演示。