Open Layers:如何对矢量源进行坐标系转换

Open Layers: how to do coordinate system transformation on vector-source

我想在我的应用程序中包含一张地图。我从 postgis 数据库加载数据,数据存储为 wgs84。数据作为 geojson 加载并由开放层显示。 问题是数据目前正被投射到海洋中的某个地方,因此我怀疑数据需要转换成不同的坐标系。 这是创建地图对象的代码:

var map = new ol.Map({
        projection: 'EPSG:4326',
        target: 'map',
        layers: [
          new ol.layer.Tile({
            source: new ol.source.OSM(),
          })
        ],
        view: new ol.View({
          center: ol.proj.fromLonLat([5, 52]),
          zoom: 4
        })
      });

这是我用来加载数据的代码:

function addObjectsToMap()
        {
            var vectorSource = new ol.source.Vector({
                features: new ol.format.GeoJSON().readFeatures( <?php print_r($object->getLocationsAsGeoJson()); ?> )
            });
            var vectorLayer = new ol.layer.Vector(
            {
                source: vectorSource
            });
            map.addLayer(vectorLayer);
        }

我已经试过将地图的坐标系设置为epsg:900913, 我尝试在 vectorLayer 中添加这个:

preFeatureInsert: function(feature) 
            {
                feature.geometry.transform(new ol.proj.Projection("EPSG:4326"),new ol.proj.Projection("EPSG:900913"));
            },

我尝试添加:.transform('EPSG:4326','EPSG:900913') 到数据导入(创建矢量源的地方) 我尝试像这样循环遍历矢量源中的数据:

vectorSource.getFeatures()[i].setGeometry(vectorSource.getFeatures()[i].getGeometry().transform(new ol.proj.Projection("EPSG:4326"),new ol.proj.Projection("EPSG:900913")));

如果有人能指出正确的方向,我将不胜感激。当然,这是很常见的事情,应该很容易处理。但是我在开放层的文档或示例中找不到任何相关信息。

读取特征时可以使用dataProjectionfeatureProjectiion选项将特征转换为视图投影

           features: new ol.format.GeoJSON().readFeatures( <?php print_r($object->getLocationsAsGeoJson()); ?> , {
              dataProjection: 'EPSG:4326',
              featureProjection: map.getView().getProjection()
           })