2016-08-17 1 views
5

Ich habe die aktuelle Einstellung hier: fully functional fiddle example und während ich es geschafft habe, auf jedes Polygon-Feature zu zoomen, möchte ich auch eine zentralisierte Textbeschriftung auf jedem ... die field_title Variable gefunden innerhalb der get_fields Methode. Ich habe keine Ahnung, wie ich das machen soll und all mein Googeln ist mit diesem Artikel entstanden: http://openlayers.org/en/v3.3.0/examples/vector-labels.html was ich total verwirrend finde, da ich ein wenig neu bei OL bin!Openlayers 3: Textbeschriftung zum Feature hinzufügen

+0

Könnten Sie den Animationsteil auf eine andere Frage verschieben? Es kann in dieser anfänglichen Verwirrung helfen. –

+0

@JonatasWalker haben getan. Vielen Dank. –

Antwort

9

Um einen Text zu ol.Feature fügen Sie die Beschreibung in Funktion speichern und set a style, die ein style function ist (das wird die Beschreibung der Funktion erhalten und es zeigt):

field_polygon.set('description', field_title); 
field_polygon.setStyle(styleFunction); 

function styleFunction() { 
    return [ 
    new ol.style.Style({ 
     fill: new ol.style.Fill({ 
     color: 'rgba(255,255,255,0.4)' 
     }), 
     stroke: new ol.style.Stroke({ 
     color: '#3399CC', 
     width: 1.25 
     }), 
     text: new ol.style.Text({ 
     font: '12px Calibri,sans-serif', 
     fill: new ol.style.Fill({ color: '#000' }), 
     stroke: new ol.style.Stroke({ 
      color: '#fff', width: 2 
     }), 
     // get the text from the feature - `this` is ol.Feature 
     // and show only under certain resolution 
     text: map.getView().getZoom() > 12 ? this.get('description') : '' 
     }) 
    }) 
    ]; 
} 

Your fiddle.

+0

Das ist brilliant! Vielen Dank! Wie würde ich den Text nur oberhalb einer bestimmten Zoomstufe anzeigen? –

+1

Siehe aktualisierte Antwort. 'map.getView(). getZoom()> 12? this.get ('description'): '' ' –

+0

Perfekt, danke! –