Netgis client update
* adds new version to sources
This commit is contained in:
@@ -0,0 +1,237 @@
|
||||
var netgis = netgis || {};
|
||||
|
||||
netgis.OWS =
|
||||
(
|
||||
function ()
|
||||
{
|
||||
"use strict";
|
||||
|
||||
// Variables
|
||||
|
||||
// Methods
|
||||
var read = function( json, client )
|
||||
{
|
||||
var config =
|
||||
{
|
||||
layers: [],
|
||||
folders: []
|
||||
};
|
||||
|
||||
// Properties
|
||||
if ( netgis.util.isDefined( json.properties ) )
|
||||
{
|
||||
// BBox
|
||||
var bbox = json.properties.bbox;
|
||||
|
||||
/*if ( netgis.util.isDefined( bbox ) )
|
||||
{
|
||||
client.invoke( netgis.Events.MAP_SET_EXTENT, { minx: bbox[ 0 ], miny: bbox[ 1 ], maxx: bbox[ 2 ], maxy: bbox[ 3 ] } );
|
||||
}*/
|
||||
|
||||
config.bbox = bbox;
|
||||
}
|
||||
|
||||
// Folders
|
||||
var features = json.features;
|
||||
|
||||
for ( var i = 0; i < features.length; i++ )
|
||||
{
|
||||
var feature = features[ i ];
|
||||
|
||||
if ( feature.type === "Feature" )
|
||||
{
|
||||
// Feature Properties
|
||||
var props = feature.properties;
|
||||
var path = props.folder;
|
||||
|
||||
// Check Existing
|
||||
var found = false;
|
||||
|
||||
for ( var f = 0; f < config.folders.length; f++ )
|
||||
{
|
||||
if ( config.folders[ f ].id === path )
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( found ) continue;
|
||||
|
||||
// Path Parts
|
||||
var partsRaw = path.split( "/" );
|
||||
var parts = [];
|
||||
|
||||
for ( var p = 0; p < partsRaw.length; p++ )
|
||||
{
|
||||
var part = partsRaw[ p ];
|
||||
if ( part.length > 0 ) parts.push( part );
|
||||
}
|
||||
|
||||
// Find Parent
|
||||
var parent = -1;
|
||||
|
||||
for ( var p = 0; p < parts.length; p++ )
|
||||
{
|
||||
var part = parts[ p ];
|
||||
var partpath = "/" + parts.slice( 0, p + 1 ).join( "/" );
|
||||
|
||||
// Existing Folder
|
||||
var exists = false;
|
||||
|
||||
for ( var f = 0; f < config.folders.length; f++ )
|
||||
{
|
||||
if ( config.folders[ f ].path === partpath )
|
||||
{
|
||||
parent = f;
|
||||
exists = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( exists ) continue;
|
||||
|
||||
// Create New Folder
|
||||
var index = config.folders.length;
|
||||
|
||||
config.folders.push
|
||||
(
|
||||
{
|
||||
title: part,
|
||||
parent: parent,
|
||||
path: partpath
|
||||
}
|
||||
);
|
||||
|
||||
parent = index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Features / Layers
|
||||
for ( var i = 0; i < features.length; i++ )
|
||||
{
|
||||
var feature = features[ i ];
|
||||
|
||||
if ( feature.type === "Feature" )
|
||||
{
|
||||
//TODO: refactor to read feature function
|
||||
|
||||
// Feature Properties
|
||||
var props = feature.properties;
|
||||
|
||||
// Folder
|
||||
var folderIndex = -1;
|
||||
|
||||
for ( var f = 0; f < config.folders.length; f++ )
|
||||
{
|
||||
if ( config.folders[ f ].path === props.folder )
|
||||
{
|
||||
folderIndex = f;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Offerings
|
||||
var offers = props.offerings;
|
||||
|
||||
for ( var o = 0; o < offers.length; o++ )
|
||||
{
|
||||
var offer = offers[ o ];
|
||||
|
||||
// Operationos
|
||||
var ops = offer.operations;
|
||||
|
||||
// Types
|
||||
switch ( offer.code )
|
||||
{
|
||||
// WMS
|
||||
case "http://www.opengis.net/spec/owc-geojson/1.0/req/wms":
|
||||
{
|
||||
var getCaps = ops[ 0 ];
|
||||
var url = getCaps.href;
|
||||
|
||||
config.layers.push
|
||||
(
|
||||
{
|
||||
folder: folderIndex,
|
||||
type: netgis.LayerTypes.WMS,
|
||||
url: url,
|
||||
title: props.title,
|
||||
attribution: props.rights,
|
||||
active: props.active
|
||||
}
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// XYZ
|
||||
case "http://www.opengis.net/spec/owc-geojson/1.0/req/xyz":
|
||||
{
|
||||
var getTile = ops[ 0 ];
|
||||
|
||||
config.layers.push
|
||||
(
|
||||
{
|
||||
folder: folderIndex,
|
||||
type: netgis.LayerTypes.XYZ,
|
||||
url: getTile.href,
|
||||
title: props.title,
|
||||
attribution: props.rights,
|
||||
active: props.active
|
||||
}
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// OSM / XYZ
|
||||
case "http://www.opengis.net/spec/owc-geojson/1.0/req/osm":
|
||||
{
|
||||
// Operations
|
||||
/*for ( var oi = 0; oi < ops.length; oi++ )
|
||||
{
|
||||
var op = ops[ oi ];
|
||||
|
||||
switch ( op.code )
|
||||
{
|
||||
case ""
|
||||
}
|
||||
}*/
|
||||
|
||||
var getTile = ops[ 0 ];
|
||||
|
||||
config.layers.push
|
||||
(
|
||||
{
|
||||
folder: folderIndex,
|
||||
type: netgis.LayerTypes.XYZ,
|
||||
url: getTile.href,
|
||||
title: props.title,
|
||||
attribution: props.rights,
|
||||
active: props.active
|
||||
}
|
||||
);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} // end for each feature
|
||||
|
||||
client.invoke( netgis.Events.CONTEXT_UPDATE, config );
|
||||
};
|
||||
|
||||
// Public Interface
|
||||
var iface =
|
||||
{
|
||||
read: read
|
||||
};
|
||||
|
||||
return iface;
|
||||
}
|
||||
)();
|
||||
Reference in New Issue
Block a user