CP-070-10 - TEXT PATH - Plantilla atributos y función
Ejemplo aplicando simbología con plantilla sobre atributo para mostrar textpath.
Texto montado a partir de una función.
by SIGC GUADALTEL
HTML
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/geosearchbylocation/geosearchbylocation.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/assets/css/mapea.ol.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/wfstcontrols/wfstcontrols.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/geosearch/geosearch.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/printer/printer.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/measurebar/measurebar.min.css">
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/streetview/streetview.min.css">
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/vendor/browser-polyfill.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/js/mapea.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/js/configuration.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/geosearchbylocation/geosearchbylocation.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/wfstcontrols/wfstcontrols.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/geosearch/geosearch.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/printer/printer.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/measurebar/measurebar.ol.min.js"></script>
<script src="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/attributetable/attributetable.ol.min.js"></script>
<link rel="stylesheet" href="https://sigc.desarrollo.guadaltel.es/mapea42_dev/plugins/attributetable/attributetable.min.css">
<div id="map"></div>
<button...
CSS
<style rel="stylesheet"> html,
body {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden;
}
JavaScript
// Caso de prueba
// 1.- Carga de capa WFS - Líneas
// 2.- Establece atributo "color" para usar como parámetro para color
// 3.- Establece path: true, para que el label salga alineado a lo largo de la línea del río
// 4.- Establece función para aplicar estilo de textpath (Nombre+longitud)
// 5.- Aplica estilo
// 6.- Probar aplicación estilo sin Path
//// CASO CAPA COMPLETA
// Descomentadno este caso se carga capa de ríos completa donde se aprecia que la aplicación del TextPath pierde sentido al haber tantos tramos
var mapajs = M.map({
'container': 'map',
"controls": ["layerswitcher", "mouse", "scale", "overviewmap", "panzoombar", "scaleline", ],
"getfeatureinfo": "plain"
});
let lines = new M.layer.WFS({
name: "Ríos",
url: "https://clientes.guadaltel.es/desarrollo/geossigc/wfs",
namespace: "mapea",
name: "mapb_hs1_100",
legend: "mapb_hs1_100",
getfeatureinfo: "plain",
geometry: 'LINE',
extract: true,
});
let linesSimp = new M.layer.WFS({
url: "https://clientes.guadaltel.es/desarrollo/geossigc/wfs",
namespace: "mapea",
name: "hs1_100_simplificada",
legend: "Ríos - Toponimia",
getfeatureinfo: "plain",
geometry: 'LINE',
extract: true,
});
lines.on(M.evt.LOAD, function() {
lines.getFeatures().forEach(function(line) {
line.setAttribute('color', 'blue')
})
});
let plantillaStyle = new M.style.Line({
stroke: {
color: 'rgba(255, 255, 0, 0)',
opacity: 0,
width: 0
},
label: {
text: function(feature) {
return (feature.getAttribute('nombre') + " -- " + feature.getAttribute('longitud')).toUpperCase()
},
color: 'blue',
path: true,
textoverflow: '',
rotate: true,
align: 'center'
}
});
let plantillaStyle2 = new M.style.Line({
stroke: {
color: 'rgba(0, 0 , 255, 0)',
width: 0
},
label: {
text: function(feature) {
return (feature.getAttribute('nombre') + " -- " + feature.getAttribute('longitud')).toUpperCase()
},
color: 'blue',
path:...