Geoserver点图层设置SVG图标显示不全问题记录

一、问题。Geoserver点图层配置SLD样式,ExternalGraphic设置SVG图标时,有些图标在地图上显示时,会显示不全或不显示。
如下图所示:


SVG图标如下:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 84 84" style="enable-background:new 0 0 84 84;" xml:space="preserve">
<style type="text/css">
    .st0{fill:none;stroke:#FFF;stroke-width:3;stroke-miterlimit:3;}
    .st30{fill:#FFF;stroke:#FFF;stroke-width:3;stroke-miterlimit:0;}
</style>
<line class="st30" x1="42" y1="42" x2="42" y2="4"/>
<!-- cricle R62  -->
<circle class="st0" cx="42" cy="62" r="20"/>
</svg>


二、解决。后经过分析验证SVG图标显示不全由两个问题引起:

1、图标长宽比差别太大(比如20*8就不行,具体多少没验证,自己试验);

2、图标长宽一样但太大(比如500*500就不行,具体多少没验证,自己试验)。

问题1解决办法就是把长宽设置为一样,然后把图形居中即可。

问题2只想了个取巧解决方案,即在图标对角线加两个无法查觉的小点,如下SVG图标所示:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
     viewBox="0 0 84 84" style="enable-background:new 0 0 84 84;" xml:space="preserve">
<style type="text/css">
    .st0{fill:none;stroke:#FFF;stroke-width:3;stroke-miterlimit:3;}
    .st30{fill:#FFF;stroke:#FFF;stroke-width:3;stroke-miterlimit:0;}
</style>
<circle class="st0" cx="0" cy="0" r="0.000001"/>
<circle class="st0" cx="84" cy="84" r="0.000001"/>
<line class="st30" x1="42" y1="42" x2="42" y2="4"/>
<!-- cricle R62  -->
<circle class="st0" cx="42" cy="62" r="20"/>
</svg>


新图标在地图上正常显示如下图所示:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值