geoserver+openlayer
早在二月份就接触到了geoserver,当时只是将自己转出的数据(postgre+postgis)存储。而geoserver则只是做一个大概的图形化检查工具。后来发现了c/s模式的开源软件qgis,就暂时把geoserver放在了一边。
这两天不停的折腾geoserver。当时只是成功的改写了sld,现在还没有找到当时写的文档,有空补起来。
今天想做的一个功能就是将几个layer叠加显示。
首
先就是将geoserver生成的地图载入就出现了问题,不知道如何将wms载入进openlayer的layer对象,openlayer的说明文档又
实在是少的可怜。就看着那个api在哪里傻傻发呆。由于自己的机器只能上少数网站,在openlayer网站上下载的例子又基本不能看。所以很是郁闷。
后来查了很多资料,发现每个人说的都只是自己做对的部分,并没有什么解释。尤其是生成layer对象,解释实在是太少了。
没有办法,只有把geoserver的例图打开,然后在那个wms页面上,点击查看源代码,这样才知道如何生成一个从geoserver出来的wms
这两天不停的折腾geoserver。当时只是成功的改写了sld,现在还没有找到当时写的文档,有空补起来。
今天想做的一个功能就是将几个layer叠加显示。
首
先就是将geoserver生成的地图载入就出现了问题,不知道如何将wms载入进openlayer的layer对象,openlayer的说明文档又
实在是少的可怜。就看着那个api在哪里傻傻发呆。由于自己的机器只能上少数网站,在openlayer网站上下载的例子又基本不能看。所以很是郁闷。
后来查了很多资料,发现每个人说的都只是自己做对的部分,并没有什么解释。尤其是生成layer对象,解释实在是太少了。
没有办法,只有把geoserver的例图打开,然后在那个wms页面上,点击查看源代码,这样才知道如何生成一个从geoserver出来的wms
- tiled = new OpenLayers.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}
- );
这里面,“topp:road – Tiled”只是这个wms图层的名称而已,“http://gttest:8080/geoserver/wms”对应的是wms的服务器
layers: ‘topp:road’,这个才是要加载的图层。topp是图层所在的命名空间。其他参数还是比较容易明白。但tiled不知道是什么意思,在openlayer参数里面,有tiled和untiled两种layer。具体的意思不是太明白。
但是在map.addLayer时候,好像tiled的加不进去。tiled图层只能addLayers,以数组形式传入。
map.addLayer(untiled);
然后就是加入openlayer的控件。
- map.addControl(new OpenLayers.Control.PanZoomBar());
- map.addControl(new OpenLayers.Control.Navigation());
- map.addControl(new OpenLayers.Control.Scale($(‘scale’)));
- map.addControl(new OpenLayers.Control.MousePosition({element: $(‘location’)}));
- map.addControl(new OpenLayers.Control.LayerSwitcher());
- map.addControl(new OpenLayers.Control.NavToolbar());
- map.addControl(new OpenLayers.Control.OverviewMap());
- map.zoomToExtent(bounds);
最后一句就是缩放到一个范围。
以前做的gis项目都是c/s模式,不管是c#+arcgis还是现在的c+++postgresql+postgis+qgis,没有涉及到网络。
今天浏览生成的wms,也还是很慢。应该是服务器配置问题。在webgis这方面自己还很空白,需要多花时间学习。只是现在项目和这无关。只有先快点把其他的话干完,有空过来学习学习。
转载自:https://blog.csdn.net/xbt746/article/details/2778116