【问题标题】:set the projection of map in openlayers 3在openlayers 3中设置地图的投影
【发布时间】:2015-09-23 15:24:30
【问题描述】:

我只想将 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

});

如果 center 类似于 var center = [-1.812, 52.443];,它不会进入英国,而应该是,它会进入地图的中心。

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

谢谢

【问题讨论】:

    标签: openlayers-3


    【解决方案1】:

    OL 目前不转换图块,但正在处理中。

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

    【讨论】:

    • 您好。所以,等等,我不能重新投影地图,因为我使用的唯一图层是栅格?如果我使用栅格和矢量怎么办?我必须将矢量重新投影到光栅上吗?如果我有 2 个具有不同投影的栅格层呢?谢谢你 PS - 我使用 openlayers 版本 3.9.0
    • 没错。您可以转换矢量图层以匹配底层图块,但反之则不行。
    • 虽然看起来这种能力越来越接近:github.com/openlayers/ol3/pull/4122
    【解决方案2】:

    你有两个问题:

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

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

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

    【讨论】:

    • 嗨,阿尔文。因此,在您链接的示例中,该层默认为4326,这就是为什么视图也是4326。我得到了吗? -另外,如果我想要两个具有不同投影的不同栅格怎么办?我该怎么做,因为我无法重新投影栅格?谢谢
    • 不,因为视图配置了4326,所以wms层在4326中加载。同一层可能与3857一起使用(前提是wms服务器支持)。您目前不能在 ol3 中混合光栅投影。有关客户端重投影的详细信息,请参阅 Bob Holmes 的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-02-19
    • 2018-02-13
    相关资源
    最近更新 更多