早在二月份就接触到了geoserver,当时只是将自己转出的数据(postgre+postgis)存储。而geoserver则只是做一个大概的图形化检查工具。后来发现了c/s模式的开源软件qgis,就暂时把geoserver放在了一边。
这两天不停的折腾geoserver。当时只是成功的改写了sld,现在还没有找到当时写的文档,有空补起来。
今天想做的一个功能就是将几个layer叠加显示。
首 先就是将geoserver生成的地图载入就出现了问题,不知道如何将wms载入进openlayer的layer对象,openlayer的说明文档又 实在是少的可怜。就看着那个api在哪里傻傻发呆。由于自己的机器只能上少数网站,在openlayer网站上下载的例子又基本不能看。所以很是郁闷。
后来查了很多资料,发现每个人说的都只是自己做对的部分,并没有什么解释。尤其是生成layer对象,解释实在是太少了。
没有办法,只有把geoserver的例图打开,然后在那个wms页面上,点击查看源代码,这样才知道如何生成一个从geoserver出来的wms
这里面,
"topp:road-Tiled"只是这个wms图层的名称而已,
"http://gttest:8080/geoserver/wms"对应的是wms的服务器这两天不停的折腾geoserver。当时只是成功的改写了sld,现在还没有找到当时写的文档,有空补起来。
今天想做的一个功能就是将几个layer叠加显示。
首 先就是将geoserver生成的地图载入就出现了问题,不知道如何将wms载入进openlayer的layer对象,openlayer的说明文档又 实在是少的可怜。就看着那个api在哪里傻傻发呆。由于自己的机器只能上少数网站,在openlayer网站上下载的例子又基本不能看。所以很是郁闷。
后来查了很多资料,发现每个人说的都只是自己做对的部分,并没有什么解释。尤其是生成layer对象,解释实在是太少了。
没有办法,只有把geoserver的例图打开,然后在那个wms页面上,点击查看源代码,这样才知道如何生成一个从geoserver出来的wms
- tiled=newOpenLayers.Layer.WMS(
- "topp:road-Tiled","http://gttest:8080/geoserver/wms",
- {
- srs:'EPSG:4312',
- width:'800',
- styles:'',
- height:'418',
- layers:'topp:road',
- format:'image/png',
- tiled:'true',
- tilesOrigin:"108.14681672590744,28.957956039271213"
- },
- {buffer:10000}
- );
layers: 'topp:road' ,这个才是要加载的图层。topp是图层所在的命名空间。其他参数还是比较容易明白。但tiled不知道是什么意思,在openlayer参数里面,有tiled和untiled两种layer。具体的意思不是太明白。
但是在map.addLayer时候,好像tiled的加不进去。tiled图层只能addLayers,以数组形式传入。
map.addLayer(untiled);
然后就是加入openlayer的控件。
- map.addControl(newOpenLayers.Control.PanZoomBar());
- map.addControl(newOpenLayers.Control.Navigation());
- map.addControl(newOpenLayers.Control.Scale($('scale')));
- map.addControl(newOpenLayers.Control.MousePosition({element:$('location')}));
- map.addControl(newOpenLayers.Control.LayerSwitcher());
- map.addControl(newOpenLayers.Control.NavToolbar());
- map.addControl(newOpenLayers.Control.OverviewMap());
- map.zoomToExtent(bounds);