如何使用 openLayers 将自定义 SRS 设置为图层?
How can I set a custom SRS to a layer with openLayers?
问题是我有一个带有区域列表的数据库,它们存储在 table 中,数据类型列为 "geometry"。所以我想加载一些区域然后在地图上显示它们。我设法加载区域并在地图中显示它们,但它们不在我想要的位置,它们总是出现在非投影地图中心的几内亚湾。在尝试加载某些区域之前,地图会使用地理服务器层同时加载所有区域。
所以我的问题是,如何为 vectorLayer 设置自定义投影?如果我做不到,我如何使用 de DB 的指定部分自动创建图层?
我在 postgis 中使用 postgres 数据库。
这是我之前的代码:
ar wmsSource = new ImageWMS({
url: 'URL TO GEOSERVER',
params: {
Layers: "LAYER IN GEOSERVER" ,
SRS: 'EPSG:4258'
},
ratio: 2,
serverType: 'geoserver'
});
var mainMap = new ImageLayer({
opacity: 0.3,
source: wmsSource,
maxResolution: 500
});
this.map = new Map({
layers: [
new TileLayer({
preload: Infinity,
source: new OSM()
}),
mainMap
]
,
target: 'map',
});
这是我尝试使用的代码:
var vectorSource = new VectorSource({
params: {
CRS: 'EPSG:4258'
},
ratio: 2,
serverType: 'geoserver'
});
var z;
for(z of nextProps.zoneState.zona){
var f = new Feature({
geometry: new MultiPolygon(z.geom.coordinates)
});
vectorSource.addFeature(f);
}
var vectorLayer = new VectorLayer({
source: vectorSource, style:new Style({
stroke: new Stroke({
color: 'red',
width: 3
})
})
});
var map = new Map({
layers: [
new TileLayer({
source: new OSM()
}),
vectorLayer
],
target: 'map'
});
如果您将 VectorSource
与 url
和 format
选项一起使用,可以转换某些格式(例如 GeoJSON)以在加载时查看投影。但是如果您在自己的代码中添加功能,您还需要转换几何图形
geometry: new MultiPolygon(z.geom.coordinates).transform('EPSG:4258', 'EPSG:3857')
问题是我有一个带有区域列表的数据库,它们存储在 table 中,数据类型列为 "geometry"。所以我想加载一些区域然后在地图上显示它们。我设法加载区域并在地图中显示它们,但它们不在我想要的位置,它们总是出现在非投影地图中心的几内亚湾。在尝试加载某些区域之前,地图会使用地理服务器层同时加载所有区域。 所以我的问题是,如何为 vectorLayer 设置自定义投影?如果我做不到,我如何使用 de DB 的指定部分自动创建图层?
我在 postgis 中使用 postgres 数据库。
这是我之前的代码:
ar wmsSource = new ImageWMS({
url: 'URL TO GEOSERVER',
params: {
Layers: "LAYER IN GEOSERVER" ,
SRS: 'EPSG:4258'
},
ratio: 2,
serverType: 'geoserver'
});
var mainMap = new ImageLayer({
opacity: 0.3,
source: wmsSource,
maxResolution: 500
});
this.map = new Map({
layers: [
new TileLayer({
preload: Infinity,
source: new OSM()
}),
mainMap
]
,
target: 'map',
});
这是我尝试使用的代码:
var vectorSource = new VectorSource({
params: {
CRS: 'EPSG:4258'
},
ratio: 2,
serverType: 'geoserver'
});
var z;
for(z of nextProps.zoneState.zona){
var f = new Feature({
geometry: new MultiPolygon(z.geom.coordinates)
});
vectorSource.addFeature(f);
}
var vectorLayer = new VectorLayer({
source: vectorSource, style:new Style({
stroke: new Stroke({
color: 'red',
width: 3
})
})
});
var map = new Map({
layers: [
new TileLayer({
source: new OSM()
}),
vectorLayer
],
target: 'map'
});
如果您将 VectorSource
与 url
和 format
选项一起使用,可以转换某些格式(例如 GeoJSON)以在加载时查看投影。但是如果您在自己的代码中添加功能,您还需要转换几何图形
geometry: new MultiPolygon(z.geom.coordinates).transform('EPSG:4258', 'EPSG:3857')