2017-02-02 19 views
1

Я новичок в geoserver и sld. У меня есть 2 слоя поверх базового слоя OSM. Один для создания тепловой карты и один для этикетки. Мой тепловой слой и базовый слой отлично обрабатываются, но текст ярлыка не отображается в openlayers. Когда я просматриваю его в geoserver, он отображается нормально, но когда я пытаюсь отобразить его в javascript, он отображается только при уменьшении. Кажется, я ничего не могу найти в Интернете по этой проблеме.Geoserver 2.10 Openlayers 3 Метка TextSymbolizer не отображается

Вот SLD:

<FeatureTypeStyle> 
     <Rule> 
      <Name>AQI text</Name> 
      <Title>AQI Text</Title> 
      <Abstract>AQI information</Abstract> 
      <TextSymbolizer> 
       <label> 
        <ogc:PropertyName>aqi</ogc:PropertyName> 
      </label> 
     </TextSymbolizer> 
     </Rule> 
     </FeatureTypeStyle> 

Вот снимок предварительного просмотра на GeoServer:

enter image description here

Вот Javascript OpenLayers код:

var londonLonLat = [-0.118092, 51.509865]; 
    var londonWebMercator = ol.proj.fromLonLat(londonLonLat); 

    var layers = [ 
     new ol.layer.Tile({ 
      source: new ol.source.OSM() 
     }), 
     new ol.layer.Image({ 
      //extent: [-13884991, 2870341, -7455066, 6338219], 
      source: new ol.source.ImageWMS({ 
      url: 'http://159.203.81.20:8080/geoserver/wms', 
      params: {'LAYERS': 'tiger:shapefile'}, 
      serverType: 'geoserver' 
      }) 
     }), 

     new ol.layer.Image({ 
      //extent: [-13884991, 2870341, -7455066, 6338219], 
      source: new ol.source.ImageWMS({ 
      url: 'http://159.203.81.20:8080/geoserver/wms', 
      params: {'LAYERS': 'test2:test_text_layer'}, 
      serverType: 'geoserver' 
      }) 
     }) 
     ]; 
     var map = new ol.Map({ 
     layers: layers, 
     target: 'map', 
     view: new ol.View({ 
      center: londonWebMercator, 
      zoom: 10 
     }) 
     }); 

Здесь представляет собой снимок страницы:

enter image description here

Вот снимок на Уменьшить:

enter image description here

+0

Эй, @Wiredo, позаботьтесь, чтобы принять один из ответов здесь? :) –

+0

ОК. Я действительно придумал другой ответ, который решил проблему, но выбрал ваш, поскольку у вас есть альтернативное и более подробное решение – Wiredo

ответ

1

решаемые подобную проблему путем добавления предопределенных точек ограничивающих (например, якоря) в мою базу данных, а затем загрузите эти точки в геосервере, как мой b ounding коробка:

  • Создать 4 балла (например: север, юг, восток, запад), который будет определять ящик достаточно большой, чтобы соответствовать все визуализации ваших данных внутри.
  • В geoadmin найдите свои слои bounding box и выберите вычисление из данных.
  • В вашем sld вы можете определить правило, чтобы эти ограничивающие точки были невидимыми.

Это пересчитывает ограничительную рамку, в которой геосервер отобразит ваши данные в любой проекции.