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:ms4wApachecgi-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:ms4wApachehtdocs目录下
这里内容很多,大家可以研究下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"} );