Merge branch 'master' of github.com:openlayers/ol3 into vector

This commit is contained in:
Tim Schaub
2013-02-20 10:18:09 -07:00
22 changed files with 1201 additions and 1123 deletions

View File

@@ -19,17 +19,17 @@ ol.parser.ogc.WMSCapabilities_v1 = function() {
this.readChildNodes(node, obj['service']);
},
'Name': function(node, obj) {
obj.name = this.getChildValue(node);
obj['name'] = this.getChildValue(node);
},
'Title': function(node, obj) {
obj.title = this.getChildValue(node);
obj['title'] = this.getChildValue(node);
},
'Abstract': function(node, obj) {
obj['abstract'] = this.getChildValue(node);
},
'BoundingBox': function(node, obj) {
var bbox = {};
bbox.bbox = [
bbox['bbox'] = [
parseFloat(node.getAttribute('minx')),
parseFloat(node.getAttribute('miny')),
parseFloat(node.getAttribute('maxx')),
@@ -40,96 +40,96 @@ ol.parser.ogc.WMSCapabilities_v1 = function() {
y: parseFloat(node.getAttribute('resy'))
};
if (! (isNaN(res.x) && isNaN(res.y))) {
bbox.res = res;
bbox['res'] = res;
}
// return the bbox so that descendant classes can set the
// CRS and SRS and add it to the obj
return bbox;
},
'OnlineResource': function(node, obj) {
obj.href = this.getAttributeNS(node, 'http://www.w3.org/1999/xlink',
obj['href'] = this.getAttributeNS(node, 'http://www.w3.org/1999/xlink',
'href');
},
'ContactInformation': function(node, obj) {
obj.contactInformation = {};
this.readChildNodes(node, obj.contactInformation);
obj['contactInformation'] = {};
this.readChildNodes(node, obj['contactInformation']);
},
'ContactPersonPrimary': function(node, obj) {
obj.personPrimary = {};
this.readChildNodes(node, obj.personPrimary);
obj['personPrimary'] = {};
this.readChildNodes(node, obj['personPrimary']);
},
'ContactPerson': function(node, obj) {
obj.person = this.getChildValue(node);
obj['person'] = this.getChildValue(node);
},
'ContactOrganization': function(node, obj) {
obj.organization = this.getChildValue(node);
obj['organization'] = this.getChildValue(node);
},
'ContactPosition': function(node, obj) {
obj.position = this.getChildValue(node);
obj['position'] = this.getChildValue(node);
},
'ContactAddress': function(node, obj) {
obj.contactAddress = {};
this.readChildNodes(node, obj.contactAddress);
obj['contactAddress'] = {};
this.readChildNodes(node, obj['contactAddress']);
},
'AddressType': function(node, obj) {
obj.type = this.getChildValue(node);
obj['type'] = this.getChildValue(node);
},
'Address': function(node, obj) {
obj.address = this.getChildValue(node);
obj['address'] = this.getChildValue(node);
},
'City': function(node, obj) {
obj.city = this.getChildValue(node);
obj['city'] = this.getChildValue(node);
},
'StateOrProvince': function(node, obj) {
obj.stateOrProvince = this.getChildValue(node);
obj['stateOrProvince'] = this.getChildValue(node);
},
'PostCode': function(node, obj) {
obj.postcode = this.getChildValue(node);
obj['postcode'] = this.getChildValue(node);
},
'Country': function(node, obj) {
obj.country = this.getChildValue(node);
obj['country'] = this.getChildValue(node);
},
'ContactVoiceTelephone': function(node, obj) {
obj.phone = this.getChildValue(node);
obj['phone'] = this.getChildValue(node);
},
'ContactFacsimileTelephone': function(node, obj) {
obj.fax = this.getChildValue(node);
obj['fax'] = this.getChildValue(node);
},
'ContactElectronicMailAddress': function(node, obj) {
obj.email = this.getChildValue(node);
obj['email'] = this.getChildValue(node);
},
'Fees': function(node, obj) {
var fees = this.getChildValue(node);
if (fees && fees.toLowerCase() != 'none') {
obj.fees = fees;
obj['fees'] = fees;
}
},
'AccessConstraints': function(node, obj) {
var constraints = this.getChildValue(node);
if (constraints && constraints.toLowerCase() != 'none') {
obj.accessConstraints = constraints;
obj['accessConstraints'] = constraints;
}
},
'Capability': function(node, obj) {
obj.capability = {
nestedLayers: [],
layers: []
};
this.readChildNodes(node, obj.capability);
obj['capability'] = {};
obj['capability']['nestedLayers'] = [];
obj['capability']['layers'] = [];
this.readChildNodes(node, obj['capability']);
},
'Request': function(node, obj) {
obj.request = {};
this.readChildNodes(node, obj.request);
obj['request'] = {};
this.readChildNodes(node, obj['request']);
},
'GetCapabilities': function(node, obj) {
obj.getcapabilities = {formats: []};
this.readChildNodes(node, obj.getcapabilities);
obj['getcapabilities'] = {};
obj['getcapabilities']['formats'] = [];
this.readChildNodes(node, obj['getcapabilities']);
},
'Format': function(node, obj) {
if (goog.isArray(obj.formats)) {
obj.formats.push(this.getChildValue(node));
if (goog.isArray(obj['formats'])) {
obj['formats'].push(this.getChildValue(node));
} else {
obj.format = this.getChildValue(node);
obj['format'] = this.getChildValue(node);
}
},
'DCPType': function(node, obj) {
@@ -139,37 +139,32 @@ ol.parser.ogc.WMSCapabilities_v1 = function() {
this.readChildNodes(node, obj);
},
'Get': function(node, obj) {
obj.get = {};
this.readChildNodes(node, obj.get);
// backwards compatibility
if (!obj.href) {
obj.href = obj.get.href;
}
obj['get'] = {};
this.readChildNodes(node, obj['get']);
},
'Post': function(node, obj) {
obj.post = {};
this.readChildNodes(node, obj.post);
// backwards compatibility
if (!obj.href) {
obj.href = obj.get.href;
}
obj['post'] = {};
this.readChildNodes(node, obj['post']);
},
'GetMap': function(node, obj) {
obj.getmap = {formats: []};
this.readChildNodes(node, obj.getmap);
obj['getmap'] = {};
obj['getmap']['formats'] = [];
this.readChildNodes(node, obj['getmap']);
},
'GetFeatureInfo': function(node, obj) {
obj.getfeatureinfo = {formats: []};
this.readChildNodes(node, obj.getfeatureinfo);
obj['getfeatureinfo'] = {};
obj['getfeatureinfo']['formats'] = [];
this.readChildNodes(node, obj['getfeatureinfo']);
},
'Exception': function(node, obj) {
obj.exception = {formats: []};
this.readChildNodes(node, obj.exception);
obj['exception'] = {};
obj['exception']['formats'] = [];
this.readChildNodes(node, obj['exception']);
},
'Layer': function(node, obj) {
var parentLayer, capability;
if (obj.capability) {
capability = obj.capability;
if (obj['capability']) {
capability = obj['capability'];
parentLayer = obj;
} else {
capability = obj;
@@ -188,113 +183,113 @@ ol.parser.ogc.WMSCapabilities_v1 = function() {
var fixedHeight = node.getAttribute('fixedHeight');
var parent = parentLayer || {};
var layer = {
nestedLayers: [],
styles: parentLayer ? [].concat(parentLayer.styles) : [],
srs: {},
metadataURLs: [],
bbox: {},
llbbox: parent.llbbox,
dimensions: {},
authorityURLs: {},
identifiers: {},
keywords: [],
queryable: (queryable && queryable !== '') ?
'nestedLayers': [],
'styles': parentLayer ? [].concat(parentLayer['styles']) : [],
'srs': {},
'metadataURLs': [],
'bbox': {},
'llbbox': parent['llbbox'],
'dimensions': {},
'authorityURLs': {},
'identifiers': {},
'keywords': [],
'queryable': (queryable && queryable !== '') ?
(queryable === '1' || queryable === 'true') :
(parent.queryable || false),
cascaded: (cascaded !== null) ? parseInt(cascaded, 10) :
(parent.cascaded || 0),
opaque: opaque ?
(parent['queryable'] || false),
'cascaded': (cascaded !== null) ? parseInt(cascaded, 10) :
(parent['cascaded'] || 0),
'opaque': opaque ?
(opaque === '1' || opaque === 'true') :
(parent.opaque || false),
noSubsets: (noSubsets !== null) ?
(parent['opaque'] || false),
'noSubsets': (noSubsets !== null) ?
(noSubsets === '1' || noSubsets === 'true') :
(parent.noSubsets || false),
fixedWidth: (fixedWidth !== null) ?
parseInt(fixedWidth, 10) : (parent.fixedWidth || 0),
fixedHeight: (fixedHeight !== null) ?
parseInt(fixedHeight, 10) : (parent.fixedHeight || 0),
minScale: parent.minScale,
maxScale: parent.maxScale,
attribution: parent.attribution
(parent['noSubsets'] || false),
'fixedWidth': (fixedWidth !== null) ?
parseInt(fixedWidth, 10) : (parent['fixedWidth'] || 0),
'fixedHeight': (fixedHeight !== null) ?
parseInt(fixedHeight, 10) : (parent['fixedHeight'] || 0),
'minScale': parent['minScale'],
'maxScale': parent['maxScale'],
'attribution': parent['attribution']
};
if (parentLayer) {
goog.object.extend(layer.srs, parent.srs);
goog.object.extend(layer.bbox, parent.bbox);
goog.object.extend(layer.dimensions, parent.dimensions);
goog.object.extend(layer.authorityURLs, parent.authorityURLs);
goog.object.extend(layer['srs'], parent['srs']);
goog.object.extend(layer['bbox'], parent['bbox']);
goog.object.extend(layer['dimensions'], parent['dimensions']);
goog.object.extend(layer['authorityURLs'], parent['authorityURLs']);
}
obj.nestedLayers.push(layer);
layer.capability = capability;
obj['nestedLayers'].push(layer);
layer['capability'] = capability;
this.readChildNodes(node, layer);
delete layer.capability;
if (layer.name) {
var parts = layer.name.split(':'),
request = capability.request,
gfi = request.getfeatureinfo;
delete layer['capability'];
if (layer['name']) {
var parts = layer['name'].split(':'),
request = capability['request'],
gfi = request['getfeatureinfo'];
if (parts.length > 0) {
layer.prefix = parts[0];
layer['prefix'] = parts[0];
}
capability.layers.push(layer);
if (layer.formats === undefined) {
layer.formats = request.getmap.formats;
capability['layers'].push(layer);
if (layer['formats'] === undefined) {
layer['formats'] = request['getmap']['formats'];
}
if (layer.infoFormats === undefined && gfi) {
layer.infoFormats = gfi.formats;
if (layer['infoFormats'] === undefined && gfi) {
layer['infoFormats'] = gfi['formats'];
}
}
},
'Attribution': function(node, obj) {
obj.attribution = {};
this.readChildNodes(node, obj.attribution);
obj['attribution'] = {};
this.readChildNodes(node, obj['attribution']);
},
'LogoURL': function(node, obj) {
obj.logo = {
width: node.getAttribute('width'),
height: node.getAttribute('height')
obj['logo'] = {
'width': node.getAttribute('width'),
'height': node.getAttribute('height')
};
this.readChildNodes(node, obj.logo);
this.readChildNodes(node, obj['logo']);
},
'Style': function(node, obj) {
var style = {};
obj.styles.push(style);
obj['styles'].push(style);
this.readChildNodes(node, style);
},
'LegendURL': function(node, obj) {
var legend = {
width: node.getAttribute('width'),
height: node.getAttribute('height')
'width': node.getAttribute('width'),
'height': node.getAttribute('height')
};
obj.legend = legend;
obj['legend'] = legend;
this.readChildNodes(node, legend);
},
'MetadataURL': function(node, obj) {
var metadataURL = {type: node.getAttribute('type')};
obj.metadataURLs.push(metadataURL);
var metadataURL = {'type': node.getAttribute('type')};
obj['metadataURLs'].push(metadataURL);
this.readChildNodes(node, metadataURL);
},
'DataURL': function(node, obj) {
obj.dataURL = {};
this.readChildNodes(node, obj.dataURL);
obj['dataURL'] = {};
this.readChildNodes(node, obj['dataURL']);
},
'FeatureListURL': function(node, obj) {
obj.featureListURL = {};
this.readChildNodes(node, obj.featureListURL);
obj['featureListURL'] = {};
this.readChildNodes(node, obj['featureListURL']);
},
'AuthorityURL': function(node, obj) {
var name = node.getAttribute('name');
var authority = {};
this.readChildNodes(node, authority);
obj.authorityURLs[name] = authority.href;
obj['authorityURLs'][name] = authority['href'];
},
'Identifier': function(node, obj) {
var authority = node.getAttribute('authority');
obj.identifiers[authority] = this.getChildValue(node);
obj['identifiers'][authority] = this.getChildValue(node);
},
'KeywordList': function(node, obj) {
this.readChildNodes(node, obj);
},
'SRS': function(node, obj) {
obj.srs[this.getChildValue(node)] = true;
obj['srs'][this.getChildValue(node)] = true;
}
}
};

View File

@@ -15,37 +15,37 @@ ol.parser.ogc.WMSCapabilities_v1_1 = function() {
this.readChildNodes(node, obj);
},
'Keyword': function(node, obj) {
if (obj.keywords) {
obj.keywords.push({value: this.getChildValue(node)});
if (obj['keywords']) {
obj['keywords'].push({'value': this.getChildValue(node)});
}
},
'DescribeLayer': function(node, obj) {
obj.describelayer = {formats: []};
this.readChildNodes(node, obj.describelayer);
obj['describelayer'] = {'formats': []};
this.readChildNodes(node, obj['describelayer']);
},
'GetLegendGraphic': function(node, obj) {
obj.getlegendgraphic = {formats: []};
this.readChildNodes(node, obj.getlegendgraphic);
obj['getlegendgraphic'] = {'formats': []};
this.readChildNodes(node, obj['getlegendgraphic']);
},
'GetStyles': function(node, obj) {
obj.getstyles = {formats: []};
this.readChildNodes(node, obj.getstyles);
obj['getstyles'] = {'formats': []};
this.readChildNodes(node, obj['getstyles']);
},
'PutStyles': function(node, obj) {
obj.putstyles = {formats: []};
this.readChildNodes(node, obj.putstyles);
obj['putstyles'] = {'formats': []};
this.readChildNodes(node, obj['putstyles']);
},
'UserDefinedSymbolization': function(node, obj) {
var userSymbols = {
supportSLD: parseInt(node.getAttribute('SupportSLD'), 10) == 1,
userLayer: parseInt(node.getAttribute('UserLayer'), 10) == 1,
userStyle: parseInt(node.getAttribute('UserStyle'), 10) == 1,
remoteWFS: parseInt(node.getAttribute('RemoteWFS'), 10) == 1
'supportSLD': parseInt(node.getAttribute('SupportSLD'), 10) == 1,
'userLayer': parseInt(node.getAttribute('UserLayer'), 10) == 1,
'userStyle': parseInt(node.getAttribute('UserStyle'), 10) == 1,
'remoteWFS': parseInt(node.getAttribute('RemoteWFS'), 10) == 1
};
obj.userSymbols = userSymbols;
obj['userSymbols'] = userSymbols;
},
'LatLonBoundingBox': function(node, obj) {
obj.llbbox = [
obj['llbbox'] = [
parseFloat(node.getAttribute('minx')),
parseFloat(node.getAttribute('miny')),
parseFloat(node.getAttribute('maxx')),
@@ -54,8 +54,8 @@ ol.parser.ogc.WMSCapabilities_v1_1 = function() {
},
'BoundingBox': function(node, obj) {
var bbox = bboxreader.apply(this, arguments);
bbox.srs = node.getAttribute('SRS');
obj.bbox[bbox.srs] = bbox;
bbox['srs'] = node.getAttribute('SRS');
obj['bbox'][bbox['srs']] = bbox;
},
'ScaleHint': function(node, obj) {
var min = parseFloat(node.getAttribute('min'));
@@ -64,33 +64,33 @@ ol.parser.ogc.WMSCapabilities_v1_1 = function() {
var dpi = (25.4 / 0.28);
var ipm = 39.37;
if (min !== 0) {
obj.maxScale = parseFloat((min / rad2) * ipm * dpi);
obj['maxScale'] = parseFloat((min / rad2) * ipm * dpi);
}
if (max != Number.POSITIVE_INFINITY) {
obj.minScale = parseFloat((max / rad2) * ipm * dpi);
obj['minScale'] = parseFloat((max / rad2) * ipm * dpi);
}
},
'Dimension': function(node, obj) {
var name = node.getAttribute('name').toLowerCase();
var dim = {
name: name,
units: node.getAttribute('units'),
unitsymbol: node.getAttribute('unitSymbol')
'name': name,
'units': node.getAttribute('units'),
'unitsymbol': node.getAttribute('unitSymbol')
};
obj.dimensions[dim.name] = dim;
obj['dimensions'][dim.name] = dim;
},
'Extent': function(node, obj) {
var name = node.getAttribute('name').toLowerCase();
if (name in obj['dimensions']) {
var extent = obj.dimensions[name];
extent.nearestVal =
var extent = obj['dimensions'][name];
extent['nearestVal'] =
node.getAttribute('nearestValue') === '1';
extent.multipleVal =
extent['multipleVal'] =
node.getAttribute('multipleValues') === '1';
extent.current = node.getAttribute('current') === '1';
extent['current'] = node.getAttribute('current') === '1';
extent['default'] = node.getAttribute('default') || '';
var values = this.getChildValue(node);
extent.values = values.split(',');
extent['values'] = values.split(',');
}
}
});

View File

@@ -15,7 +15,7 @@ ol.parser.ogc.WMSCapabilities_v1_1_0 = function() {
var srs = this.getChildValue(node);
var values = srs.split(/ +/);
for (var i = 0, len = values.length; i < len; i++) {
obj.srs[values[i]] = true;
obj['srs'][values[i]] = true;
}
}
});

View File

@@ -12,7 +12,7 @@ ol.parser.ogc.WMSCapabilities_v1_1_1 = function() {
this.version = '1.1.1';
goog.object.extend(this.readers['http://www.opengis.net/wms'], {
'SRS': function(node, obj) {
obj.srs[this.getChildValue(node)] = true;
obj['srs'][this.getChildValue(node)] = true;
}
});
};

View File

@@ -12,11 +12,11 @@ ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC = function() {
this.profile = 'WMSC';
goog.object.extend(this.readers['http://www.opengis.net/wms'], {
'VendorSpecificCapabilities': function(node, obj) {
obj.vendorSpecific = {tileSets: []};
this.readChildNodes(node, obj.vendorSpecific);
obj['vendorSpecific'] = {'tileSets': []};
this.readChildNodes(node, obj['vendorSpecific']);
},
'TileSet': function(node, vendorSpecific) {
var tileset = {srs: {}, bbox: {}, resolutions: []};
var tileset = {'srs': {}, 'bbox': {}, 'resolutions': []};
this.readChildNodes(node, tileset);
vendorSpecific.tileSets.push(tileset);
},
@@ -24,21 +24,21 @@ ol.parser.ogc.WMSCapabilities_v1_1_1_WMSC = function() {
var res = this.getChildValue(node).split(' ');
for (var i = 0, len = res.length; i < len; i++) {
if (res[i] !== '') {
tileset.resolutions.push(parseFloat(res[i]));
tileset['resolutions'].push(parseFloat(res[i]));
}
}
},
'Width': function(node, tileset) {
tileset.width = parseInt(this.getChildValue(node), 10);
tileset['width'] = parseInt(this.getChildValue(node), 10);
},
'Height': function(node, tileset) {
tileset.height = parseInt(this.getChildValue(node), 10);
tileset['height'] = parseInt(this.getChildValue(node), 10);
},
'Layers': function(node, tileset) {
tileset.layers = this.getChildValue(node);
tileset['layers'] = this.getChildValue(node);
},
'Styles': function(node, tileset) {
tileset.styles = this.getChildValue(node);
tileset['styles'] = this.getChildValue(node);
}
});
};

View File

@@ -15,18 +15,18 @@ ol.parser.ogc.WMSCapabilities_v1_3_0 = function() {
this.readChildNodes(node, obj);
},
'LayerLimit': function(node, obj) {
obj.layerLimit = parseInt(this.getChildValue(node), 10);
obj['layerLimit'] = parseInt(this.getChildValue(node), 10);
},
'MaxWidth': function(node, obj) {
obj.maxWidth = parseInt(this.getChildValue(node), 10);
obj['maxWidth'] = parseInt(this.getChildValue(node), 10);
},
'MaxHeight': function(node, obj) {
obj.maxHeight = parseInt(this.getChildValue(node), 10);
obj['maxHeight'] = parseInt(this.getChildValue(node), 10);
},
'BoundingBox': function(node, obj) {
var bbox = bboxreader.apply(this, arguments);
bbox.srs = node.getAttribute('CRS');
obj.bbox[bbox.srs] = bbox;
bbox['srs'] = node.getAttribute('CRS');
obj['bbox'][bbox['srs']] = bbox;
},
'CRS': function(node, obj) {
// CRS is the synonym of SRS
@@ -34,8 +34,8 @@ ol.parser.ogc.WMSCapabilities_v1_3_0 = function() {
},
'EX_GeographicBoundingBox': function(node, obj) {
// replacement of LatLonBoundingBox
obj.llbbox = [];
this.readChildNodes(node, obj.llbbox);
obj['llbbox'] = [];
this.readChildNodes(node, obj['llbbox']);
},
'westBoundLongitude': function(node, obj) {
obj[0] = this.getChildValue(node);
@@ -50,10 +50,10 @@ ol.parser.ogc.WMSCapabilities_v1_3_0 = function() {
obj[3] = this.getChildValue(node);
},
'MinScaleDenominator': function(node, obj) {
obj.maxScale = parseFloat(this.getChildValue(node)).toPrecision(16);
obj['maxScale'] = parseFloat(this.getChildValue(node)).toPrecision(16);
},
'MaxScaleDenominator': function(node, obj) {
obj.minScale = parseFloat(this.getChildValue(node)).toPrecision(16);
obj['minScale'] = parseFloat(this.getChildValue(node)).toPrecision(16);
},
'Dimension': function(node, obj) {
// dimension has extra attributes: default, multipleValues,
@@ -61,27 +61,27 @@ ol.parser.ogc.WMSCapabilities_v1_3_0 = function() {
// also contains the values.
var name = node.getAttribute('name').toLowerCase();
var dim = {
name: name,
units: node.getAttribute('units'),
unitsymbol: node.getAttribute('unitSymbol'),
nearestVal: node.getAttribute('nearestValue') === '1',
multipleVal: node.getAttribute('multipleValues') === '1',
'name': name,
'units': node.getAttribute('units'),
'unitsymbol': node.getAttribute('unitSymbol'),
'nearestVal': node.getAttribute('nearestValue') === '1',
'multipleVal': node.getAttribute('multipleValues') === '1',
'default': node.getAttribute('default') || '',
current: node.getAttribute('current') === '1',
values: this.getChildValue(node).split(',')
'current': node.getAttribute('current') === '1',
'values': this.getChildValue(node).split(',')
};
// Theoretically there can be more dimensions with the same
// name, but with a different unit. Until we meet such a case,
// let's just keep the same structure as the WMS 1.1
// GetCapabilities parser uses. We will store the last
// one encountered.
obj.dimensions[dim.name] = dim;
obj['dimensions'][dim['name']] = dim;
},
'Keyword': function(node, obj) {
var keyword = {value: this.getChildValue(node),
vocabulary: node.getAttribute('vocabulary')};
if (obj.keywords) {
obj.keywords.push(keyword);
var keyword = {'value': this.getChildValue(node),
'vocabulary': node.getAttribute('vocabulary')};
if (obj['keywords']) {
obj['keywords'].push(keyword);
}
}
});
@@ -91,9 +91,9 @@ ol.parser.ogc.WMSCapabilities_v1_3_0 = function() {
readers.UserDefinedSymbolization.apply(this, arguments);
// add the two extra attributes
var value = node.getAttribute('InlineFeature');
obj['userSymbols'].inlineFeature = parseInt(value, 10) == 1;
obj['userSymbols']['inlineFeature'] = parseInt(value, 10) == 1;
value = node.getAttribute('RemoteWCS');
obj['userSymbols'].remoteWCS = parseInt(value, 10) == 1;
obj['userSymbols']['remoteWCS'] = parseInt(value, 10) == 1;
},
'DescribeLayer': function(node, obj) {
var readers = this.readers['http://www.opengis.net/wms'];