geoserver实现注记边框
语法
我们可以使用了graphic-resize
来实现使用图形将标注文本完全包含起来,其语法是:
<VendorOption name="graphic-resize">stretch</VendorOption>
graphic-resize
可用参数如下:
none
:以其原始大小显示(默认值);proportional
:大小均匀增加以包含标注文本;stretch
:大小自适应增加以包含标签文本。
当使用了graphic-resize
时,还可以使用graphic-margin
来设置图形边距,如下:
<VendorOption name="graphic-margin">5</VendorOption>
例子
下面是一个示例:
<?xml version="1.0" encoding="GBK"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>test</Name>
<UserStyle>
<Title>A violet polygon style</Title>
<FeatureTypeStyle>
<Rule>
<Title>violet polygon</Title>
<PolygonSymbolizer>
<Stroke>
<CssParameter name="stroke">#000000</CssParameter>
<CssParameter name="stroke-width">0.5</CssParameter>
</Stroke>
</PolygonSymbolizer>
<TextSymbolizer>
<Label>
面积是:<ogc:PropertyName>MIAN_JI</ogc:PropertyName>公顷
</Label>
<Font>
<CssParameter name="font-family">Microsoft YaHei</CssParameter>
<CssParameter name="font-size">12</CssParameter>
<CssParameter name="font-style">normal</CssParameter>
<CssParameter name="font-weight">bold</CssParameter>
</Font>
<Fill>
<CssParameter name="fill">#990099</CssParameter>
</Fill>
<Graphic>
<Mark>
<WellKnownName>square</WellKnownName>
<Stroke>
<CssParameter name="stroke">#ff0000</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</Mark>
</Graphic>
<VendorOption name="graphic-resize">stretch</VendorOption>
<VendorOption name="graphic-margin">5</VendorOption>
</TextSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
上面的sld
中,我在TextSymbolizer
中先放置了一个标注(Label
),然后用Font
和Fill
来设置标注的文字属性。随后用Graphic
放了一个正方形,并设置了它的边界颜色和宽度;最后用graphic-resize
和graphic-margin
让这个图形将文字包起来。
最终结果如下: