2017-02-02 83 views
1

我是geoserver和sld的新手。我在我的OSM基礎層上有2層。一個用於創建熱圖,另一個用於標籤。我的熱圖和基礎圖層渲染正常,但標籤文本未顯示在開放層中。當我在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

通過加入預定的邊界點解決類似的問題(如錨點)到我的數據庫,然後將這些點geoserver作爲我的b ounding箱:

  • 創建4個點(例如:北,南,東,西),這將定義一個框大到足以滿足您的所有數據的可視化的內部。
  • 在geoadmin找到您的圖層bounding box並選擇從數據計算。
  • 在您的sld中,您可以定義一個規則以使這些邊界點不可見。

重新計算地理服務器將在任何投影中顯示您的數據的邊界框。

1

通過改變投影固定它:

enter image description here