1 问题1:styles引用外部图片不显示的问题
具体参考博客geoserver中styles引用外部png图片不显示问题解决即可,讲解的很详细。操作关键点,先基于系统内置的样式生成一个对应的模板,然后将<Graphic>
标签内的内容替换即可,这里需要补充的一点是:可以添加<Size>
标签用以控制图片的大小。
然后将外部图片放置\data_dir\workspaces\【工作组名称】\styles\
下即可,这也是解决外部图片不显示的关键操作。
2 问题2:图层的中文标注显示为乱码
- 点击【数据】下的【数据存储】选项,然后单击创建的数据存储名称,这里为命名时
zy
。
- 然后在【DBF文件的字符集】的下拉框选项中选择【GBK】即可解决图层标注中文乱码的问题。
3 问题3:Openlayers无法加载我们发布的WMS服务
通过浏览器控制台发现是跨域
问题,具体如下图所示。
解决方法:修改GeoServer的配置文件,并重启GeoServer。
-
打开
C:\geoserver-版本号\webapps\geoserver\WEB-INF
文件下的web.xml
文件。 -
搜索关键字
enable CORS
关键字,会发现有3处搜索结果,将第1处和第3处的注释内容取消注释即可。推荐将末尾的-->
移至文字注释行即可,简单方便。<!-- Uncomment following filter to enable CORS in Jetty. Do not forget the second config block further down. --> <filter> <filter-name>cross-origin</filter-name> <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class> <init-param> <param-name>chainPreflight</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>allowedOrigins</param-name> <param-value>*</param-value> </init-param> <init-param> <param-name>allowedMethods</param-name> <param-value>GET,POST,PUT,DELETE,HEAD,OPTIONS</param-value> </init-param> <init-param> <param-name>allowedHeaders</param-name> <param-value>*</param-value> </init-param> </filter> <!-- Uncomment following filter to enable CORS--> <filter-mapping> <filter-name>cross-origin</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
-
重启GeoServer,即关闭命令行窗口,重新打开
bin
目录下的startup.bat
即可。
注:另外,我们在加载服务例如使用Openlayers定义图层时,需要添加
crossOrigin: 'anonymous'
配置,这样便可以彻底解决跨域问题。详见3-Openlayers加载GeoServer发布的WMS服务一文的例子。