1、下載MS4W,不要懷疑MS4W就是mapserver,只是里面集成了一些其他的工具和庫,下載地址:http://www.maptools.org/ms4w/index.phtml?page=downloads.html下載zip就行。
2、將下載的zip解壓到硬盤,最好是根目錄,不然還要配置其他參數,很麻煩。

3、在dos窗口下執行ms4w文件夾下的apache-install.bat

4、打開瀏覽器 輸入http://localhost/或者http://127.0.0.1/ 將可以看到MS4W的首頁面。這樣mapserver就安裝成功了
5、測試mapserver是否支持WMS服務,使用DOS命令行進入MS4W的安裝路徑(如D:\ms4w\Apache\cgi-bin), 執行mapserv -v

6、下載安裝QGIS,地址:http://www.qgis.org/en/site/,QGIS為了生成mapserver要用的mapfile
7、安裝好后在插件>Manage Plugins下添加Mapserver Export插件

8、打開幾個shp圖層,右擊每個圖層,在屬性中設置使用oldsymbology,否則出錯

9、設置好后,導出mapfile文件,一般情況下這個文件不能直接用,需要配置一下,配置的方法自己百度吧
10.配好后在瀏覽器中輸入:http://192.168.1.100/cgi-bin/mapserv.exe?MAP=C:/ms4w/Apache/htdocs/map/ChinaBasint.map&LAYERS=ALL&MODE=MAP
就會出現下圖:

11、下一步就是把地圖嵌入到openlayers的框架內
將openlayers文件夾內的img,theme,OpenLayers.js三個文件復制到C:\ms4w\Apache\htdocs目錄下
這里內容很多,大家可以研究下openlayers自帶的例子,通過例子來學習
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <title>OpenLayers Buffer Example</title> <link rel="stylesheet" href="../theme/default/style.css" type="text/css"> <link rel="stylesheet" href="style.css" type="text/css"> <script src="../lib/OpenLayers.js"></script> <script type="text/javascript"> var lon = 0; var lat = 0; var zoom = 2; var map, layer; function init(){ map = new OpenLayers.Map( 'map' ); layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'}, {'buffer':0} ); map.addLayer(layer); layer = new OpenLayers.Layer.WMS( "1 buffer: OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'}, {'buffer':1} ); map.addLayer(layer); layer = new OpenLayers.Layer.WMS( "4 buffer: OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'}, {'buffer':4} ); map.addLayer(layer); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.setCenter(new OpenLayers.LonLat(lon, lat), zoom); } </script> </head> <body onload="init()"> <h1 id="title">Buffer Example</h1> <div id="tags"> buffer, performance, tile, light </div> <p id="shortdesc"> This example shows the use of the buffer layer option for any layer that inherits from OpenLayers.Layer.Grid. </p> <div id="map" class="smallmap"></div> <div id="docs"> Use the buffer property to control how many tiles are included outside the visible map area. Default is 0. </div> </body> </html>
上面是一個很簡單的例子,我們發布自己的地圖時,可以把下面的代碼段改一下就行了
layer = new OpenLayers.Layer.WMS( "0 buffer: OpenLayers WMS",
"http://vmap0.tiles.osgeo.org/wms/vmap0",
{layers: 'basic'}, {'buffer':0} );
下面是我的
Basint =new OpenLayers.Layer.WMS("盆地分布", "http://192.168.1.100/cgi-bin/mapserv.exe?",
{map:'C:/ms4w/Apache/htdocs/map/ChinaBasint.map',layers:'Basint',transparent: "true"} );
