2016-04-20 22 views
1

Auf GeoServer erhalte ich eine Layergruppe als Basislayer, um die Karte anzuzeigen. base_osmOpenlayers Name der Straße rotieren

Und eine Schicht enthält Straßennamen. Ich bekomme das mit Openlayers. map

Jetzt möchte ich Straßennamen 180 Grad drehen. Ich versuche, einige Lösungen zu finden, aber nichts (vielleicht in die falsche Richtung) zu bekommen ... Würden Sie mir einen Rat oder eine Lösung geben? Mein Englisch ist nicht gut, hoffe du bekommst was ich ausdrücken möchte. Danke !!!

<script type="text/javascript"> 
var map; 
function init() { 
    var proj = new OpenLayers.Projection("EPSG:4326"); 

    var bounds = new OpenLayers.Bounds(103.598434448242, 1.24977505207062, 
      103.993843078613, 1.48103499412537); 
    var options = { 
     controls : [ new OpenLayers.Control.Navigation(), 
       new OpenLayers.Control.PanZoom(), 
       new OpenLayers.Control.ArgParser(), 
       new OpenLayers.Control.Attribution(), 
       new OpenLayers.Control.MousePosition(), 
       new OpenLayers.Control.LayerSwitcher({displayProjection : new OpenLayers.Projection("EPSG:4326")}),], 
     maxExtent : bounds, 
     projection : proj, 
     displayProjection : proj, 
     units : 'degrees' 
    }; 

    map = new OpenLayers.Map('ol-map', options); 

    var tiled = new OpenLayers.Layer.WMS("test_osm", 
      "http://localhost:8088/geoserver/osm/wms" 
      , { 
       LAYERS : 'osm:base_osm', 
       STYLES : '', 
       format : 'image/png', 
       tiled : true, 
      }, { 
       buffer : 0, 
       displayOutsideMaxExtent : true, 
       isBaseLayer : true, 

      }); 
    map.addLayer(tiled); 

    var tiled2 = new OpenLayers.Layer.WMS("test_osm2", 
      "http://localhost:8088/geoserver/osm/wms" 
      , { 
       LAYERS : "osm:highway-label", 
       transparent: true, 
       STYLES : '', 
       format : "image/svg+xml", 
       tiled : true, 
       transparent : true, 
      }, { 
       buffer : 0, 
       displayOutsideMaxExtent : true, 
       isBaseLayer : false, 
      }); 
    map.addLayer(tiled2); 
    map.zoomToMaxExtent(); 
} 

Die oben meinen Code ist, dass ich die Karte bekommen, ich habe keine Ahnung, für den nächsten Schritt ...

+1

Bitte einen Code schreiben –

+0

warum tun Sie dies tun wollen? kann http://docs.geoserver.org/latest/en/user/services/wms/vendor.html#angle helfen? –

+0

Wenn die Karte zum Beispiel um 180 Grad gedreht wird, wird der Name einer horizontalen Straße auf den Kopf gestellt. Ich möchte den Straßennamen entsprechend den normalen Lesegewohnheiten eingeben. –

Antwort

0

ich auch Methoden wie accordingLineString für Satz Textstil zu finden versucht haben. Nur so kann ich gefunden habe, berechnen Sie Ihre rotation für Straße und setzen Textstil:

text: new ol.style.Text({ rotation: 0.3 //your styles })

look this question

+0

Zunächst einmal vielen Dank für Ihre Hilfe! –

+0

In dieser Frage scheint es, dass ich den Stil wie der Stil auf GeoServer für die Autobahn-Label (Name des Straßennamensschicht) in js definieren muss, und fügen Sie die Rotation hinzu? –

+0

Ja, Sie sollten die Stile für feure definieren. google für Beispiele oder schau auf http://openlayers.org/ – Nurlan

0

Ihre Etiketten sind serverseitige gemacht, also gibt es nichts, was man Client-Seite tun können (unter Verwendung von Openlayers), um die Darstellung von Beschriftungen zu ändern.

Sie sollten den Stil (SLD) bearbeiten, der von der Osm: Highway-Label-Ebene verwendet wird.

können Sie gute Beispiele finden hier http://docs.geoserver.org/latest/en/user/styling/sld-cookbook/lines.html

aber ich denke, Sie für die Etiketten Rotation Config suchen, erklärte hier http://docs.geoserver.org/latest/en/user/styling/sld-reference/labeling.html#rotation