Enhancements to the WMC parser for better contact information, SRS, and style support. p=trondmm, r=me (closes #3236)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11871 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2011-04-04 17:15:14 +00:00
parent a7d1cc9134
commit 7a5e837c9b
7 changed files with 824 additions and 62 deletions

View File

@@ -74,9 +74,13 @@ OpenLayers.Format.WMC = OpenLayers.Class(OpenLayers.Format.Context, {
visibility: layer.visibility,
name: layer.params["LAYERS"],
title: layer.name,
"abstract": layer.metadata["abstract"],
dataURL: layer.metadata.dataURL,
metadataURL: layer.metadataURL,
server: {
version: layer.params["VERSION"],
url: layer.url,
url: layer.url
},
maxExtent: layer.maxExtent,
transparent: layer.params["TRANSPARENT"],
numZoomLevels: layer.numZoomLevels,
@@ -97,18 +101,54 @@ OpenLayers.Format.WMC = OpenLayers.Class(OpenLayers.Format.Context, {
layer.options.minResolution ||
layer.options.maxScale) ?
layer.maxScale : undefined,
formats: [{
formats: [],
styles: [],
srs: layer.srs,
dimensions: layer.dimensions
};
if (layer.metadata.servertitle) {
layerContext.server.title = layer.metadata.servertitle;
}
if (layer.metadata.formats && layer.metadata.formats.length > 0) {
for (var i=0, len=layer.metadata.formats.length; i<len; i++) {
var format = layer.metadata.formats[i];
layerContext.formats.push({
value: format.value,
current: (format.value == layer.params["FORMAT"])
});
}
} else {
layerContext.formats.push({
value: layer.params["FORMAT"],
current: true
}],
styles: [{
});
}
if (layer.metadata.styles && layer.metadata.styles.length > 0) {
for (var i=0, len=layer.metadata.styles.length; i<len; i++) {
var style = layer.metadata.styles[i];
if ((style.href == layer.params["SLD"]) ||
(style.body == layer.params["SLD_BODY"]) ||
(style.name == layer.params["STYLES"])) {
style.current = true;
} else {
style.current = false;
}
layerContext.styles.push(style);
}
} else {
layerContext.styles.push({
href: layer.params["SLD"],
body: layer.params["SLD_BODY"],
name: layer.params["STYLES"] || parser.defaultStyleName,
title: parser.defaultStyleTitle,
current: true
}]
};
});
}
return layerContext;
},
@@ -126,16 +166,22 @@ OpenLayers.Format.WMC = OpenLayers.Class(OpenLayers.Format.Context, {
toContext: function(obj) {
var context = {};
var layers = obj.layers;
if(obj.CLASS_NAME == "OpenLayers.Map") {
context.bounds = obj.getExtent();
context.maxExtent = obj.maxExtent;
context.projection = obj.projection;
if (obj.CLASS_NAME == "OpenLayers.Map") {
var metadata = obj.metadata || {};
context.size = obj.getSize();
}
else {
context.bounds = obj.getExtent();
context.projection = obj.projection;
context.title = obj.title;
context.keywords = metadata.keywords;
context["abstract"] = metadata["abstract"];
context.logo = metadata.logo;
context.descriptionURL = metadata.descriptionURL;
context.contactInformation = metadata.contactInformation;
context.maxExtent = obj.maxExtent;
} else {
// copy all obj properties except the "layers" property
OpenLayers.Util.applyDefaults(context, obj);
if(context.layers != undefined) {
if (context.layers != undefined) {
delete(context.layers);
}
}
@@ -148,7 +194,7 @@ OpenLayers.Format.WMC = OpenLayers.Class(OpenLayers.Format.Context, {
if (layers != undefined && layers instanceof Array) {
for (var i=0, len=layers.length; i<len; i++) {
var layer = layers[i];
if(layer instanceof OpenLayers.Layer.WMS) {
if (layer instanceof OpenLayers.Layer.WMS) {
context.layersContext.push(this.layerToContext(layer));
}
}