79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
var netgis = netgis || {};
|
|
|
|
//NOTE: https://portal.ogc.org/files/?artifact_id=22364 p. 53
|
|
|
|
netgis.SLD =
|
|
(
|
|
function ()
|
|
{
|
|
"use strict";
|
|
|
|
// Variables
|
|
|
|
// Methods
|
|
var read = function( data, client )
|
|
{
|
|
var parser = new DOMParser();
|
|
var xml = parser.parseFromString( data, "text/xml" );
|
|
|
|
var style = {};
|
|
|
|
// Layers
|
|
var layers = xml.getElementsByTagName( "NamedLayer" );
|
|
|
|
for ( var i = 0; i < layers.length; i++ )
|
|
{
|
|
var layer = layers[ i ];
|
|
var name = layer.getElementsByTagName( "se:Name" )[ 0 ].innerHTML;
|
|
|
|
console.info( "Layer:", name );
|
|
|
|
// Type Styles
|
|
var typestyles = layer.getElementsByTagName( "se:FeatureTypeStyle" );
|
|
|
|
for ( var j = 0; j < typestyles.length; j++ )
|
|
{
|
|
var typestyle = typestyles[ j ];
|
|
|
|
// Rules
|
|
var rules = typestyle.getElementsByTagName( "se:Rule" );
|
|
|
|
for ( var k = 0; k < rules.length; k++ )
|
|
{
|
|
var rule = rules[ k ];
|
|
var rulename = rule.getElementsByTagName( "se:Name" )[ 0 ].innerHTML;
|
|
|
|
console.info( "Rule:", rulename );
|
|
|
|
// Polygon Symbolizer
|
|
var polysymbol = rule.getElementsByTagName( "se:PolygonSymbolizer" )[ 0 ];
|
|
var polyfill = polysymbol.getElementsByTagName( "se:Fill" )[ 0 ];
|
|
var polystroke = polysymbol.getElementsByTagName( "se:Stroke" )[ 0 ];
|
|
|
|
style[ "polygon" ] =
|
|
{
|
|
//fill: polyfill.getElementsByTagName( "se:SvgParameter" )
|
|
fill: polyfill.querySelector( "[name='fill']" ).innerHTML,
|
|
stroke: polystroke.querySelector( "[name='stroke']" ).innerHTML,
|
|
strokeWidth: Number.parseFloat( polystroke.querySelector( "[name='stroke-width']" ).innerHTML )
|
|
};
|
|
}
|
|
}
|
|
}
|
|
|
|
console.info( "SLD:", style );
|
|
|
|
client.invoke( netgis.Events.MAP_UPDATE_STYLE, style );
|
|
|
|
return style;
|
|
};
|
|
|
|
// Public Interface
|
|
var iface =
|
|
{
|
|
read: read
|
|
};
|
|
|
|
return iface;
|
|
}
|
|
)(); |