OpenLayers 投影

OpenLayers projection

我在使用 OpenLayers 3 时遇到了一点问题。我有以下脚本:

var map = new ol.Map({
    view : new ol.View({
        center : [5.611155, 52.238879],
        projection : 'EPSG:4326',
        zoom : 8.5,
        minZoom : 8.5,
        maxZoom : 12.5
    }),
    layers : [
        new ol.layer.Tile({
            source : new ol.source.OSM()
        }),

    ],
    target : 'map'
});

如果我没记错的话,这应该显示一张以荷兰某地为中心的地图。但是我没有显示地图,而是只看到蓝色。即使我把缩放设置为1,也没有世界可看。

如果我从视图中删除投影属性,问题似乎就不存在了。但是当然我应该在另一个坐标系中给出所有坐标,这是不可能的,因为我也依赖于其他系统。

当我从视图属性中删除投影属性并加载这样的 GeoJSON 文件时:

new ol.layer.Vector({
  source: new ol.source.GeoJSON({
    projection: 'EPSG:4326',
    url: 'data/map.geojson'
  })
})

它应该在荷兰之上放置一个图层,但 GeoJSON 却显示在非洲某处。

有人可以帮助我吗?

Openstreetmap 的投影与 OL3 不同。 OSM 使用 EPSG:900913,当您将其用作背景时,您必须将其用作主投影。

这将适用于您问题的第一部分:

var centerpos = [5.611155, 52.238879]; // Your original position in LatLon
var newpos = ol.proj.transform(centerpos,'EPSG:4326','EPSG:900913');
var map = new ol.Map({
    view : new ol.View({
        projection : 'EPSG:900913', // OSM projection
        center : newpos,
        zoom : 8.5,
        minZoom : 8.5,
        maxZoom : 12.5
    }),
    layers: [
        new ol.layer.Tile({
               source: new ol.source.OSM()
            })
         ],
   target : 'map'
});

关于你最后一个关于 GeoJson 的问题,我认为它会起作用,因为你设置了投影(最终在源代码中设置了投影),但我还没有测试它。