使用Openlayers和GEOServer显示功能名称

时间:2012-07-27 18:04:04

标签: openlayers geoserver

我正在尝试在加载时在地图中显示要素名称(例如:建筑物的名称)。

我们如何使用 GeoServer OpenLayers 中显示此内容。

谢谢, 阿肖克

2 个答案:

答案 0 :(得分:0)

您需要使用geoserver中的样式为要素定义TextSymbolizer。转到geoserver admin - >样式 - >添加新样式。

按如下方式添加TextSymblolizer

<sld:NamedLayer xmlns:sld="http://www.opengis.net/sld"
    xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">
    <sld:UserStyle>
        <sld:Name>layer_name</sld:Name>
        <sld:Title>layer_title</sld:Title>
        <sld:Abstract/>
        <sld:FeatureTypeStyle>
            <sld:FeatureTypeName>Feature</sld:FeatureTypeName>

            <sld:Rule>
                <sld:Name>rule01</sld:Name>                             
                <sld:TextSymbolizer>
                    <sld:Label>
                        <ogc:PropertyName>feature_name</ogc:PropertyName>
                    </sld:Label>
                    <sld:Font>
                      <sld:CssParameter name="font-family">Arial</sld:CssParameter>
                      <sld:CssParameter name="font-style">Normal</sld:CssParameter>
                      <sld:CssParameter name="font-size">12</sld:CssParameter>
                    </sld:Font>


                    <sld:LabelPlacement>
                        <sld:PointPlacement>
                        <sld:AnchorPoint>
                            <sld:AnchorPointX>
                                0.5
                            </sld:AnchorPointX>
                            <sld:AnchorPointY>
                                0.5
                            </sld:AnchorPointY>
                        </sld:AnchorPoint>
                        </sld:PointPlacement>
                    </sld:LabelPlacement>            
                </sld:TextSymbolizer>
            </sld:Rule>
        </sld:FeatureTypeStyle>
    </sld:UserStyle>
</sld:NamedLayer>

在标签内定义需要显示其值的功能。 接下来将给定图层与此样式相关联,更新并重新加载。

答案 1 :(得分:0)

如果您使用的是WMS图层,请尝试使用SLD styles。但是,如果您使用的是矢量图层,则必须使用OpenLayers StyleMap to label your features,试试这个

var style = new OpenLayers.StyleMap({
    default :new OpenLayers.Style({
          'label': '${feature_attr}'
    })
})