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")));
如果有人能指出正确的方向,我将不胜感激。当然,这是很常见的事情,应该很容易处理。但是我在开放层的文档或示例中找不到任何相关信息。
读取特征时可以使用dataProjection
和featureProjectiion
选项将特征转换为视图投影
features: new ol.format.GeoJSON().readFeatures( <?php print_r($object->getLocationsAsGeoJson()); ?> , {
dataProjection: 'EPSG:4326',
featureProjection: map.getView().getProjection()
})
我想在我的应用程序中包含一张地图。我从 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()
})