openlayers - Geoserver Sld 无法正常工作

标签 openlayers gis geoserver sld

我使用 Geoserver 并使用 SLD 作为我的图层

我的 sld 文件是

<?xml version="1.0" encoding="UTF-8"?><sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" version="1.0.0">
  <sld:NamedLayer>
    <sld:Name>Default Styler</sld:Name>
    <sld:UserStyle>
      <sld:Name>Default Styler</sld:Name>
      <sld:FeatureTypeStyle>
        <sld:Name>name</sld:Name>
        <sld:Rule>
          <sld:Name>Without Label</sld:Name>
          <sld:MinScaleDenominator>10000.0</sld:MinScaleDenominator>
          <sld:MaxScaleDenominator>70000.0</sld:MaxScaleDenominator>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:Mark>
                <sld:WellKnownName>circle</sld:WellKnownName>
                <sld:Fill>
                  <sld:CssParameter name="fill">#CC3300</sld:CssParameter>
                </sld:Fill>
              </sld:Mark>
              <sld:Size>8</sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
        </sld:Rule>
        <sld:Rule>
          <sld:Name>With Label</sld:Name>
          <sld:MaxScaleDenominator>10000.0</sld:MaxScaleDenominator>
          <sld:PointSymbolizer>
            <sld:Graphic>
              <sld:Mark>
                <sld:WellKnownName>circle</sld:WellKnownName>
                <sld:Fill>
                  <sld:CssParameter name="fill">#CC3300</sld:CssParameter>
                </sld:Fill>
              </sld:Mark>
              <sld:Size>12</sld:Size>
            </sld:Graphic>
          </sld:PointSymbolizer>
          <sld:TextSymbolizer>
            <sld:Label>
              <ogc:PropertyName>str_name</ogc:PropertyName>
            </sld:Label>
            <sld:Font>
              <sld:CssParameter name="font-family">Times</sld:CssParameter>
              <sld:CssParameter name="font-size">14</sld:CssParameter>
              <sld:CssParameter name="font-style">normal</sld:CssParameter>
              <sld:CssParameter name="font-weight">bold</sld:CssParameter>
            </sld:Font>
            <sld:LabelPlacement>
              <sld:PointPlacement>
                <sld:AnchorPoint>
                  <sld:AnchorPointX>0.5</sld:AnchorPointX>
                  <sld:AnchorPointY>0.0</sld:AnchorPointY>
                </sld:AnchorPoint>
                <sld:Displacement>
                  <sld:DisplacementX>0</sld:DisplacementX>
                  <sld:DisplacementY>5</sld:DisplacementY>
                </sld:Displacement>
              </sld:PointPlacement>
            </sld:LabelPlacement>
            <sld:Fill>
              <sld:CssParameter name="fill">#CC0000</sld:CssParameter>
            </sld:Fill>
          </sld:TextSymbolizer>
        </sld:Rule>
      </sld:FeatureTypeStyle>
    </sld:UserStyle>
  </sld:NamedLayer>
</sld:StyledLayerDescriptor>

但有时点的标签会交替显示/隐藏。例如

缩放16

enter image description here

缩放17

enter image description here

缩放18

enter image description here

这个场景和我的SLD不一样。有人可以帮助我吗?

最佳答案

你的 map 是平铺的吗?如果是这样,标签可能会消失,因为它们跨越了图 block 边界(因为代码无法可靠地预测标签的其他部分是否会显示在附近的图 block 中)。

关于openlayers - Geoserver Sld 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23783777/

相关文章:

postgresql - Geoserver - 如何绘制代表两点之间大圆的测地线

algorithm - 将附近的点与路径相关联

javascript - 需要 Openlayers 指南来满足我的要求

kubernetes - 使用Kubernetes调整资源以进行GIS应用

javascript - 如何使用 Angular 从用户那里检索地理位置

svg - 如何在OpenLayers-3中将SVG图像用作 map 标记?

firefox - 使用 OpenLayers 和自己的 OSM 服务器的 Firefox 中 map 图 block 不显示(全粉红色)

javascript - 尝试导航到另一个页面时 IE7 和 IE8 中出现 "Stop running this script"错误

gis - 具有重叠多边形的 Shapefile : calculate average values

java - 无法使用 geoTools 获取 FeaturesCollection 中的内容