私はポイントレイヤーでMapServer WMSサービスをセットアップしました。そして今、私はOpenLayersライブラリを使って簡単なWMSクライアントを書こうとしています。一般的に、私はいくつかの結果を得ましたが、いくつかの問題があります。いくつかの点は他の点よりも小さい。 QGISとリーフレットライブラリを使用して私のWMSサービスに接続しようとしました。結果は完璧です! OpenLayersのlibにはいくつかの問題があります。この例で何が問題なのですか?OpenLayersライブラリは、エラーのあるMapServer WMSレイヤーをレンダリングします
クライアント側:
- OpenLayersをV4.0.1
- のWindows 7のx64 SP1
- クロム57.0.2987.133【のMozilla/5.0(のWindows NT 6.1; WOW64)のAppleWebKit/537.36(KHTML、等Gecko)クローム/ 57.0.2987.133サファリ/ 537.36]
- IE 11.0.9600 [Mozillaの/ 5.0(Windows NTの6.1; WOW64;トライデント/ 7.0; RV:11.0)Geckoのような]
- のFirefox 51.0.1 [Mozillaの/ 5.0(Windows NT 6.1; WOW64; rv:51.0)Geck O/20100101 Firefoxの/ 51.0]
サーバー側:
- MS4W 3.1.4
ライブ例:形状ファイル、HTMLページと設定マップファイルとhttp://vector-sol.ru/apps/ol.html
ダウンロードZIP :http://map31.ru:8080/example.zip
htmlページ:
<!doctype html>
<html lang="ru">
<head>
<link rel="stylesheet" href="https://openlayers.org/en/v4.0.1/css/ol.css" type="text/css">
<style>
html, body {
margin: 0;
padding: 0;
height:100%;
}
#info {
position:absolute;
z-index:10;
background-color:yellow;
right: 0;
}
#map {
height:100%;
}
</style>
<script src="https://openlayers.org/en/v4.0.1/build/ol.js" type="text/javascript"></script>
<title>OpenLayers example</title>
</head>
<body>
<div id="map" class="map">
<div id="info">OpenLayers example</div>
</div>
<script type="text/javascript">
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
new ol.layer.Tile({
source: new ol.source.TileWMS(({
projection: 'EPSG:4326',
url: 'http://map31.ru:8080/cgi-bin/mapserv.exe?map=../htdocs/mydemo/wms_ol.map',
params: { 'LAYERS': 'pop_places', 'TILED': true },
serverType: 'mapserver'
}))
})
],
view: new ol.View({
center: ol.proj.fromLonLat([37.41, 8.82]),
zoom: 4
})
});
</script>
</body>
</html>
MAPファイル:デフォルトのビューの投影が'EPSG:3857'
あるので
MAP
NAME "WMS"
IMAGETYPE PNG
EXTENT -180 -90 180 90 # Geographic
SIZE 800 400
IMAGECOLOR 220 221 239
SYMBOL
NAME 'circle'
TYPE ELLIPSE
POINTS 1 1 END
FILLED TRUE
END
WEB
METADATA
wms_title "WMS Demo"
wms_abstract "Demo WMS Server"
wms_onlineresource "http://map31.ru:8080/cgi-bin/mapserv.exe?map=../htdocs/mydemo/wms_ol.map&"
wms_srs "EPSG:4326"
wms_getfeatureinfo "http://map31.ru:8080/cgi-bin/mapserv.exe?map=../htdocs/mydemo/wms_ol.map&"
wms_featureinfoformat "text/plain"
wms_enable_request "*"
END
END
PROJECTION
"init=epsg:4326"
END
LAYER
NAME "pop_places"
TYPE POINT
STATUS ON
DATA 'shape/ne_10m_populated_places.shp'
PROJECTION
"init=epsg:4326"
END
CLASS
NAME "Pop Places"
STYLE
COLOR 10 100 50
SYMBOL 'circle'
SIZE 6
END
END
METADATA
wms_title "Populated Places"
wms_abstract "Populated places of the world"
wms_srs "EPSG:4326"
wms_include_items "all"
wms_enable_request "*"
#wms_extent "-180 -90 180 90"
END
END # layer
END
ありがとうございます!しかし、WMSサーバの出力プロジェクションを「EPSG:3857」に変更しなければなりませんでした。そして、このステップ後に投影を取り除くと、 'EPSG:4326'行が影響を与えました。したがって、これはサーバー側のソリューションです。しかし、OpenLayers再投影で何が問題になっていますか? – bestjack
何も問題はありません。しかし、目標解像度は、EPSG:4326とEPSG:3857の間で再投影したときの緯度によって変わります。それ以外の場合は、ぼやけた画像が表示されます。 – ahocevar
または 'wms_srs" EPSG:4326 "'を 'wms_srs"に変更することができます。EPSG:4326 EPSG:3857 "'サーバー側再投影を取得するには – user27874