openlayers - 在使用 openlayer 显示地理服务器 tiff 期间出现一些问题
问题描述
我尝试使用 openlayer 显示 geoserver tif,但显示不正确。以下是我的步骤:
1. 我从本地地理服务器中选择一个 tif,例如(topp:states)
2. 然后尝试使用 openlayer api 加载它
const tifMap = (target) => {
new Map({
target,
pixelRatio: 1,
layers: [
new TileLayer({
source: new TileWMS({
url: 'http://localhost:8080/geoserver/topp/wms',
params: {'LAYERS': 'topp:states',
'BBOX': '-124.73142200000001,24.955967,-66.969849,49.371735',
'CRS': 'EPSG:4326',
'FORMAT': 'image/jpeg',
'VERSION': '1.1.0'
},
serverType: 'geoserver'
})
})
],
view: new View({
center: [741189, -3741196],
zoom: 4
})
})
};
3.不幸的是,div上显示了几个相同的图像,我不知道为什么,实际上我试图通过浏览器打开链接(openlayer试图获取),它显示正常。
解决方案
OpenLayers 根据源选项中设置的投影和 TileWMS 的平铺网格或 ImageWMS 的视口自动创建 BBOX 和 CRS 参数。最大范围可以在 tilegrid(在服务器投影单元中)或层(在视图投影单元中)中设置。假设服务器仅支持 EPSG:4326,并且您希望将平铺输出显示为 EPSG:3857,这些都可以:
new TileLayer({
source: new TileWMS({
url: 'http://localhost:8080/geoserver/topp/wms',
params: {'LAYERS': 'topp:states',
'FORMAT': 'image/jpeg',
'VERSION': '1.1.0'
},
serverType: 'geoserver',
projection: 'EPSG:4326'
}),
extent: transformExtent([-124.73142200000001,24.955967,-66.969849,49.371735], 'EPSG:4326', 'EPSG:3857')
})
.
new TileLayer({
source: new TileWMS({
url: 'http://localhost:8080/geoserver/topp/wms',
params: {'LAYERS': 'topp:states',
'FORMAT': 'image/jpeg',
'VERSION': '1.1.0'
},
serverType: 'geoserver',
projection: 'EPSG:4326',
tilegrid: createXYZ({extent: [-124.73142200000001,24.955967,-66.969849,49.371735]})
})
})
推荐阅读
- php - 我在 cpanel 中编写此代码然后运行网站,但无法访问该网站
- javascript - 使用 JavaScript + Selenium WebDriver 进行自动化测试
- git - 如何在 Git 中的两个独立工作树之间切换分支?
- css - 这种布局是否可以仅使用 flexbox 或 bootstrap?
- excel - 针对 Excel 中的下拉列表进行多选和删除
- asp.net-mvc-4 - 如果我们在 UI 上的单列中绑定了两个单独的列值,则不会应用剑道过滤器
- c++ - 无法在结构中包含 circular_buffer
- java - 具有可配置后缀的 SpringPhysicalNamingStrategy
- graphql - GraphQL 产品查询拒绝访问
- android - LiveData 和 Transformations.switchMap 崩溃