如何解决开放层:如何在向量源上进行坐标系转换
我正在尝试在应用程序中包含地图。我从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")));
如果有人能指出我正确的方向,我将不胜感激。当然,这很普遍,应该很容易处理。但是我在文档或开放层示例中找不到任何相关内容。
解决方法
读取特征时,可以使用dataProjection
和featureProjectiion
选项将特征转换为视图投影
features: new ol.format.GeoJSON().readFeatures( <?php print_r($object->getLocationsAsGeoJson()); ?>,{
dataProjection: 'EPSG:4326',featureProjection: map.getView().getProjection()
})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。