[英]WMS Layer provide by Map Sever rendering incorrectly in ol3
我使用OpenLayers3創建了一個包含兩層的地圖。 第一層是開放街道地圖層,第二層是地圖服務器提供的WMS層。
問題 -當我渲染第一層時,它正確渲染沒有問題。 但是當我渲染第二層(由地圖服務器提供)時,渲染錯誤意味着它不適合其容器,並且就位置而言與第一層不同步。 有關詳細說明,請參閱地圖快照 。 在快照頂層是由地圖服務器提供的wms層。
此外,當我縮放或移動地圖時,兩個圖層都能正常工作,但是在幾秒鍾的延遲之后,第二層(來自地圖服務器的wms圖層)再次切換回其初始位置(位於上面附加的快照中的位置)。
這是我用來使用wms服務的代碼。
var layer = new ol.layer.Image({
source: new ol.source.ImageWMS({
url: 'http://localhost:19090/rasters/world/wms',
params: {
'LAYERS': 'world',
'mode': 'map',
},
serverType: 'mapserver'
})
});
這是我的地圖文件。
MAP NAME "world" CONFIG "MS_ERRORFILE" "/home/neelesh/Projects/georbis/data/logs/mapservice_errors.log" CONFIG "PROJ_LIB" "/home/neelesh/Projects/georbis/deps/proj.4-master/share/proj" CONFIG "ON_MISSING_DATA" "LOG" DEBUG 5 EXTENT -180.000 -90.000 180.000 90.000 SHAPEPATH "/home/neelesh/Projects/georbis/data/service_data/data/wms" IMAGECOLOR 255 255 255 SIZE 1350 675 WEB METADATA "wms_title" "Georbis WMS Server" "wms_author" "VizExperts" "wms_onlineresource" "http://192.168.1.36:19090/rasters/world/wms?" "wms_enable_request" "*" "wms_srs" "EPSG:4326 EPSG:3857" "wms_feature_info_mime_type" "text/html" "wms_format" "image/jpg" END END PROJECTION "init=epsg:4326" END LAYER NAME world TYPE RASTER DATA "world.tif" METADATA "wms_title" "BlueWorld Map" "wms_srs" "epsg:4326" "wms_server_version" "1.1.1" END PROJECTION "init=epsg:4326" END END END
我嘗試使用ol.view.fit方法將圖層調整到其容器,但圖層的layer.getExtent()值未定義。
請求幫助我找出問題所在。 wms請求格式或地圖文件有什么問題嗎?
這是因為您將MapServer配置為僅支持EPSG 4326.它應該支持EPSG 3857(OSM磁貼)。 您應該將"wms_srs" "epsg:4326"
更改為"wms_srs" "EPSG:4326 EPSG:3857"
(請參閱官方WMS服務器文檔 )。 您可以確認它可以執行GetCapabilities請求 。
當您使用GeoServer時,默認情況下,它支持WMS的所有投影(因此它可以工作,因為您的WMS圖像是通過EPSG 3857請求的)
您應該知道,現在您也可以在OpenLayers中對客戶端進行光柵重投影。 對於某些演示,請訪問http://openlayers.org/en/v3.11.0/examples/並使用關鍵字“reprojection”進行搜索
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.