[Gfoss] Openlayers 4: labeling

Salve, sto andando un po' in confusione e mi servirebbe una mano, forse la
problematica è banale ed evidentemente c'è qualcosa che mi sfugge. Premetto
che sono abituato ad usare Leaflet in cui labeling ed applicazione degli
stili è un po' più semplice.

Ho alcuni vettori appartenenti a tutte e tre le primitive geometriche che
devo far comparire in una webmap. Sono riuscito a caricarli come GeoJson e
ad applicare il tematismo che mi interessa anche usando il reverse
engineering da una webmap esportata da qgis2web.

Prendiamo il caso generico dello stradario, il cui codice per lo stile è
questo:

/var stradarioStyle = function(feature, resolution){
    var value = '';
    if ("" !== null) {
        labelText = String("");
    }
        function stradarioStyle_settings(feature, value) {
            var context = {
                feature: feature,
                variables: {}
            };
            if (stradario_stradeprovinciali(context)) {
                      return [ new ol.style.Style({
        stroke: new ol.style.Stroke({color: '#d67800', lineDash: null,
lineCap: 'round', lineJoin: 'miter', width: 20}),
    })];
                    }
                    else if (stradario_stradecomunali(context)) {
                      return [ new ol.style.Style({
        stroke: new ol.style.Stroke({color: '#fff', lineDash: null, lineCap:
'round', lineJoin: 'miter', width: 20}),
    })];
                    }
                    else if (stradario_straderurali(context)) {
                      return [ new ol.style.Style({
        stroke: new ol.style.Stroke({color: '#4b280e)', lineDash: null,
lineCap: 'round', lineJoin: 'miter', width: 20}),
    })];

                    }
        }
        var style = stradarioStyle_settings(feature, value);
        ;
    return style;
};/

Se in /labelText =/ aggiungo /feature.get('toponimo')/ al posto di quello
che c'è ora per far comparire nome della strada, il risultato è che non
accade nulla. Ho provato pure a dare uno sguardo qui[0] ma non mi è stato
molto d'aiuto.
Sapreste darmi qualche indicazione?

__________
[0] https://openlayers.org/en/latest/examples/vector-labels.html

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Soluzione trovata
Dovevo sostituire a:
/ if ("" !== null) {
        labelText = String("");
    } /
Questo:
/ if (feature.get("toponimo") !== null) {
        labelText = String(feature.get("toponimo"));
    }/

Ora non mi resta che capire come giocare con zIndex per fare in modo che i
nomi siano sempre in primo piano. Se avete consigli sono tutto occhi :slight_smile:

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/

Il problema sembrava risolto ma non era così...
Ho cambiato strategia:

/var toponimi_igm_geoportaleStyle = new ol.style.Style({
                                       image: new ol.style.Circle({
                                             radius: 1,
                                             fill: new ol.style.Fill({color:
'rgba(99, 90, 90, 1.0)'}),
                                             stroke: new
ol.style.Stroke({color: '#000', width: 2}),
                                            }),
                                       text: new ol.style.Text({
                                             text: feature.get('toponimo'),
                                             font: '12px
Calibri,sans-serif',
                                             fill: new ol.style.Fill({color:
'#000'}),
                                             stroke: new
ol.style.Stroke({color: '#fff', width: 3}),
                                         })
                                      });/

Questo è un altro vettore che devo rappresentare. Il risultato però è
"ReferenceError: feature is not defined 181:46". La riga di riferimento
dell'errore è "text: new ol.style.Text" e la colonna è quella prima di
"new".

Ho usato la documentazione ufficiale[0] per ol.style.Text ed ho inserito
feature.get('toponimo') in text con questo risoltato. Se a
feature.get('toponimo') sostituisco 'ciao' la label compare su tutti i punti
e non ho errori. A me però serve che compaia il dato contenuto in toponimo!
:frowning:

________________
[0] https://openlayers.org/en/latest/apidoc/ol.style.Text.html

-----
Ingegnere, consulente GIS e ciclista urbano
--
Sent from: http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/