Merge pull request #7814 from tschaub/unstatic-private
Remove more private static members
This commit is contained in:
+85
-73
@@ -83,81 +83,94 @@ inherits(MVT, FeatureFormat);
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reader callbacks for parsing the PBF.
|
* Reader callback for parsing layers.
|
||||||
* @type {Object.<string, function(number, Object, ol.ext.PBF)>}
|
* @param {number} tag The tag.
|
||||||
|
* @param {Object} layers The layers object.
|
||||||
|
* @param {ol.ext.PBF} pbf The PBF.
|
||||||
*/
|
*/
|
||||||
MVT.pbfReaders_ = {
|
function layersPBFReader(tag, layers, pbf) {
|
||||||
layers: function(tag, layers, pbf) {
|
if (tag === 3) {
|
||||||
if (tag === 3) {
|
const layer = {
|
||||||
const layer = {
|
keys: [],
|
||||||
keys: [],
|
values: [],
|
||||||
values: [],
|
features: []
|
||||||
features: []
|
};
|
||||||
};
|
const end = pbf.readVarint() + pbf.pos;
|
||||||
const end = pbf.readVarint() + pbf.pos;
|
pbf.readFields(layerPBFReader, layer, end);
|
||||||
pbf.readFields(MVT.pbfReaders_.layer, layer, end);
|
layer.length = layer.features.length;
|
||||||
layer.length = layer.features.length;
|
if (layer.length) {
|
||||||
if (layer.length) {
|
layers[layer.name] = layer;
|
||||||
layers[layer.name] = layer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
layer: function(tag, layer, pbf) {
|
|
||||||
if (tag === 15) {
|
|
||||||
layer.version = pbf.readVarint();
|
|
||||||
} else if (tag === 1) {
|
|
||||||
layer.name = pbf.readString();
|
|
||||||
} else if (tag === 5) {
|
|
||||||
layer.extent = pbf.readVarint();
|
|
||||||
} else if (tag === 2) {
|
|
||||||
layer.features.push(pbf.pos);
|
|
||||||
} else if (tag === 3) {
|
|
||||||
layer.keys.push(pbf.readString());
|
|
||||||
} else if (tag === 4) {
|
|
||||||
let value = null;
|
|
||||||
const end = pbf.readVarint() + pbf.pos;
|
|
||||||
while (pbf.pos < end) {
|
|
||||||
tag = pbf.readVarint() >> 3;
|
|
||||||
value = tag === 1 ? pbf.readString() :
|
|
||||||
tag === 2 ? pbf.readFloat() :
|
|
||||||
tag === 3 ? pbf.readDouble() :
|
|
||||||
tag === 4 ? pbf.readVarint64() :
|
|
||||||
tag === 5 ? pbf.readVarint() :
|
|
||||||
tag === 6 ? pbf.readSVarint() :
|
|
||||||
tag === 7 ? pbf.readBoolean() : null;
|
|
||||||
}
|
|
||||||
layer.values.push(value);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
feature: function(tag, feature, pbf) {
|
|
||||||
if (tag == 1) {
|
|
||||||
feature.id = pbf.readVarint();
|
|
||||||
} else if (tag == 2) {
|
|
||||||
const end = pbf.readVarint() + pbf.pos;
|
|
||||||
while (pbf.pos < end) {
|
|
||||||
const key = feature.layer.keys[pbf.readVarint()];
|
|
||||||
const value = feature.layer.values[pbf.readVarint()];
|
|
||||||
feature.properties[key] = value;
|
|
||||||
}
|
|
||||||
} else if (tag == 3) {
|
|
||||||
feature.type = pbf.readVarint();
|
|
||||||
} else if (tag == 4) {
|
|
||||||
feature.geometry = pbf.pos;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reader callback for parsing layer.
|
||||||
|
* @param {number} tag The tag.
|
||||||
|
* @param {Object} layer The layer object.
|
||||||
|
* @param {ol.ext.PBF} pbf The PBF.
|
||||||
|
*/
|
||||||
|
function layerPBFReader(tag, layer, pbf) {
|
||||||
|
if (tag === 15) {
|
||||||
|
layer.version = pbf.readVarint();
|
||||||
|
} else if (tag === 1) {
|
||||||
|
layer.name = pbf.readString();
|
||||||
|
} else if (tag === 5) {
|
||||||
|
layer.extent = pbf.readVarint();
|
||||||
|
} else if (tag === 2) {
|
||||||
|
layer.features.push(pbf.pos);
|
||||||
|
} else if (tag === 3) {
|
||||||
|
layer.keys.push(pbf.readString());
|
||||||
|
} else if (tag === 4) {
|
||||||
|
let value = null;
|
||||||
|
const end = pbf.readVarint() + pbf.pos;
|
||||||
|
while (pbf.pos < end) {
|
||||||
|
tag = pbf.readVarint() >> 3;
|
||||||
|
value = tag === 1 ? pbf.readString() :
|
||||||
|
tag === 2 ? pbf.readFloat() :
|
||||||
|
tag === 3 ? pbf.readDouble() :
|
||||||
|
tag === 4 ? pbf.readVarint64() :
|
||||||
|
tag === 5 ? pbf.readVarint() :
|
||||||
|
tag === 6 ? pbf.readSVarint() :
|
||||||
|
tag === 7 ? pbf.readBoolean() : null;
|
||||||
|
}
|
||||||
|
layer.values.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reader callback for parsing feature.
|
||||||
|
* @param {number} tag The tag.
|
||||||
|
* @param {Object} feature The feature object.
|
||||||
|
* @param {ol.ext.PBF} pbf The PBF.
|
||||||
|
*/
|
||||||
|
function featurePBFReader(tag, feature, pbf) {
|
||||||
|
if (tag == 1) {
|
||||||
|
feature.id = pbf.readVarint();
|
||||||
|
} else if (tag == 2) {
|
||||||
|
const end = pbf.readVarint() + pbf.pos;
|
||||||
|
while (pbf.pos < end) {
|
||||||
|
const key = feature.layer.keys[pbf.readVarint()];
|
||||||
|
const value = feature.layer.values[pbf.readVarint()];
|
||||||
|
feature.properties[key] = value;
|
||||||
|
}
|
||||||
|
} else if (tag == 3) {
|
||||||
|
feature.type = pbf.readVarint();
|
||||||
|
} else if (tag == 4) {
|
||||||
|
feature.geometry = pbf.pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a raw feature from the pbf offset stored at index `i` in the raw layer.
|
* Read a raw feature from the pbf offset stored at index `i` in the raw layer.
|
||||||
* @suppress {missingProperties}
|
* @suppress {missingProperties}
|
||||||
* @private
|
|
||||||
* @param {ol.ext.PBF} pbf PBF.
|
* @param {ol.ext.PBF} pbf PBF.
|
||||||
* @param {Object} layer Raw layer.
|
* @param {Object} layer Raw layer.
|
||||||
* @param {number} i Index of the feature in the raw layer's `features` array.
|
* @param {number} i Index of the feature in the raw layer's `features` array.
|
||||||
* @return {Object} Raw feature.
|
* @return {Object} Raw feature.
|
||||||
*/
|
*/
|
||||||
MVT.readRawFeature_ = function(pbf, layer, i) {
|
function readRawFeature(pbf, layer, i) {
|
||||||
pbf.pos = layer.features[i];
|
pbf.pos = layer.features[i];
|
||||||
const end = pbf.readVarint() + pbf.pos;
|
const end = pbf.readVarint() + pbf.pos;
|
||||||
|
|
||||||
@@ -166,22 +179,22 @@ MVT.readRawFeature_ = function(pbf, layer, i) {
|
|||||||
type: 0,
|
type: 0,
|
||||||
properties: {}
|
properties: {}
|
||||||
};
|
};
|
||||||
pbf.readFields(MVT.pbfReaders_.feature, feature, end);
|
pbf.readFields(featurePBFReader, feature, end);
|
||||||
return feature;
|
return feature;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read the raw geometry from the pbf offset stored in a raw feature's geometry
|
* Read the raw geometry from the pbf offset stored in a raw feature's geometry
|
||||||
* proeprty.
|
* proeprty.
|
||||||
* @suppress {missingProperties}
|
* @suppress {missingProperties}
|
||||||
* @private
|
|
||||||
* @param {ol.ext.PBF} pbf PBF.
|
* @param {ol.ext.PBF} pbf PBF.
|
||||||
* @param {Object} feature Raw feature.
|
* @param {Object} feature Raw feature.
|
||||||
* @param {Array.<number>} flatCoordinates Array to store flat coordinates in.
|
* @param {Array.<number>} flatCoordinates Array to store flat coordinates in.
|
||||||
* @param {Array.<number>} ends Array to store ends in.
|
* @param {Array.<number>} ends Array to store ends in.
|
||||||
|
* @private
|
||||||
*/
|
*/
|
||||||
MVT.readRawGeometry_ = function(pbf, feature, flatCoordinates, ends) {
|
MVT.prototype.readRawGeometry_ = function(pbf, feature, flatCoordinates, ends) {
|
||||||
pbf.pos = feature.geometry;
|
pbf.pos = feature.geometry;
|
||||||
|
|
||||||
const end = pbf.readVarint() + pbf.pos;
|
const end = pbf.readVarint() + pbf.pos;
|
||||||
@@ -239,13 +252,12 @@ MVT.readRawGeometry_ = function(pbf, feature, flatCoordinates, ends) {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @suppress {missingProperties}
|
* @suppress {missingProperties}
|
||||||
* @private
|
|
||||||
* @param {number} type The raw feature's geometry type
|
* @param {number} type The raw feature's geometry type
|
||||||
* @param {number} numEnds Number of ends of the flat coordinates of the
|
* @param {number} numEnds Number of ends of the flat coordinates of the
|
||||||
* geometry.
|
* geometry.
|
||||||
* @return {ol.geom.GeometryType} The geometry type.
|
* @return {ol.geom.GeometryType} The geometry type.
|
||||||
*/
|
*/
|
||||||
MVT.getGeometryType_ = function(type, numEnds) {
|
function getGeometryType(type, numEnds) {
|
||||||
/** @type {ol.geom.GeometryType} */
|
/** @type {ol.geom.GeometryType} */
|
||||||
let geometryType;
|
let geometryType;
|
||||||
if (type === 1) {
|
if (type === 1) {
|
||||||
@@ -261,7 +273,7 @@ MVT.getGeometryType_ = function(type, numEnds) {
|
|||||||
// outer rings of polygons.
|
// outer rings of polygons.
|
||||||
}
|
}
|
||||||
return geometryType;
|
return geometryType;
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
* @private
|
||||||
@@ -283,9 +295,9 @@ MVT.prototype.createFeature_ = function(pbf, rawFeature, opt_options) {
|
|||||||
|
|
||||||
const flatCoordinates = [];
|
const flatCoordinates = [];
|
||||||
let ends = [];
|
let ends = [];
|
||||||
MVT.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);
|
this.readRawGeometry_(pbf, rawFeature, flatCoordinates, ends);
|
||||||
|
|
||||||
const geometryType = MVT.getGeometryType_(type, ends.length);
|
const geometryType = getGeometryType(type, ends.length);
|
||||||
|
|
||||||
if (this.featureClass_ === RenderFeature) {
|
if (this.featureClass_ === RenderFeature) {
|
||||||
feature = new this.featureClass_(geometryType, flatCoordinates, ends, values, id);
|
feature = new this.featureClass_(geometryType, flatCoordinates, ends, values, id);
|
||||||
@@ -357,7 +369,7 @@ MVT.prototype.readFeatures = function(source, opt_options) {
|
|||||||
const layers = this.layers_;
|
const layers = this.layers_;
|
||||||
|
|
||||||
const pbf = new PBF(/** @type {ArrayBuffer} */ (source));
|
const pbf = new PBF(/** @type {ArrayBuffer} */ (source));
|
||||||
const pbfLayers = pbf.readFields(MVT.pbfReaders_.layers, {});
|
const pbfLayers = pbf.readFields(layersPBFReader, {});
|
||||||
/** @type {Array.<ol.Feature|ol.render.Feature>} */
|
/** @type {Array.<ol.Feature|ol.render.Feature>} */
|
||||||
const features = [];
|
const features = [];
|
||||||
let pbfLayer;
|
let pbfLayer;
|
||||||
@@ -368,7 +380,7 @@ MVT.prototype.readFeatures = function(source, opt_options) {
|
|||||||
pbfLayer = pbfLayers[name];
|
pbfLayer = pbfLayers[name];
|
||||||
|
|
||||||
for (let i = 0, ii = pbfLayer.length; i < ii; ++i) {
|
for (let i = 0, ii = pbfLayer.length; i < ii; ++i) {
|
||||||
const rawFeature = MVT.readRawFeature_(pbf, pbfLayer, i);
|
const rawFeature = readRawFeature(pbf, pbfLayer, i);
|
||||||
features.push(this.createFeature_(pbf, rawFeature));
|
features.push(this.createFeature_(pbf, rawFeature));
|
||||||
}
|
}
|
||||||
this.extent_ = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;
|
this.extent_ = pbfLayer ? [0, 0, pbfLayer.extent, pbfLayer.extent] : null;
|
||||||
|
|||||||
+50
-60
@@ -36,12 +36,50 @@ const OSMXML = function() {
|
|||||||
inherits(OSMXML, XMLFeature);
|
inherits(OSMXML, XMLFeature);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Array.<string>}
|
||||||
|
*/
|
||||||
|
const NAMESPACE_URIS = [null];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const WAY_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'nd': readNd,
|
||||||
|
'tag': readTag
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'node': readNode,
|
||||||
|
'way': readWay
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const NODE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'tag': readTag
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
OSMXML.readNode_ = function(node, objectStack) {
|
function readNode(node, objectStack) {
|
||||||
const options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
|
const options = /** @type {olx.format.ReadOptions} */ (objectStack[0]);
|
||||||
const state = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const state = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
const id = node.getAttribute('id');
|
const id = node.getAttribute('id');
|
||||||
@@ -54,7 +92,7 @@ OSMXML.readNode_ = function(node, objectStack) {
|
|||||||
|
|
||||||
const values = pushParseAndPop({
|
const values = pushParseAndPop({
|
||||||
tags: {}
|
tags: {}
|
||||||
}, OSMXML.NODE_PARSERS_, node, objectStack);
|
}, NODE_PARSERS, node, objectStack);
|
||||||
if (!isEmpty(values.tags)) {
|
if (!isEmpty(values.tags)) {
|
||||||
const geometry = new Point(coordinates);
|
const geometry = new Point(coordinates);
|
||||||
transformWithOptions(geometry, false, options);
|
transformWithOptions(geometry, false, options);
|
||||||
@@ -63,91 +101,43 @@ OSMXML.readNode_ = function(node, objectStack) {
|
|||||||
feature.setProperties(values.tags);
|
feature.setProperties(values.tags);
|
||||||
state.features.push(feature);
|
state.features.push(feature);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
OSMXML.readWay_ = function(node, objectStack) {
|
function readWay(node, objectStack) {
|
||||||
const id = node.getAttribute('id');
|
const id = node.getAttribute('id');
|
||||||
const values = pushParseAndPop({
|
const values = pushParseAndPop({
|
||||||
id: id,
|
id: id,
|
||||||
ndrefs: [],
|
ndrefs: [],
|
||||||
tags: {}
|
tags: {}
|
||||||
}, OSMXML.WAY_PARSERS_, node, objectStack);
|
}, WAY_PARSERS, node, objectStack);
|
||||||
const state = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const state = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
state.ways.push(values);
|
state.ways.push(values);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
OSMXML.readNd_ = function(node, objectStack) {
|
function readNd(node, objectStack) {
|
||||||
const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
values.ndrefs.push(node.getAttribute('ref'));
|
values.ndrefs.push(node.getAttribute('ref'));
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
OSMXML.readTag_ = function(node, objectStack) {
|
function readTag(node, objectStack) {
|
||||||
const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
values.tags[node.getAttribute('k')] = node.getAttribute('v');
|
values.tags[node.getAttribute('k')] = node.getAttribute('v');
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @private
|
|
||||||
* @type {Array.<string>}
|
|
||||||
*/
|
|
||||||
OSMXML.NAMESPACE_URIS_ = [
|
|
||||||
null
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OSMXML.WAY_PARSERS_ = makeStructureNS(
|
|
||||||
OSMXML.NAMESPACE_URIS_, {
|
|
||||||
'nd': OSMXML.readNd_,
|
|
||||||
'tag': OSMXML.readTag_
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OSMXML.PARSERS_ = makeStructureNS(
|
|
||||||
OSMXML.NAMESPACE_URIS_, {
|
|
||||||
'node': OSMXML.readNode_,
|
|
||||||
'way': OSMXML.readWay_
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OSMXML.NODE_PARSERS_ = makeStructureNS(
|
|
||||||
OSMXML.NAMESPACE_URIS_, {
|
|
||||||
'tag': OSMXML.readTag_
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -172,7 +162,7 @@ OSMXML.prototype.readFeaturesFromNode = function(node, opt_options) {
|
|||||||
nodes: {},
|
nodes: {},
|
||||||
ways: [],
|
ways: [],
|
||||||
features: []
|
features: []
|
||||||
}, OSMXML.PARSERS_, node, [options]);
|
}, PARSERS, node, [options]);
|
||||||
// parse nodes in ways
|
// parse nodes in ways
|
||||||
for (let j = 0; j < state.ways.length; j++) {
|
for (let j = 0; j < state.ways.length; j++) {
|
||||||
const values = /** @type {Object} */ (state.ways[j]);
|
const values = /** @type {Object} */ (state.ways[j]);
|
||||||
|
|||||||
+223
-253
@@ -18,6 +18,187 @@ const OWS = function() {
|
|||||||
inherits(OWS, XML);
|
inherits(OWS, XML);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Array.<string>}
|
||||||
|
*/
|
||||||
|
const NAMESPACE_URIS = [null, 'http://www.opengis.net/ows/1.1'];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'ServiceIdentification': makeObjectPropertySetter(
|
||||||
|
readServiceIdentification),
|
||||||
|
'ServiceProvider': makeObjectPropertySetter(
|
||||||
|
readServiceProvider),
|
||||||
|
'OperationsMetadata': makeObjectPropertySetter(
|
||||||
|
readOperationsMetadata)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const ADDRESS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'DeliveryPoint': makeObjectPropertySetter(
|
||||||
|
XSD.readString),
|
||||||
|
'City': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'AdministrativeArea': makeObjectPropertySetter(
|
||||||
|
XSD.readString),
|
||||||
|
'PostalCode': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Country': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ElectronicMailAddress': makeObjectPropertySetter(
|
||||||
|
XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const ALLOWED_VALUES_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Value': makeObjectPropertyPusher(readValue)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONSTRAINT_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'AllowedValues': makeObjectPropertySetter(
|
||||||
|
readAllowedValues)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONTACT_INFO_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Phone': makeObjectPropertySetter(readPhone),
|
||||||
|
'Address': makeObjectPropertySetter(readAddress)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const DCP_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'HTTP': makeObjectPropertySetter(readHttp)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const HTTP_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Get': makeObjectPropertyPusher(readGet),
|
||||||
|
'Post': undefined // TODO
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const OPERATION_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'DCP': makeObjectPropertySetter(readDcp)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const OPERATIONS_METADATA_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Operation': readOperation
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const PHONE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Voice': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Facsimile': makeObjectPropertySetter(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const REQUEST_METHOD_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Constraint': makeObjectPropertyPusher(
|
||||||
|
readConstraint)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const SERVICE_CONTACT_PARSERS =
|
||||||
|
makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'IndividualName': makeObjectPropertySetter(
|
||||||
|
XSD.readString),
|
||||||
|
'PositionName': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ContactInfo': makeObjectPropertySetter(
|
||||||
|
readContactInfo)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const SERVICE_IDENTIFICATION_PARSERS =
|
||||||
|
makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Abstract': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'AccessConstraints': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Fees': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ServiceTypeVersion': makeObjectPropertySetter(
|
||||||
|
XSD.readString),
|
||||||
|
'ServiceType': makeObjectPropertySetter(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const SERVICE_PROVIDER_PARSERS =
|
||||||
|
makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'ProviderName': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ProviderSite': makeObjectPropertySetter(XLink.readHref),
|
||||||
|
'ServiceContact': makeObjectPropertySetter(
|
||||||
|
readServiceContact)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @inheritDoc
|
* @inheritDoc
|
||||||
*/
|
*/
|
||||||
@@ -36,7 +217,7 @@ OWS.prototype.readFromDocument = function(doc) {
|
|||||||
*/
|
*/
|
||||||
OWS.prototype.readFromNode = function(node) {
|
OWS.prototype.readFromNode = function(node) {
|
||||||
const owsObject = pushParseAndPop({},
|
const owsObject = pushParseAndPop({},
|
||||||
OWS.PARSERS_, node, []);
|
PARSERS, node, []);
|
||||||
return owsObject ? owsObject : null;
|
return owsObject ? owsObject : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -44,387 +225,176 @@ OWS.prototype.readFromNode = function(node) {
|
|||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The address.
|
* @return {Object|undefined} The address.
|
||||||
*/
|
*/
|
||||||
OWS.readAddress_ = function(node, objectStack) {
|
function readAddress(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.ADDRESS_PARSERS_, node, objectStack);
|
ADDRESS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The values.
|
* @return {Object|undefined} The values.
|
||||||
*/
|
*/
|
||||||
OWS.readAllowedValues_ = function(node, objectStack) {
|
function readAllowedValues(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.ALLOWED_VALUES_PARSERS_, node, objectStack);
|
ALLOWED_VALUES_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The constraint.
|
* @return {Object|undefined} The constraint.
|
||||||
*/
|
*/
|
||||||
OWS.readConstraint_ = function(node, objectStack) {
|
function readConstraint(node, objectStack) {
|
||||||
const name = node.getAttribute('name');
|
const name = node.getAttribute('name');
|
||||||
if (!name) {
|
if (!name) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return pushParseAndPop({'name': name},
|
return pushParseAndPop({'name': name},
|
||||||
OWS.CONSTRAINT_PARSERS_, node,
|
CONSTRAINT_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The contact info.
|
* @return {Object|undefined} The contact info.
|
||||||
*/
|
*/
|
||||||
OWS.readContactInfo_ = function(node, objectStack) {
|
function readContactInfo(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.CONTACT_INFO_PARSERS_, node, objectStack);
|
CONTACT_INFO_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The DCP.
|
* @return {Object|undefined} The DCP.
|
||||||
*/
|
*/
|
||||||
OWS.readDcp_ = function(node, objectStack) {
|
function readDcp(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.DCP_PARSERS_, node, objectStack);
|
DCP_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The GET object.
|
* @return {Object|undefined} The GET object.
|
||||||
*/
|
*/
|
||||||
OWS.readGet_ = function(node, objectStack) {
|
function readGet(node, objectStack) {
|
||||||
const href = XLink.readHref(node);
|
const href = XLink.readHref(node);
|
||||||
if (!href) {
|
if (!href) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return pushParseAndPop({'href': href},
|
return pushParseAndPop({'href': href},
|
||||||
OWS.REQUEST_METHOD_PARSERS_, node, objectStack);
|
REQUEST_METHOD_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The HTTP object.
|
* @return {Object|undefined} The HTTP object.
|
||||||
*/
|
*/
|
||||||
OWS.readHttp_ = function(node, objectStack) {
|
function readHttp(node, objectStack) {
|
||||||
return pushParseAndPop({}, OWS.HTTP_PARSERS_,
|
return pushParseAndPop({}, HTTP_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The operation.
|
* @return {Object|undefined} The operation.
|
||||||
*/
|
*/
|
||||||
OWS.readOperation_ = function(node, objectStack) {
|
function readOperation(node, objectStack) {
|
||||||
const name = node.getAttribute('name');
|
const name = node.getAttribute('name');
|
||||||
const value = pushParseAndPop({},
|
const value = pushParseAndPop({},
|
||||||
OWS.OPERATION_PARSERS_, node, objectStack);
|
OPERATION_PARSERS, node, objectStack);
|
||||||
if (!value) {
|
if (!value) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
const object = /** @type {Object} */
|
const object = /** @type {Object} */
|
||||||
(objectStack[objectStack.length - 1]);
|
(objectStack[objectStack.length - 1]);
|
||||||
object[name] = value;
|
object[name] = value;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The operations metadata.
|
* @return {Object|undefined} The operations metadata.
|
||||||
*/
|
*/
|
||||||
OWS.readOperationsMetadata_ = function(node,
|
function readOperationsMetadata(node,
|
||||||
objectStack) {
|
objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.OPERATIONS_METADATA_PARSERS_, node,
|
OPERATIONS_METADATA_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The phone.
|
* @return {Object|undefined} The phone.
|
||||||
*/
|
*/
|
||||||
OWS.readPhone_ = function(node, objectStack) {
|
function readPhone(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
OWS.PHONE_PARSERS_, node, objectStack);
|
PHONE_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The service identification.
|
* @return {Object|undefined} The service identification.
|
||||||
*/
|
*/
|
||||||
OWS.readServiceIdentification_ = function(node,
|
function readServiceIdentification(node,
|
||||||
objectStack) {
|
objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, OWS.SERVICE_IDENTIFICATION_PARSERS_, node,
|
{}, SERVICE_IDENTIFICATION_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The service contact.
|
* @return {Object|undefined} The service contact.
|
||||||
*/
|
*/
|
||||||
OWS.readServiceContact_ = function(node, objectStack) {
|
function readServiceContact(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, OWS.SERVICE_CONTACT_PARSERS_, node,
|
{}, SERVICE_CONTACT_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} The service provider.
|
* @return {Object|undefined} The service provider.
|
||||||
*/
|
*/
|
||||||
OWS.readServiceProvider_ = function(node, objectStack) {
|
function readServiceProvider(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, OWS.SERVICE_PROVIDER_PARSERS_, node,
|
{}, SERVICE_PROVIDER_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {string|undefined} The value.
|
* @return {string|undefined} The value.
|
||||||
*/
|
*/
|
||||||
OWS.readValue_ = function(node, objectStack) {
|
function readValue(node, objectStack) {
|
||||||
return XSD.readString(node);
|
return XSD.readString(node);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Array.<string>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.NAMESPACE_URIS_ = [
|
|
||||||
null,
|
|
||||||
'http://www.opengis.net/ows/1.1'
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'ServiceIdentification': makeObjectPropertySetter(
|
|
||||||
OWS.readServiceIdentification_),
|
|
||||||
'ServiceProvider': makeObjectPropertySetter(
|
|
||||||
OWS.readServiceProvider_),
|
|
||||||
'OperationsMetadata': makeObjectPropertySetter(
|
|
||||||
OWS.readOperationsMetadata_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.ADDRESS_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'DeliveryPoint': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'City': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'AdministrativeArea': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'PostalCode': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Country': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'ElectronicMailAddress': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.ALLOWED_VALUES_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Value': makeObjectPropertyPusher(OWS.readValue_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.CONSTRAINT_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'AllowedValues': makeObjectPropertySetter(
|
|
||||||
OWS.readAllowedValues_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.CONTACT_INFO_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Phone': makeObjectPropertySetter(OWS.readPhone_),
|
|
||||||
'Address': makeObjectPropertySetter(OWS.readAddress_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.DCP_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'HTTP': makeObjectPropertySetter(OWS.readHttp_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.HTTP_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Get': makeObjectPropertyPusher(OWS.readGet_),
|
|
||||||
'Post': undefined // TODO
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.OPERATION_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'DCP': makeObjectPropertySetter(OWS.readDcp_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.OPERATIONS_METADATA_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Operation': OWS.readOperation_
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.PHONE_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Voice': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Facsimile': makeObjectPropertySetter(XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.REQUEST_METHOD_PARSERS_ = makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Constraint': makeObjectPropertyPusher(
|
|
||||||
OWS.readConstraint_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.SERVICE_CONTACT_PARSERS_ =
|
|
||||||
makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'IndividualName': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'PositionName': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'ContactInfo': makeObjectPropertySetter(
|
|
||||||
OWS.readContactInfo_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.SERVICE_IDENTIFICATION_PARSERS_ =
|
|
||||||
makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'Abstract': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'AccessConstraints': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Fees': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Title': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'ServiceTypeVersion': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'ServiceType': makeObjectPropertySetter(XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
OWS.SERVICE_PROVIDER_PARSERS_ =
|
|
||||||
makeStructureNS(
|
|
||||||
OWS.NAMESPACE_URIS_, {
|
|
||||||
'ProviderName': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'ProviderSite': makeObjectPropertySetter(XLink.readHref),
|
|
||||||
'ServiceContact': makeObjectPropertySetter(
|
|
||||||
OWS.readServiceContact_)
|
|
||||||
});
|
|
||||||
export default OWS;
|
export default OWS;
|
||||||
|
|||||||
+138
-174
@@ -234,9 +234,8 @@ WFS.prototype.readFeatureCollectionMetadataFromDocument = function(doc) {
|
|||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.FEATURE_COLLECTION_PARSERS_ = {
|
const FEATURE_COLLECTION_PARSERS = {
|
||||||
'http://www.opengis.net/gml': {
|
'http://www.opengis.net/gml': {
|
||||||
'boundedBy': makeObjectPropertySetter(
|
'boundedBy': makeObjectPropertySetter(
|
||||||
GMLBase.prototype.readGeometryElement, 'bounds')
|
GMLBase.prototype.readGeometryElement, 'bounds')
|
||||||
@@ -256,16 +255,15 @@ WFS.prototype.readFeatureCollectionMetadataFromNode = function(node) {
|
|||||||
result['numberOfFeatures'] = value;
|
result['numberOfFeatures'] = value;
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
/** @type {ol.WFSFeatureCollectionMetadata} */ (result),
|
/** @type {ol.WFSFeatureCollectionMetadata} */ (result),
|
||||||
WFS.FEATURE_COLLECTION_PARSERS_, node, [], this.gmlFormat_);
|
FEATURE_COLLECTION_PARSERS, node, [], this.gmlFormat_);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.TRANSACTION_SUMMARY_PARSERS_ = {
|
const TRANSACTION_SUMMARY_PARSERS = {
|
||||||
'http://www.opengis.net/wfs': {
|
'http://www.opengis.net/wfs': {
|
||||||
'totalInserted': makeObjectPropertySetter(
|
'totalInserted': makeObjectPropertySetter(
|
||||||
XSD.readNonNegativeInteger),
|
XSD.readNonNegativeInteger),
|
||||||
@@ -281,20 +279,18 @@ WFS.TRANSACTION_SUMMARY_PARSERS_ = {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Transaction Summary.
|
* @return {Object|undefined} Transaction Summary.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.readTransactionSummary_ = function(node, objectStack) {
|
function readTransactionSummary(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WFS.TRANSACTION_SUMMARY_PARSERS_, node, objectStack);
|
{}, TRANSACTION_SUMMARY_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.OGC_FID_PARSERS_ = {
|
const OGC_FID_PARSERS = {
|
||||||
'http://www.opengis.net/ogc': {
|
'http://www.opengis.net/ogc': {
|
||||||
'FeatureId': makeArrayPusher(function(node, objectStack) {
|
'FeatureId': makeArrayPusher(function(node, objectStack) {
|
||||||
return node.getAttribute('fid');
|
return node.getAttribute('fid');
|
||||||
@@ -306,21 +302,19 @@ WFS.OGC_FID_PARSERS_ = {
|
|||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.fidParser_ = function(node, objectStack) {
|
function fidParser(node, objectStack) {
|
||||||
parseNode(WFS.OGC_FID_PARSERS_, node, objectStack);
|
parseNode(OGC_FID_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.INSERT_RESULTS_PARSERS_ = {
|
const INSERT_RESULTS_PARSERS = {
|
||||||
'http://www.opengis.net/wfs': {
|
'http://www.opengis.net/wfs': {
|
||||||
'Feature': WFS.fidParser_
|
'Feature': fidParser
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -329,25 +323,23 @@ WFS.INSERT_RESULTS_PARSERS_ = {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Array.<string>|undefined} Insert results.
|
* @return {Array.<string>|undefined} Insert results.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.readInsertResults_ = function(node, objectStack) {
|
function readInsertResults(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
[], WFS.INSERT_RESULTS_PARSERS_, node, objectStack);
|
[], INSERT_RESULTS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.TRANSACTION_RESPONSE_PARSERS_ = {
|
const TRANSACTION_RESPONSE_PARSERS = {
|
||||||
'http://www.opengis.net/wfs': {
|
'http://www.opengis.net/wfs': {
|
||||||
'TransactionSummary': makeObjectPropertySetter(
|
'TransactionSummary': makeObjectPropertySetter(
|
||||||
WFS.readTransactionSummary_, 'transactionSummary'),
|
readTransactionSummary, 'transactionSummary'),
|
||||||
'InsertResults': makeObjectPropertySetter(
|
'InsertResults': makeObjectPropertySetter(
|
||||||
WFS.readInsertResults_, 'insertIds')
|
readInsertResults, 'insertIds')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -373,15 +365,14 @@ WFS.prototype.readTransactionResponseFromDocument = function(doc) {
|
|||||||
WFS.prototype.readTransactionResponseFromNode = function(node) {
|
WFS.prototype.readTransactionResponseFromNode = function(node) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
/** @type {ol.WFSTransactionResponse} */({}),
|
/** @type {ol.WFSTransactionResponse} */({}),
|
||||||
WFS.TRANSACTION_RESPONSE_PARSERS_, node, []);
|
TRANSACTION_RESPONSE_PARSERS, node, []);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.QUERY_SERIALIZERS_ = {
|
const QUERY_SERIALIZERS = {
|
||||||
'http://www.opengis.net/wfs': {
|
'http://www.opengis.net/wfs': {
|
||||||
'PropertyName': makeChildAppender(XSD.writeStringTextNode)
|
'PropertyName': makeChildAppender(XSD.writeStringTextNode)
|
||||||
}
|
}
|
||||||
@@ -392,9 +383,8 @@ WFS.QUERY_SERIALIZERS_ = {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.Feature} feature Feature.
|
* @param {ol.Feature} feature Feature.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeFeature_ = function(node, feature, objectStack) {
|
function writeFeature(node, feature, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
const featureType = context['featureType'];
|
const featureType = context['featureType'];
|
||||||
const featureNS = context['featureNS'];
|
const featureNS = context['featureNS'];
|
||||||
@@ -406,31 +396,29 @@ WFS.writeFeature_ = function(node, feature, objectStack) {
|
|||||||
} else {
|
} else {
|
||||||
GML3.prototype.writeFeatureElement(child, feature, objectStack);
|
GML3.prototype.writeFeatureElement(child, feature, objectStack);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {number|string} fid Feature identifier.
|
* @param {number|string} fid Feature identifier.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeOgcFidFilter_ = function(node, fid, objectStack) {
|
function writeOgcFidFilter(node, fid, objectStack) {
|
||||||
const filter = createElementNS(WFS.OGCNS, 'Filter');
|
const filter = createElementNS(WFS.OGCNS, 'Filter');
|
||||||
const child = createElementNS(WFS.OGCNS, 'FeatureId');
|
const child = createElementNS(WFS.OGCNS, 'FeatureId');
|
||||||
filter.appendChild(child);
|
filter.appendChild(child);
|
||||||
child.setAttribute('fid', fid);
|
child.setAttribute('fid', fid);
|
||||||
node.appendChild(filter);
|
node.appendChild(filter);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string|undefined} featurePrefix The prefix of the feature.
|
* @param {string|undefined} featurePrefix The prefix of the feature.
|
||||||
* @param {string} featureType The type of the feature.
|
* @param {string} featureType The type of the feature.
|
||||||
* @returns {string} The value of the typeName property.
|
* @returns {string} The value of the typeName property.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.getTypeName_ = function(featurePrefix, featureType) {
|
function getTypeName(featurePrefix, featureType) {
|
||||||
featurePrefix = featurePrefix ? featurePrefix :
|
featurePrefix = featurePrefix ? featurePrefix :
|
||||||
WFS.FEATURE_PREFIX;
|
WFS.FEATURE_PREFIX;
|
||||||
const prefix = featurePrefix + ':';
|
const prefix = featurePrefix + ':';
|
||||||
@@ -440,28 +428,41 @@ WFS.getTypeName_ = function(featurePrefix, featureType) {
|
|||||||
} else {
|
} else {
|
||||||
return prefix + featureType;
|
return prefix + featureType;
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.Feature} feature Feature.
|
* @param {ol.Feature} feature Feature.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeDelete_ = function(node, feature, objectStack) {
|
function writeDelete(node, feature, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
assert(feature.getId() !== undefined, 26); // Features must have an id set
|
assert(feature.getId() !== undefined, 26); // Features must have an id set
|
||||||
const featureType = context['featureType'];
|
const featureType = context['featureType'];
|
||||||
const featurePrefix = context['featurePrefix'];
|
const featurePrefix = context['featurePrefix'];
|
||||||
const featureNS = context['featureNS'];
|
const featureNS = context['featureNS'];
|
||||||
const typeName = WFS.getTypeName_(featurePrefix, featureType);
|
const typeName = getTypeName(featurePrefix, featureType);
|
||||||
node.setAttribute('typeName', typeName);
|
node.setAttribute('typeName', typeName);
|
||||||
setAttributeNS(node, WFS.XMLNS, 'xmlns:' + featurePrefix,
|
setAttributeNS(node, WFS.XMLNS, 'xmlns:' + featurePrefix,
|
||||||
featureNS);
|
featureNS);
|
||||||
const fid = feature.getId();
|
const fid = feature.getId();
|
||||||
if (fid !== undefined) {
|
if (fid !== undefined) {
|
||||||
WFS.writeOgcFidFilter_(node, fid, objectStack);
|
writeOgcFidFilter(node, fid, objectStack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
||||||
|
*/
|
||||||
|
const TRANSACTION_SERIALIZERS = {
|
||||||
|
'http://www.opengis.net/wfs': {
|
||||||
|
'Insert': makeChildAppender(writeFeature),
|
||||||
|
'Update': makeChildAppender(writeUpdate),
|
||||||
|
'Delete': makeChildAppender(writeDelete),
|
||||||
|
'Property': makeChildAppender(writeProperty),
|
||||||
|
'Native': makeChildAppender(writeNative)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -470,15 +471,14 @@ WFS.writeDelete_ = function(node, feature, objectStack) {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.Feature} feature Feature.
|
* @param {ol.Feature} feature Feature.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeUpdate_ = function(node, feature, objectStack) {
|
function writeUpdate(node, feature, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
assert(feature.getId() !== undefined, 27); // Features must have an id set
|
assert(feature.getId() !== undefined, 27); // Features must have an id set
|
||||||
const featureType = context['featureType'];
|
const featureType = context['featureType'];
|
||||||
const featurePrefix = context['featurePrefix'];
|
const featurePrefix = context['featurePrefix'];
|
||||||
const featureNS = context['featureNS'];
|
const featureNS = context['featureNS'];
|
||||||
const typeName = WFS.getTypeName_(featurePrefix, featureType);
|
const typeName = getTypeName(featurePrefix, featureType);
|
||||||
const geometryName = feature.getGeometryName();
|
const geometryName = feature.getGeometryName();
|
||||||
node.setAttribute('typeName', typeName);
|
node.setAttribute('typeName', typeName);
|
||||||
setAttributeNS(node, WFS.XMLNS, 'xmlns:' + featurePrefix,
|
setAttributeNS(node, WFS.XMLNS, 'xmlns:' + featurePrefix,
|
||||||
@@ -500,21 +500,20 @@ WFS.writeUpdate_ = function(node, feature, objectStack) {
|
|||||||
pushSerializeAndPop(/** @type {ol.XmlNodeStackItem} */ (
|
pushSerializeAndPop(/** @type {ol.XmlNodeStackItem} */ (
|
||||||
{'gmlVersion': context['gmlVersion'], node: node,
|
{'gmlVersion': context['gmlVersion'], node: node,
|
||||||
'hasZ': context['hasZ'], 'srsName': context['srsName']}),
|
'hasZ': context['hasZ'], 'srsName': context['srsName']}),
|
||||||
WFS.TRANSACTION_SERIALIZERS_,
|
TRANSACTION_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Property'), values,
|
makeSimpleNodeFactory('Property'), values,
|
||||||
objectStack);
|
objectStack);
|
||||||
WFS.writeOgcFidFilter_(node, fid, objectStack);
|
writeOgcFidFilter(node, fid, objectStack);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Object} pair Property name and value.
|
* @param {Object} pair Property name and value.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeProperty_ = function(node, pair, objectStack) {
|
function writeProperty(node, pair, objectStack) {
|
||||||
const name = createElementNS(WFS.WFSNS, 'Name');
|
const name = createElementNS(WFS.WFSNS, 'Name');
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
const gmlVersion = context['gmlVersion'];
|
const gmlVersion = context['gmlVersion'];
|
||||||
@@ -535,7 +534,7 @@ WFS.writeProperty_ = function(node, pair, objectStack) {
|
|||||||
XSD.writeStringTextNode(value, pair.value);
|
XSD.writeStringTextNode(value, pair.value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -543,9 +542,8 @@ WFS.writeProperty_ = function(node, pair, objectStack) {
|
|||||||
* @param {{vendorId: string, safeToIgnore: boolean, value: string}}
|
* @param {{vendorId: string, safeToIgnore: boolean, value: string}}
|
||||||
* nativeElement The native element.
|
* nativeElement The native element.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeNative_ = function(node, nativeElement, objectStack) {
|
function writeNative(node, nativeElement, objectStack) {
|
||||||
if (nativeElement.vendorId) {
|
if (nativeElement.vendorId) {
|
||||||
node.setAttribute('vendorId', nativeElement.vendorId);
|
node.setAttribute('vendorId', nativeElement.vendorId);
|
||||||
}
|
}
|
||||||
@@ -555,20 +553,34 @@ WFS.writeNative_ = function(node, nativeElement, objectStack) {
|
|||||||
if (nativeElement.value !== undefined) {
|
if (nativeElement.value !== undefined) {
|
||||||
XSD.writeStringTextNode(node, nativeElement.value);
|
XSD.writeStringTextNode(node, nativeElement.value);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.TRANSACTION_SERIALIZERS_ = {
|
const GETFEATURE_SERIALIZERS = {
|
||||||
'http://www.opengis.net/wfs': {
|
'http://www.opengis.net/wfs': {
|
||||||
'Insert': makeChildAppender(WFS.writeFeature_),
|
'Query': makeChildAppender(writeQuery)
|
||||||
'Update': makeChildAppender(WFS.writeUpdate_),
|
},
|
||||||
'Delete': makeChildAppender(WFS.writeDelete_),
|
'http://www.opengis.net/ogc': {
|
||||||
'Property': makeChildAppender(WFS.writeProperty_),
|
'During': makeChildAppender(writeDuringFilter),
|
||||||
'Native': makeChildAppender(WFS.writeNative_)
|
'And': makeChildAppender(writeLogicalFilter),
|
||||||
|
'Or': makeChildAppender(writeLogicalFilter),
|
||||||
|
'Not': makeChildAppender(writeNotFilter),
|
||||||
|
'BBOX': makeChildAppender(writeBboxFilter),
|
||||||
|
'Contains': makeChildAppender(writeContainsFilter),
|
||||||
|
'Intersects': makeChildAppender(writeIntersectsFilter),
|
||||||
|
'Within': makeChildAppender(writeWithinFilter),
|
||||||
|
'PropertyIsEqualTo': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsNotEqualTo': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsLessThan': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsLessThanOrEqualTo': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsGreaterThan': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsGreaterThanOrEqualTo': makeChildAppender(writeComparisonFilter),
|
||||||
|
'PropertyIsNull': makeChildAppender(writeIsNullFilter),
|
||||||
|
'PropertyIsBetween': makeChildAppender(writeIsBetweenFilter),
|
||||||
|
'PropertyIsLike': makeChildAppender(writeIsLikeFilter)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -577,9 +589,8 @@ WFS.TRANSACTION_SERIALIZERS_ = {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {string} featureType Feature type.
|
* @param {string} featureType Feature type.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeQuery_ = function(node, featureType, objectStack) {
|
function writeQuery(node, featureType, objectStack) {
|
||||||
const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
const featurePrefix = context['featurePrefix'];
|
const featurePrefix = context['featurePrefix'];
|
||||||
const featureNS = context['featureNS'];
|
const featureNS = context['featureNS'];
|
||||||
@@ -588,7 +599,7 @@ WFS.writeQuery_ = function(node, featureType, objectStack) {
|
|||||||
let typeName;
|
let typeName;
|
||||||
// If feature prefix is not defined, we must not use the default prefix.
|
// If feature prefix is not defined, we must not use the default prefix.
|
||||||
if (featurePrefix) {
|
if (featurePrefix) {
|
||||||
typeName = WFS.getTypeName_(featurePrefix, featureType);
|
typeName = getTypeName(featurePrefix, featureType);
|
||||||
} else {
|
} else {
|
||||||
typeName = featureType;
|
typeName = featureType;
|
||||||
}
|
}
|
||||||
@@ -603,101 +614,95 @@ WFS.writeQuery_ = function(node, featureType, objectStack) {
|
|||||||
const item = /** @type {ol.XmlNodeStackItem} */ (assign({}, context));
|
const item = /** @type {ol.XmlNodeStackItem} */ (assign({}, context));
|
||||||
item.node = node;
|
item.node = node;
|
||||||
pushSerializeAndPop(item,
|
pushSerializeAndPop(item,
|
||||||
WFS.QUERY_SERIALIZERS_,
|
QUERY_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('PropertyName'), propertyNames,
|
makeSimpleNodeFactory('PropertyName'), propertyNames,
|
||||||
objectStack);
|
objectStack);
|
||||||
const filter = context['filter'];
|
const filter = context['filter'];
|
||||||
if (filter) {
|
if (filter) {
|
||||||
const child = createElementNS(WFS.OGCNS, 'Filter');
|
const child = createElementNS(WFS.OGCNS, 'Filter');
|
||||||
node.appendChild(child);
|
node.appendChild(child);
|
||||||
WFS.writeFilterCondition_(child, filter, objectStack);
|
writeFilterCondition(child, filter, objectStack);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Filter} filter Filter.
|
* @param {ol.format.filter.Filter} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeFilterCondition_ = function(node, filter, objectStack) {
|
function writeFilterCondition(node, filter, objectStack) {
|
||||||
/** @type {ol.XmlNodeStackItem} */
|
/** @type {ol.XmlNodeStackItem} */
|
||||||
const item = {node: node};
|
const item = {node: node};
|
||||||
pushSerializeAndPop(item,
|
pushSerializeAndPop(item,
|
||||||
WFS.GETFEATURE_SERIALIZERS_,
|
GETFEATURE_SERIALIZERS,
|
||||||
makeSimpleNodeFactory(filter.getTagName()),
|
makeSimpleNodeFactory(filter.getTagName()),
|
||||||
[filter], objectStack);
|
[filter], objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Bbox} filter Filter.
|
* @param {ol.format.filter.Bbox} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeBboxFilter_ = function(node, filter, objectStack) {
|
function writeBboxFilter(node, filter, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
context['srsName'] = filter.srsName;
|
context['srsName'] = filter.srsName;
|
||||||
|
|
||||||
WFS.writeOgcPropertyName_(node, filter.geometryName);
|
writeOgcPropertyName(node, filter.geometryName);
|
||||||
GML3.prototype.writeGeometryElement(node, filter.extent, objectStack);
|
GML3.prototype.writeGeometryElement(node, filter.extent, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Contains} filter Filter.
|
* @param {ol.format.filter.Contains} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeContainsFilter_ = function(node, filter, objectStack) {
|
function writeContainsFilter(node, filter, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
context['srsName'] = filter.srsName;
|
context['srsName'] = filter.srsName;
|
||||||
|
|
||||||
WFS.writeOgcPropertyName_(node, filter.geometryName);
|
writeOgcPropertyName(node, filter.geometryName);
|
||||||
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Intersects} filter Filter.
|
* @param {ol.format.filter.Intersects} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeIntersectsFilter_ = function(node, filter, objectStack) {
|
function writeIntersectsFilter(node, filter, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
context['srsName'] = filter.srsName;
|
context['srsName'] = filter.srsName;
|
||||||
|
|
||||||
WFS.writeOgcPropertyName_(node, filter.geometryName);
|
writeOgcPropertyName(node, filter.geometryName);
|
||||||
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Within} filter Filter.
|
* @param {ol.format.filter.Within} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeWithinFilter_ = function(node, filter, objectStack) {
|
function writeWithinFilter(node, filter, objectStack) {
|
||||||
const context = objectStack[objectStack.length - 1];
|
const context = objectStack[objectStack.length - 1];
|
||||||
context['srsName'] = filter.srsName;
|
context['srsName'] = filter.srsName;
|
||||||
|
|
||||||
WFS.writeOgcPropertyName_(node, filter.geometryName);
|
writeOgcPropertyName(node, filter.geometryName);
|
||||||
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
GML3.prototype.writeGeometryElement(node, filter.geometry, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.During} filter Filter.
|
* @param {ol.format.filter.During} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeDuringFilter_ = function(node, filter, objectStack) {
|
function writeDuringFilter(node, filter, objectStack) {
|
||||||
|
|
||||||
const valueReference = createElementNS(WFS.FESNS, 'ValueReference');
|
const valueReference = createElementNS(WFS.FESNS, 'ValueReference');
|
||||||
XSD.writeStringTextNode(valueReference, filter.propertyName);
|
XSD.writeStringTextNode(valueReference, filter.propertyName);
|
||||||
@@ -709,190 +714,150 @@ WFS.writeDuringFilter_ = function(node, filter, objectStack) {
|
|||||||
|
|
||||||
const begin = createElementNS(GMLBase.GMLNS, 'begin');
|
const begin = createElementNS(GMLBase.GMLNS, 'begin');
|
||||||
timePeriod.appendChild(begin);
|
timePeriod.appendChild(begin);
|
||||||
WFS.writeTimeInstant_(begin, filter.begin);
|
writeTimeInstant(begin, filter.begin);
|
||||||
|
|
||||||
const end = createElementNS(GMLBase.GMLNS, 'end');
|
const end = createElementNS(GMLBase.GMLNS, 'end');
|
||||||
timePeriod.appendChild(end);
|
timePeriod.appendChild(end);
|
||||||
WFS.writeTimeInstant_(end, filter.end);
|
writeTimeInstant(end, filter.end);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.LogicalNary} filter Filter.
|
* @param {ol.format.filter.LogicalNary} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeLogicalFilter_ = function(node, filter, objectStack) {
|
function writeLogicalFilter(node, filter, objectStack) {
|
||||||
/** @type {ol.XmlNodeStackItem} */
|
/** @type {ol.XmlNodeStackItem} */
|
||||||
const item = {node: node};
|
const item = {node: node};
|
||||||
const conditions = filter.conditions;
|
const conditions = filter.conditions;
|
||||||
for (let i = 0, ii = conditions.length; i < ii; ++i) {
|
for (let i = 0, ii = conditions.length; i < ii; ++i) {
|
||||||
const condition = conditions[i];
|
const condition = conditions[i];
|
||||||
pushSerializeAndPop(item,
|
pushSerializeAndPop(item,
|
||||||
WFS.GETFEATURE_SERIALIZERS_,
|
GETFEATURE_SERIALIZERS,
|
||||||
makeSimpleNodeFactory(condition.getTagName()),
|
makeSimpleNodeFactory(condition.getTagName()),
|
||||||
[condition], objectStack);
|
[condition], objectStack);
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.Not} filter Filter.
|
* @param {ol.format.filter.Not} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeNotFilter_ = function(node, filter, objectStack) {
|
function writeNotFilter(node, filter, objectStack) {
|
||||||
/** @type {ol.XmlNodeStackItem} */
|
/** @type {ol.XmlNodeStackItem} */
|
||||||
const item = {node: node};
|
const item = {node: node};
|
||||||
const condition = filter.condition;
|
const condition = filter.condition;
|
||||||
pushSerializeAndPop(item,
|
pushSerializeAndPop(item,
|
||||||
WFS.GETFEATURE_SERIALIZERS_,
|
GETFEATURE_SERIALIZERS,
|
||||||
makeSimpleNodeFactory(condition.getTagName()),
|
makeSimpleNodeFactory(condition.getTagName()),
|
||||||
[condition], objectStack);
|
[condition], objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.ComparisonBinary} filter Filter.
|
* @param {ol.format.filter.ComparisonBinary} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeComparisonFilter_ = function(node, filter, objectStack) {
|
function writeComparisonFilter(node, filter, objectStack) {
|
||||||
if (filter.matchCase !== undefined) {
|
if (filter.matchCase !== undefined) {
|
||||||
node.setAttribute('matchCase', filter.matchCase.toString());
|
node.setAttribute('matchCase', filter.matchCase.toString());
|
||||||
}
|
}
|
||||||
WFS.writeOgcPropertyName_(node, filter.propertyName);
|
writeOgcPropertyName(node, filter.propertyName);
|
||||||
WFS.writeOgcLiteral_(node, '' + filter.expression);
|
writeOgcLiteral(node, '' + filter.expression);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.IsNull} filter Filter.
|
* @param {ol.format.filter.IsNull} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeIsNullFilter_ = function(node, filter, objectStack) {
|
function writeIsNullFilter(node, filter, objectStack) {
|
||||||
WFS.writeOgcPropertyName_(node, filter.propertyName);
|
writeOgcPropertyName(node, filter.propertyName);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.IsBetween} filter Filter.
|
* @param {ol.format.filter.IsBetween} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeIsBetweenFilter_ = function(node, filter, objectStack) {
|
function writeIsBetweenFilter(node, filter, objectStack) {
|
||||||
WFS.writeOgcPropertyName_(node, filter.propertyName);
|
writeOgcPropertyName(node, filter.propertyName);
|
||||||
|
|
||||||
const lowerBoundary = createElementNS(WFS.OGCNS, 'LowerBoundary');
|
const lowerBoundary = createElementNS(WFS.OGCNS, 'LowerBoundary');
|
||||||
node.appendChild(lowerBoundary);
|
node.appendChild(lowerBoundary);
|
||||||
WFS.writeOgcLiteral_(lowerBoundary, '' + filter.lowerBoundary);
|
writeOgcLiteral(lowerBoundary, '' + filter.lowerBoundary);
|
||||||
|
|
||||||
const upperBoundary = createElementNS(WFS.OGCNS, 'UpperBoundary');
|
const upperBoundary = createElementNS(WFS.OGCNS, 'UpperBoundary');
|
||||||
node.appendChild(upperBoundary);
|
node.appendChild(upperBoundary);
|
||||||
WFS.writeOgcLiteral_(upperBoundary, '' + filter.upperBoundary);
|
writeOgcLiteral(upperBoundary, '' + filter.upperBoundary);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {ol.format.filter.IsLike} filter Filter.
|
* @param {ol.format.filter.IsLike} filter Filter.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeIsLikeFilter_ = function(node, filter, objectStack) {
|
function writeIsLikeFilter(node, filter, objectStack) {
|
||||||
node.setAttribute('wildCard', filter.wildCard);
|
node.setAttribute('wildCard', filter.wildCard);
|
||||||
node.setAttribute('singleChar', filter.singleChar);
|
node.setAttribute('singleChar', filter.singleChar);
|
||||||
node.setAttribute('escapeChar', filter.escapeChar);
|
node.setAttribute('escapeChar', filter.escapeChar);
|
||||||
if (filter.matchCase !== undefined) {
|
if (filter.matchCase !== undefined) {
|
||||||
node.setAttribute('matchCase', filter.matchCase.toString());
|
node.setAttribute('matchCase', filter.matchCase.toString());
|
||||||
}
|
}
|
||||||
WFS.writeOgcPropertyName_(node, filter.propertyName);
|
writeOgcPropertyName(node, filter.propertyName);
|
||||||
WFS.writeOgcLiteral_(node, '' + filter.pattern);
|
writeOgcLiteral(node, '' + filter.pattern);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} tagName Tag name.
|
* @param {string} tagName Tag name.
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {string} value Value.
|
* @param {string} value Value.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeOgcExpression_ = function(tagName, node, value) {
|
function writeOgcExpression(tagName, node, value) {
|
||||||
const property = createElementNS(WFS.OGCNS, tagName);
|
const property = createElementNS(WFS.OGCNS, tagName);
|
||||||
XSD.writeStringTextNode(property, value);
|
XSD.writeStringTextNode(property, value);
|
||||||
node.appendChild(property);
|
node.appendChild(property);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {string} value PropertyName value.
|
* @param {string} value PropertyName value.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeOgcPropertyName_ = function(node, value) {
|
function writeOgcPropertyName(node, value) {
|
||||||
WFS.writeOgcExpression_('PropertyName', node, value);
|
writeOgcExpression('PropertyName', node, value);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {string} value PropertyName value.
|
* @param {string} value PropertyName value.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeOgcLiteral_ = function(node, value) {
|
function writeOgcLiteral(node, value) {
|
||||||
WFS.writeOgcExpression_('Literal', node, value);
|
writeOgcExpression('Literal', node, value);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {string} time PropertyName value.
|
* @param {string} time PropertyName value.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeTimeInstant_ = function(node, time) {
|
function writeTimeInstant(node, time) {
|
||||||
const timeInstant = createElementNS(GMLBase.GMLNS, 'TimeInstant');
|
const timeInstant = createElementNS(GMLBase.GMLNS, 'TimeInstant');
|
||||||
node.appendChild(timeInstant);
|
node.appendChild(timeInstant);
|
||||||
|
|
||||||
const timePosition = createElementNS(GMLBase.GMLNS, 'timePosition');
|
const timePosition = createElementNS(GMLBase.GMLNS, 'timePosition');
|
||||||
timeInstant.appendChild(timePosition);
|
timeInstant.appendChild(timePosition);
|
||||||
XSD.writeStringTextNode(timePosition, time);
|
XSD.writeStringTextNode(timePosition, time);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlSerializer>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WFS.GETFEATURE_SERIALIZERS_ = {
|
|
||||||
'http://www.opengis.net/wfs': {
|
|
||||||
'Query': makeChildAppender(WFS.writeQuery_)
|
|
||||||
},
|
|
||||||
'http://www.opengis.net/ogc': {
|
|
||||||
'During': makeChildAppender(WFS.writeDuringFilter_),
|
|
||||||
'And': makeChildAppender(WFS.writeLogicalFilter_),
|
|
||||||
'Or': makeChildAppender(WFS.writeLogicalFilter_),
|
|
||||||
'Not': makeChildAppender(WFS.writeNotFilter_),
|
|
||||||
'BBOX': makeChildAppender(WFS.writeBboxFilter_),
|
|
||||||
'Contains': makeChildAppender(WFS.writeContainsFilter_),
|
|
||||||
'Intersects': makeChildAppender(WFS.writeIntersectsFilter_),
|
|
||||||
'Within': makeChildAppender(WFS.writeWithinFilter_),
|
|
||||||
'PropertyIsEqualTo': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsNotEqualTo': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsLessThan': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsLessThanOrEqualTo': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsGreaterThan': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsGreaterThanOrEqualTo': makeChildAppender(WFS.writeComparisonFilter_),
|
|
||||||
'PropertyIsNull': makeChildAppender(WFS.writeIsNullFilter_),
|
|
||||||
'PropertyIsBetween': makeChildAppender(WFS.writeIsBetweenFilter_),
|
|
||||||
'PropertyIsLike': makeChildAppender(WFS.writeIsLikeFilter_)
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -904,7 +869,7 @@ WFS.GETFEATURE_SERIALIZERS_ = {
|
|||||||
*/
|
*/
|
||||||
WFS.writeFilter = function(filter) {
|
WFS.writeFilter = function(filter) {
|
||||||
const child = createElementNS(WFS.OGCNS, 'Filter');
|
const child = createElementNS(WFS.OGCNS, 'Filter');
|
||||||
WFS.writeFilterCondition_(child, filter, []);
|
writeFilterCondition(child, filter, []);
|
||||||
return child;
|
return child;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -913,17 +878,16 @@ WFS.writeFilter = function(filter) {
|
|||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<string>} featureTypes Feature types.
|
* @param {Array.<string>} featureTypes Feature types.
|
||||||
* @param {Array.<*>} objectStack Node stack.
|
* @param {Array.<*>} objectStack Node stack.
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WFS.writeGetFeature_ = function(node, featureTypes, objectStack) {
|
function writeGetFeature(node, featureTypes, objectStack) {
|
||||||
const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);
|
||||||
const item = /** @type {ol.XmlNodeStackItem} */ (assign({}, context));
|
const item = /** @type {ol.XmlNodeStackItem} */ (assign({}, context));
|
||||||
item.node = node;
|
item.node = node;
|
||||||
pushSerializeAndPop(item,
|
pushSerializeAndPop(item,
|
||||||
WFS.GETFEATURE_SERIALIZERS_,
|
GETFEATURE_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Query'), featureTypes,
|
makeSimpleNodeFactory('Query'), featureTypes,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -985,7 +949,7 @@ WFS.prototype.writeGetFeature = function(options) {
|
|||||||
};
|
};
|
||||||
assert(Array.isArray(options.featureTypes),
|
assert(Array.isArray(options.featureTypes),
|
||||||
11); // `options.featureTypes` should be an Array
|
11); // `options.featureTypes` should be an Array
|
||||||
WFS.writeGetFeature_(node, /** @type {!Array.<string>} */ (options.featureTypes), [context]);
|
writeGetFeature(node, /** @type {!Array.<string>} */ (options.featureTypes), [context]);
|
||||||
return node;
|
return node;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -1028,7 +992,7 @@ WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
|||||||
'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName};
|
'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName};
|
||||||
assign(obj, baseObj);
|
assign(obj, baseObj);
|
||||||
pushSerializeAndPop(obj,
|
pushSerializeAndPop(obj,
|
||||||
WFS.TRANSACTION_SERIALIZERS_,
|
TRANSACTION_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Insert'), inserts,
|
makeSimpleNodeFactory('Insert'), inserts,
|
||||||
objectStack);
|
objectStack);
|
||||||
}
|
}
|
||||||
@@ -1038,7 +1002,7 @@ WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
|||||||
'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName};
|
'gmlVersion': gmlVersion, 'hasZ': options.hasZ, 'srsName': options.srsName};
|
||||||
assign(obj, baseObj);
|
assign(obj, baseObj);
|
||||||
pushSerializeAndPop(obj,
|
pushSerializeAndPop(obj,
|
||||||
WFS.TRANSACTION_SERIALIZERS_,
|
TRANSACTION_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Update'), updates,
|
makeSimpleNodeFactory('Update'), updates,
|
||||||
objectStack);
|
objectStack);
|
||||||
}
|
}
|
||||||
@@ -1046,7 +1010,7 @@ WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
|||||||
pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
|
pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
|
||||||
'featureType': options.featureType, 'featurePrefix': featurePrefix,
|
'featureType': options.featureType, 'featurePrefix': featurePrefix,
|
||||||
'gmlVersion': gmlVersion, 'srsName': options.srsName},
|
'gmlVersion': gmlVersion, 'srsName': options.srsName},
|
||||||
WFS.TRANSACTION_SERIALIZERS_,
|
TRANSACTION_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Delete'), deletes,
|
makeSimpleNodeFactory('Delete'), deletes,
|
||||||
objectStack);
|
objectStack);
|
||||||
}
|
}
|
||||||
@@ -1054,7 +1018,7 @@ WFS.prototype.writeTransaction = function(inserts, updates, deletes,
|
|||||||
pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
|
pushSerializeAndPop({node: node, 'featureNS': options.featureNS,
|
||||||
'featureType': options.featureType, 'featurePrefix': featurePrefix,
|
'featureType': options.featureType, 'featurePrefix': featurePrefix,
|
||||||
'gmlVersion': gmlVersion, 'srsName': options.srsName},
|
'gmlVersion': gmlVersion, 'srsName': options.srsName},
|
||||||
WFS.TRANSACTION_SERIALIZERS_,
|
TRANSACTION_SERIALIZERS,
|
||||||
makeSimpleNodeFactory('Native'), options.nativeElements,
|
makeSimpleNodeFactory('Native'), options.nativeElements,
|
||||||
objectStack);
|
objectStack);
|
||||||
}
|
}
|
||||||
|
|||||||
+600
-612
File diff suppressed because it is too large
Load Diff
+302
-390
@@ -8,6 +8,7 @@ import XSD from '../format/XSD.js';
|
|||||||
import {makeArrayPusher, makeObjectPropertyPusher, makeObjectPropertySetter,
|
import {makeArrayPusher, makeObjectPropertyPusher, makeObjectPropertySetter,
|
||||||
makeStructureNS, pushParseAndPop} from '../xml.js';
|
makeStructureNS, pushParseAndPop} from '../xml.js';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @classdesc
|
* @classdesc
|
||||||
* Format for reading WMS capabilities data
|
* Format for reading WMS capabilities data
|
||||||
@@ -29,6 +30,242 @@ const WMSCapabilities = function() {
|
|||||||
inherits(WMSCapabilities, XML);
|
inherits(WMSCapabilities, XML);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Array.<string>}
|
||||||
|
*/
|
||||||
|
const NAMESPACE_URIS = [
|
||||||
|
null,
|
||||||
|
'http://www.opengis.net/wms'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Service': makeObjectPropertySetter(readService),
|
||||||
|
'Capability': makeObjectPropertySetter(readCapability)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CAPABILITY_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Request': makeObjectPropertySetter(readRequest),
|
||||||
|
'Exception': makeObjectPropertySetter(readException),
|
||||||
|
'Layer': makeObjectPropertySetter(readCapabilityLayer)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const SERVICE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Name': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Abstract': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'KeywordList': makeObjectPropertySetter(readKeywordList),
|
||||||
|
'OnlineResource': makeObjectPropertySetter(XLink.readHref),
|
||||||
|
'ContactInformation': makeObjectPropertySetter(readContactInformation),
|
||||||
|
'Fees': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'AccessConstraints': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'LayerLimit': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MaxWidth': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MaxHeight': makeObjectPropertySetter(XSD.readNonNegativeInteger)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONTACT_INFORMATION_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'ContactPersonPrimary': makeObjectPropertySetter(readContactPersonPrimary),
|
||||||
|
'ContactPosition': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ContactAddress': makeObjectPropertySetter(readContactAddress),
|
||||||
|
'ContactVoiceTelephone': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ContactFacsimileTelephone': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ContactElectronicMailAddress': makeObjectPropertySetter(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONTACT_PERSON_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'ContactPerson': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'ContactOrganization': makeObjectPropertySetter(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONTACT_ADDRESS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'AddressType': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Address': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'City': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'StateOrProvince': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'PostCode': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Country': makeObjectPropertySetter(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const EXCEPTION_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Format': makeArrayPusher(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const LAYER_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Name': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Abstract': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'KeywordList': makeObjectPropertySetter(readKeywordList),
|
||||||
|
'CRS': makeObjectPropertyPusher(XSD.readString),
|
||||||
|
'EX_GeographicBoundingBox': makeObjectPropertySetter(readEXGeographicBoundingBox),
|
||||||
|
'BoundingBox': makeObjectPropertyPusher(readBoundingBox),
|
||||||
|
'Dimension': makeObjectPropertyPusher(readDimension),
|
||||||
|
'Attribution': makeObjectPropertySetter(readAttribution),
|
||||||
|
'AuthorityURL': makeObjectPropertyPusher(readAuthorityURL),
|
||||||
|
'Identifier': makeObjectPropertyPusher(XSD.readString),
|
||||||
|
'MetadataURL': makeObjectPropertyPusher(readMetadataURL),
|
||||||
|
'DataURL': makeObjectPropertyPusher(readFormatOnlineresource),
|
||||||
|
'FeatureListURL': makeObjectPropertyPusher(readFormatOnlineresource),
|
||||||
|
'Style': makeObjectPropertyPusher(readStyle),
|
||||||
|
'MinScaleDenominator': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'MaxScaleDenominator': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'Layer': makeObjectPropertyPusher(readLayer)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const ATTRIBUTION_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'OnlineResource': makeObjectPropertySetter(XLink.readHref),
|
||||||
|
'LogoURL': makeObjectPropertySetter(readSizedFormatOnlineresource)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS =
|
||||||
|
makeStructureNS(NAMESPACE_URIS, {
|
||||||
|
'westBoundLongitude': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'eastBoundLongitude': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'southBoundLatitude': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'northBoundLatitude': makeObjectPropertySetter(XSD.readDecimal)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const REQUEST_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'GetCapabilities': makeObjectPropertySetter(readOperationType),
|
||||||
|
'GetMap': makeObjectPropertySetter(readOperationType),
|
||||||
|
'GetFeatureInfo': makeObjectPropertySetter(readOperationType)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const OPERATIONTYPE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Format': makeObjectPropertyPusher(XSD.readString),
|
||||||
|
'DCPType': makeObjectPropertyPusher(readDCPType)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const DCPTYPE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'HTTP': makeObjectPropertySetter(readHTTP)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const HTTP_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Get': makeObjectPropertySetter(readFormatOnlineresource),
|
||||||
|
'Post': makeObjectPropertySetter(readFormatOnlineresource)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const STYLE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Name': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Abstract': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'LegendURL': makeObjectPropertyPusher(readSizedFormatOnlineresource),
|
||||||
|
'StyleSheetURL': makeObjectPropertySetter(readFormatOnlineresource),
|
||||||
|
'StyleURL': makeObjectPropertySetter(readFormatOnlineresource)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const FORMAT_ONLINERESOURCE_PARSERS =
|
||||||
|
makeStructureNS(NAMESPACE_URIS, {
|
||||||
|
'Format': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'OnlineResource': makeObjectPropertySetter(XLink.readHref)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const KEYWORDLIST_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Keyword': makeArrayPusher(XSD.readString)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a WMS capabilities document.
|
* Read a WMS capabilities document.
|
||||||
*
|
*
|
||||||
@@ -60,30 +297,28 @@ WMSCapabilities.prototype.readFromNode = function(node) {
|
|||||||
this.version = node.getAttribute('version').trim();
|
this.version = node.getAttribute('version').trim();
|
||||||
const wmsCapabilityObject = pushParseAndPop({
|
const wmsCapabilityObject = pushParseAndPop({
|
||||||
'version': this.version
|
'version': this.version
|
||||||
}, WMSCapabilities.PARSERS_, node, []);
|
}, PARSERS, node, []);
|
||||||
return wmsCapabilityObject ? wmsCapabilityObject : null;
|
return wmsCapabilityObject ? wmsCapabilityObject : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Attribution object.
|
* @return {Object|undefined} Attribution object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readAttribution_ = function(node, objectStack) {
|
function readAttribution(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.ATTRIBUTION_PARSERS_, node, objectStack);
|
{}, ATTRIBUTION_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object} Bounding box object.
|
* @return {Object} Bounding box object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readBoundingBox_ = function(node, objectStack) {
|
function readBoundingBox(node, objectStack) {
|
||||||
const extent = [
|
const extent = [
|
||||||
XSD.readDecimalString(node.getAttribute('minx')),
|
XSD.readDecimalString(node.getAttribute('minx')),
|
||||||
XSD.readDecimalString(node.getAttribute('miny')),
|
XSD.readDecimalString(node.getAttribute('miny')),
|
||||||
@@ -101,19 +336,18 @@ WMSCapabilities.readBoundingBox_ = function(node, objectStack) {
|
|||||||
'extent': extent,
|
'extent': extent,
|
||||||
'res': resolutions
|
'res': resolutions
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {ol.Extent|undefined} Bounding box object.
|
* @return {ol.Extent|undefined} Bounding box object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readEXGeographicBoundingBox_ = function(node, objectStack) {
|
function readEXGeographicBoundingBox(node, objectStack) {
|
||||||
const geographicBoundingBox = pushParseAndPop(
|
const geographicBoundingBox = pushParseAndPop(
|
||||||
{},
|
{},
|
||||||
WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_,
|
EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
if (!geographicBoundingBox) {
|
if (!geographicBoundingBox) {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -134,108 +368,100 @@ WMSCapabilities.readEXGeographicBoundingBox_ = function(node, objectStack) {
|
|||||||
westBoundLongitude, southBoundLatitude,
|
westBoundLongitude, southBoundLatitude,
|
||||||
eastBoundLongitude, northBoundLatitude
|
eastBoundLongitude, northBoundLatitude
|
||||||
];
|
];
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Capability object.
|
* @return {Object|undefined} Capability object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readCapability_ = function(node, objectStack) {
|
function readCapability(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.CAPABILITY_PARSERS_, node, objectStack);
|
{}, CAPABILITY_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Service object.
|
* @return {Object|undefined} Service object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readService_ = function(node, objectStack) {
|
function readService(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.SERVICE_PARSERS_, node, objectStack);
|
{}, SERVICE_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Contact information object.
|
* @return {Object|undefined} Contact information object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readContactInformation_ = function(node, objectStack) {
|
function readContactInformation(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.CONTACT_INFORMATION_PARSERS_,
|
{}, CONTACT_INFORMATION_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Contact person object.
|
* @return {Object|undefined} Contact person object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readContactPersonPrimary_ = function(node, objectStack) {
|
function readContactPersonPrimary(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.CONTACT_PERSON_PARSERS_,
|
{}, CONTACT_PERSON_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Contact address object.
|
* @return {Object|undefined} Contact address object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readContactAddress_ = function(node, objectStack) {
|
function readContactAddress(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.CONTACT_ADDRESS_PARSERS_,
|
{}, CONTACT_ADDRESS_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Array.<string>|undefined} Format array.
|
* @return {Array.<string>|undefined} Format array.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readException_ = function(node, objectStack) {
|
function readException(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
[], WMSCapabilities.EXCEPTION_PARSERS_, node, objectStack);
|
[], EXCEPTION_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @private
|
|
||||||
* @return {Object|undefined} Layer object.
|
* @return {Object|undefined} Layer object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readCapabilityLayer_ = function(node, objectStack) {
|
function readCapabilityLayer(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.LAYER_PARSERS_, node, objectStack);
|
{}, LAYER_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Layer object.
|
* @return {Object|undefined} Layer object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readLayer_ = function(node, objectStack) {
|
function readLayer(node, objectStack) {
|
||||||
const parentLayerObject = /** @type {Object.<string,*>} */
|
const parentLayerObject = /** @type {Object.<string,*>} */
|
||||||
(objectStack[objectStack.length - 1]);
|
(objectStack[objectStack.length - 1]);
|
||||||
|
|
||||||
const layerObject = pushParseAndPop(
|
const layerObject = pushParseAndPop(
|
||||||
{}, WMSCapabilities.LAYER_PARSERS_, node, objectStack);
|
{}, LAYER_PARSERS, node, objectStack);
|
||||||
|
|
||||||
if (!layerObject) {
|
if (!layerObject) {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -300,16 +526,15 @@ WMSCapabilities.readLayer_ = function(node, objectStack) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return layerObject;
|
return layerObject;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object} Dimension object.
|
* @return {Object} Dimension object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readDimension_ = function(node, objectStack) {
|
function readDimension(node, objectStack) {
|
||||||
const dimensionObject = {
|
const dimensionObject = {
|
||||||
'name': node.getAttribute('name'),
|
'name': node.getAttribute('name'),
|
||||||
'units': node.getAttribute('units'),
|
'units': node.getAttribute('units'),
|
||||||
@@ -323,79 +548,73 @@ WMSCapabilities.readDimension_ = function(node, objectStack) {
|
|||||||
'values': XSD.readString(node)
|
'values': XSD.readString(node)
|
||||||
};
|
};
|
||||||
return dimensionObject;
|
return dimensionObject;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Online resource object.
|
* @return {Object|undefined} Online resource object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readFormatOnlineresource_ = function(node, objectStack) {
|
function readFormatOnlineresource(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_,
|
{}, FORMAT_ONLINERESOURCE_PARSERS,
|
||||||
node, objectStack);
|
node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Request object.
|
* @return {Object|undefined} Request object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readRequest_ = function(node, objectStack) {
|
function readRequest(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.REQUEST_PARSERS_, node, objectStack);
|
{}, REQUEST_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} DCP type object.
|
* @return {Object|undefined} DCP type object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readDCPType_ = function(node, objectStack) {
|
function readDCPType(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.DCPTYPE_PARSERS_, node, objectStack);
|
{}, DCPTYPE_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} HTTP object.
|
* @return {Object|undefined} HTTP object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readHTTP_ = function(node, objectStack) {
|
function readHTTP(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.HTTP_PARSERS_, node, objectStack);
|
{}, HTTP_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Operation type object.
|
* @return {Object|undefined} Operation type object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readOperationType_ = function(node, objectStack) {
|
function readOperationType(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.OPERATIONTYPE_PARSERS_, node, objectStack);
|
{}, OPERATIONTYPE_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Online resource object.
|
* @return {Object|undefined} Online resource object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readSizedFormatOnlineresource_ = function(node, objectStack) {
|
function readSizedFormatOnlineresource(node, objectStack) {
|
||||||
const formatOnlineresource =
|
const formatOnlineresource =
|
||||||
WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
readFormatOnlineresource(node, objectStack);
|
||||||
if (formatOnlineresource) {
|
if (formatOnlineresource) {
|
||||||
const size = [
|
const size = [
|
||||||
XSD.readNonNegativeIntegerString(node.getAttribute('width')),
|
XSD.readNonNegativeIntegerString(node.getAttribute('width')),
|
||||||
@@ -405,368 +624,61 @@ WMSCapabilities.readSizedFormatOnlineresource_ = function(node, objectStack) {
|
|||||||
return formatOnlineresource;
|
return formatOnlineresource;
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Authority URL object.
|
* @return {Object|undefined} Authority URL object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readAuthorityURL_ = function(node, objectStack) {
|
function readAuthorityURL(node, objectStack) {
|
||||||
const authorityObject =
|
const authorityObject =
|
||||||
WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
readFormatOnlineresource(node, objectStack);
|
||||||
if (authorityObject) {
|
if (authorityObject) {
|
||||||
authorityObject['name'] = node.getAttribute('name');
|
authorityObject['name'] = node.getAttribute('name');
|
||||||
return authorityObject;
|
return authorityObject;
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Metadata URL object.
|
* @return {Object|undefined} Metadata URL object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readMetadataURL_ = function(node, objectStack) {
|
function readMetadataURL(node, objectStack) {
|
||||||
const metadataObject =
|
const metadataObject =
|
||||||
WMSCapabilities.readFormatOnlineresource_(node, objectStack);
|
readFormatOnlineresource(node, objectStack);
|
||||||
if (metadataObject) {
|
if (metadataObject) {
|
||||||
metadataObject['type'] = node.getAttribute('type');
|
metadataObject['type'] = node.getAttribute('type');
|
||||||
return metadataObject;
|
return metadataObject;
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Style object.
|
* @return {Object|undefined} Style object.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readStyle_ = function(node, objectStack) {
|
function readStyle(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
{}, WMSCapabilities.STYLE_PARSERS_, node, objectStack);
|
{}, STYLE_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Array.<string>|undefined} Keyword list.
|
* @return {Array.<string>|undefined} Keyword list.
|
||||||
*/
|
*/
|
||||||
WMSCapabilities.readKeywordList_ = function(node, objectStack) {
|
function readKeywordList(node, objectStack) {
|
||||||
return pushParseAndPop(
|
return pushParseAndPop(
|
||||||
[], WMSCapabilities.KEYWORDLIST_PARSERS_, node, objectStack);
|
[], KEYWORDLIST_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @private
|
|
||||||
* @type {Array.<string>}
|
|
||||||
*/
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_ = [
|
|
||||||
null,
|
|
||||||
'http://www.opengis.net/wms'
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Service': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readService_),
|
|
||||||
'Capability': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readCapability_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.CAPABILITY_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Request': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readRequest_),
|
|
||||||
'Exception': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readException_),
|
|
||||||
'Layer': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readCapabilityLayer_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.SERVICE_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Name': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Title': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Abstract': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'KeywordList': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readKeywordList_),
|
|
||||||
'OnlineResource': makeObjectPropertySetter(
|
|
||||||
XLink.readHref),
|
|
||||||
'ContactInformation': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readContactInformation_),
|
|
||||||
'Fees': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'AccessConstraints': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'LayerLimit': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MaxWidth': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MaxHeight': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.CONTACT_INFORMATION_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'ContactPersonPrimary': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readContactPersonPrimary_),
|
|
||||||
'ContactPosition': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'ContactAddress': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readContactAddress_),
|
|
||||||
'ContactVoiceTelephone': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'ContactFacsimileTelephone': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'ContactElectronicMailAddress': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.CONTACT_PERSON_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'ContactPerson': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'ContactOrganization': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.CONTACT_ADDRESS_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'AddressType': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Address': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'City': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'StateOrProvince': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'PostCode': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Country': makeObjectPropertySetter(XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.EXCEPTION_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Format': makeArrayPusher(XSD.readString)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.LAYER_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Name': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Title': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Abstract': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'KeywordList': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readKeywordList_),
|
|
||||||
'CRS': makeObjectPropertyPusher(XSD.readString),
|
|
||||||
'EX_GeographicBoundingBox': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readEXGeographicBoundingBox_),
|
|
||||||
'BoundingBox': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readBoundingBox_),
|
|
||||||
'Dimension': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readDimension_),
|
|
||||||
'Attribution': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readAttribution_),
|
|
||||||
'AuthorityURL': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readAuthorityURL_),
|
|
||||||
'Identifier': makeObjectPropertyPusher(XSD.readString),
|
|
||||||
'MetadataURL': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readMetadataURL_),
|
|
||||||
'DataURL': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_),
|
|
||||||
'FeatureListURL': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_),
|
|
||||||
'Style': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readStyle_),
|
|
||||||
'MinScaleDenominator': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'MaxScaleDenominator': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'Layer': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readLayer_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.ATTRIBUTION_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Title': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'OnlineResource': makeObjectPropertySetter(
|
|
||||||
XLink.readHref),
|
|
||||||
'LogoURL': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readSizedFormatOnlineresource_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.EX_GEOGRAPHIC_BOUNDING_BOX_PARSERS_ =
|
|
||||||
makeStructureNS(WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'westBoundLongitude': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'eastBoundLongitude': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'southBoundLatitude': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'northBoundLatitude': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.REQUEST_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'GetCapabilities': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readOperationType_),
|
|
||||||
'GetMap': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readOperationType_),
|
|
||||||
'GetFeatureInfo': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readOperationType_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.OPERATIONTYPE_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Format': makeObjectPropertyPusher(XSD.readString),
|
|
||||||
'DCPType': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readDCPType_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.DCPTYPE_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'HTTP': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readHTTP_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.HTTP_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Get': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_),
|
|
||||||
'Post': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.STYLE_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Name': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Title': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'Abstract': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'LegendURL': makeObjectPropertyPusher(
|
|
||||||
WMSCapabilities.readSizedFormatOnlineresource_),
|
|
||||||
'StyleSheetURL': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_),
|
|
||||||
'StyleURL': makeObjectPropertySetter(
|
|
||||||
WMSCapabilities.readFormatOnlineresource_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.FORMAT_ONLINERESOURCE_PARSERS_ =
|
|
||||||
makeStructureNS(WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Format': makeObjectPropertySetter(XSD.readString),
|
|
||||||
'OnlineResource': makeObjectPropertySetter(
|
|
||||||
XLink.readHref)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMSCapabilities.KEYWORDLIST_PARSERS_ = makeStructureNS(
|
|
||||||
WMSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Keyword': makeArrayPusher(XSD.readString)
|
|
||||||
});
|
|
||||||
export default WMSCapabilities;
|
export default WMSCapabilities;
|
||||||
|
|||||||
@@ -51,17 +51,15 @@ inherits(WMSGetFeatureInfo, XMLFeature);
|
|||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WMSGetFeatureInfo.featureIdentifier_ = '_feature';
|
const featureIdentifier = '_feature';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @private
|
|
||||||
*/
|
*/
|
||||||
WMSGetFeatureInfo.layerIdentifier_ = '_layer';
|
const layerIdentifier = '_layer';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,7 +100,7 @@ WMSGetFeatureInfo.prototype.readFeatures_ = function(node, objectStack) {
|
|||||||
}
|
}
|
||||||
const context = objectStack[0];
|
const context = objectStack[0];
|
||||||
|
|
||||||
const toRemove = WMSGetFeatureInfo.layerIdentifier_;
|
const toRemove = layerIdentifier;
|
||||||
const layerName = layer.localName.replace(toRemove, '');
|
const layerName = layer.localName.replace(toRemove, '');
|
||||||
|
|
||||||
if (this.layers_ && !includes(this.layers_, layerName)) {
|
if (this.layers_ && !includes(this.layers_, layerName)) {
|
||||||
@@ -110,7 +108,7 @@ WMSGetFeatureInfo.prototype.readFeatures_ = function(node, objectStack) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const featureType = layerName +
|
const featureType = layerName +
|
||||||
WMSGetFeatureInfo.featureIdentifier_;
|
featureIdentifier;
|
||||||
|
|
||||||
context['featureType'] = featureType;
|
context['featureType'] = featureType;
|
||||||
context['featureNS'] = this.featureNS_;
|
context['featureNS'] = this.featureNS_;
|
||||||
|
|||||||
+199
-262
@@ -31,6 +31,168 @@ const WMTSCapabilities = function() {
|
|||||||
inherits(WMTSCapabilities, XML);
|
inherits(WMTSCapabilities, XML);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Array.<string>}
|
||||||
|
*/
|
||||||
|
const NAMESPACE_URIS = [
|
||||||
|
null,
|
||||||
|
'http://www.opengis.net/wmts/1.0'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Array.<string>}
|
||||||
|
*/
|
||||||
|
const OWS_NAMESPACE_URIS = [
|
||||||
|
null,
|
||||||
|
'http://www.opengis.net/ows/1.1'
|
||||||
|
];
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Contents': makeObjectPropertySetter(readContents)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const CONTENTS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Layer': makeObjectPropertyPusher(readLayer),
|
||||||
|
'TileMatrixSet': makeObjectPropertyPusher(readTileMatrixSet)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const LAYER_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Style': makeObjectPropertyPusher(readStyle),
|
||||||
|
'Format': makeObjectPropertyPusher(XSD.readString),
|
||||||
|
'TileMatrixSetLink': makeObjectPropertyPusher(readTileMatrixSetLink),
|
||||||
|
'Dimension': makeObjectPropertyPusher(readDimensions),
|
||||||
|
'ResourceURL': makeObjectPropertyPusher(readResourceUrl)
|
||||||
|
}, makeStructureNS(OWS_NAMESPACE_URIS, {
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Abstract': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'WGS84BoundingBox': makeObjectPropertySetter(readWgs84BoundingBox),
|
||||||
|
'Identifier': makeObjectPropertySetter(XSD.readString)
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const STYLE_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'LegendURL': makeObjectPropertyPusher(readLegendUrl)
|
||||||
|
}, makeStructureNS(OWS_NAMESPACE_URIS, {
|
||||||
|
'Title': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Identifier': makeObjectPropertySetter(XSD.readString)
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const TMS_LINKS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'TileMatrixSet': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'TileMatrixSetLimits': makeObjectPropertySetter(readTileMatrixLimitsList)
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const TMS_LIMITS_LIST_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'TileMatrixLimits': makeArrayPusher(readTileMatrixLimits)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const TMS_LIMITS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'TileMatrix': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'MinTileRow': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MaxTileRow': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MinTileCol': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MaxTileCol': makeObjectPropertySetter(XSD.readNonNegativeInteger)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const DIMENSION_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'Default': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Value': makeObjectPropertyPusher(XSD.readString)
|
||||||
|
}, makeStructureNS(OWS_NAMESPACE_URIS, {
|
||||||
|
'Identifier': makeObjectPropertySetter(XSD.readString)
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const WGS84_BBOX_READERS = makeStructureNS(
|
||||||
|
OWS_NAMESPACE_URIS, {
|
||||||
|
'LowerCorner': makeArrayPusher(readCoordinates),
|
||||||
|
'UpperCorner': makeArrayPusher(readCoordinates)
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const TMS_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'WellKnownScaleSet': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'TileMatrix': makeObjectPropertyPusher(readTileMatrix)
|
||||||
|
}, makeStructureNS(OWS_NAMESPACE_URIS, {
|
||||||
|
'SupportedCRS': makeObjectPropertySetter(XSD.readString),
|
||||||
|
'Identifier': makeObjectPropertySetter(XSD.readString)
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @const
|
||||||
|
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
||||||
|
*/
|
||||||
|
const TM_PARSERS = makeStructureNS(
|
||||||
|
NAMESPACE_URIS, {
|
||||||
|
'TopLeftCorner': makeObjectPropertySetter(readCoordinates),
|
||||||
|
'ScaleDenominator': makeObjectPropertySetter(XSD.readDecimal),
|
||||||
|
'TileWidth': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'TileHeight': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MatrixWidth': makeObjectPropertySetter(XSD.readNonNegativeInteger),
|
||||||
|
'MatrixHeight': makeObjectPropertySetter(XSD.readNonNegativeInteger)
|
||||||
|
}, makeStructureNS(OWS_NAMESPACE_URIS, {
|
||||||
|
'Identifier': makeObjectPropertySetter(XSD.readString)
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Read a WMTS capabilities document.
|
* Read a WMTS capabilities document.
|
||||||
*
|
*
|
||||||
@@ -66,56 +228,52 @@ WMTSCapabilities.prototype.readFromNode = function(node) {
|
|||||||
}
|
}
|
||||||
WMTSCapabilityObject['version'] = version;
|
WMTSCapabilityObject['version'] = version;
|
||||||
WMTSCapabilityObject = pushParseAndPop(WMTSCapabilityObject,
|
WMTSCapabilityObject = pushParseAndPop(WMTSCapabilityObject,
|
||||||
WMTSCapabilities.PARSERS_, node, []);
|
PARSERS, node, []);
|
||||||
return WMTSCapabilityObject ? WMTSCapabilityObject : null;
|
return WMTSCapabilityObject ? WMTSCapabilityObject : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Attribution object.
|
* @return {Object|undefined} Attribution object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readContents_ = function(node, objectStack) {
|
function readContents(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.CONTENTS_PARSERS_, node, objectStack);
|
CONTENTS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Layers object.
|
* @return {Object|undefined} Layers object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readLayer_ = function(node, objectStack) {
|
function readLayer(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.LAYER_PARSERS_, node, objectStack);
|
LAYER_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Tile Matrix Set object.
|
* @return {Object|undefined} Tile Matrix Set object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readTileMatrixSet_ = function(node, objectStack) {
|
function readTileMatrixSet(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.TMS_PARSERS_, node, objectStack);
|
TMS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Style object.
|
* @return {Object|undefined} Style object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readStyle_ = function(node, objectStack) {
|
function readStyle(node, objectStack) {
|
||||||
const style = pushParseAndPop({},
|
const style = pushParseAndPop({},
|
||||||
WMTSCapabilities.STYLE_PARSERS_, node, objectStack);
|
STYLE_PARSERS, node, objectStack);
|
||||||
if (!style) {
|
if (!style) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@@ -123,41 +281,38 @@ WMTSCapabilities.readStyle_ = function(node, objectStack) {
|
|||||||
style['isDefault'] = isDefault;
|
style['isDefault'] = isDefault;
|
||||||
return style;
|
return style;
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Tile Matrix Set Link object.
|
* @return {Object|undefined} Tile Matrix Set Link object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readTileMatrixSetLink_ = function(node,
|
function readTileMatrixSetLink(node,
|
||||||
objectStack) {
|
objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.TMS_LINKS_PARSERS_, node, objectStack);
|
TMS_LINKS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Dimension object.
|
* @return {Object|undefined} Dimension object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readDimensions_ = function(node, objectStack) {
|
function readDimensions(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.DIMENSION_PARSERS_, node, objectStack);
|
DIMENSION_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Resource URL object.
|
* @return {Object|undefined} Resource URL object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readResourceUrl_ = function(node, objectStack) {
|
function readResourceUrl(node, objectStack) {
|
||||||
const format = node.getAttribute('format');
|
const format = node.getAttribute('format');
|
||||||
const template = node.getAttribute('template');
|
const template = node.getAttribute('template');
|
||||||
const resourceType = node.getAttribute('resourceType');
|
const resourceType = node.getAttribute('resourceType');
|
||||||
@@ -172,46 +327,43 @@ WMTSCapabilities.readResourceUrl_ = function(node, objectStack) {
|
|||||||
resource['resourceType'] = resourceType;
|
resource['resourceType'] = resourceType;
|
||||||
}
|
}
|
||||||
return resource;
|
return resource;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} WGS84 BBox object.
|
* @return {Object|undefined} WGS84 BBox object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readWgs84BoundingBox_ = function(node, objectStack) {
|
function readWgs84BoundingBox(node, objectStack) {
|
||||||
const coordinates = pushParseAndPop([],
|
const coordinates = pushParseAndPop([],
|
||||||
WMTSCapabilities.WGS84_BBOX_READERS_, node, objectStack);
|
WGS84_BBOX_READERS, node, objectStack);
|
||||||
if (coordinates.length != 2) {
|
if (coordinates.length != 2) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return boundingExtent(coordinates);
|
return boundingExtent(coordinates);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Legend object.
|
* @return {Object|undefined} Legend object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readLegendUrl_ = function(node, objectStack) {
|
function readLegendUrl(node, objectStack) {
|
||||||
const legend = {};
|
const legend = {};
|
||||||
legend['format'] = node.getAttribute('format');
|
legend['format'] = node.getAttribute('format');
|
||||||
legend['href'] = XLink.readHref(node);
|
legend['href'] = XLink.readHref(node);
|
||||||
return legend;
|
return legend;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} Coordinates object.
|
* @return {Object|undefined} Coordinates object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readCoordinates_ = function(node, objectStack) {
|
function readCoordinates(node, objectStack) {
|
||||||
const coordinates = XSD.readString(node).split(' ');
|
const coordinates = XSD.readString(node).split(' ');
|
||||||
if (!coordinates || coordinates.length != 2) {
|
if (!coordinates || coordinates.length != 2) {
|
||||||
return undefined;
|
return undefined;
|
||||||
@@ -222,257 +374,42 @@ WMTSCapabilities.readCoordinates_ = function(node, objectStack) {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
return [x, y];
|
return [x, y];
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} TileMatrix object.
|
* @return {Object|undefined} TileMatrix object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readTileMatrix_ = function(node, objectStack) {
|
function readTileMatrix(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.TM_PARSERS_, node, objectStack);
|
TM_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} TileMatrixSetLimits Object.
|
* @return {Object|undefined} TileMatrixSetLimits Object.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readTileMatrixLimitsList_ = function(node,
|
function readTileMatrixLimitsList(node,
|
||||||
objectStack) {
|
objectStack) {
|
||||||
return pushParseAndPop([],
|
return pushParseAndPop([],
|
||||||
WMTSCapabilities.TMS_LIMITS_LIST_PARSERS_, node,
|
TMS_LIMITS_LIST_PARSERS, node,
|
||||||
objectStack);
|
objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @private
|
|
||||||
* @param {Node} node Node.
|
* @param {Node} node Node.
|
||||||
* @param {Array.<*>} objectStack Object stack.
|
* @param {Array.<*>} objectStack Object stack.
|
||||||
* @return {Object|undefined} TileMatrixLimits Array.
|
* @return {Object|undefined} TileMatrixLimits Array.
|
||||||
*/
|
*/
|
||||||
WMTSCapabilities.readTileMatrixLimits_ = function(node, objectStack) {
|
function readTileMatrixLimits(node, objectStack) {
|
||||||
return pushParseAndPop({},
|
return pushParseAndPop({},
|
||||||
WMTSCapabilities.TMS_LIMITS_PARSERS_, node, objectStack);
|
TMS_LIMITS_PARSERS, node, objectStack);
|
||||||
};
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @private
|
|
||||||
* @type {Array.<string>}
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_ = [
|
|
||||||
null,
|
|
||||||
'http://www.opengis.net/wmts/1.0'
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @private
|
|
||||||
* @type {Array.<string>}
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.OWS_NAMESPACE_URIS_ = [
|
|
||||||
null,
|
|
||||||
'http://www.opengis.net/ows/1.1'
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Contents': makeObjectPropertySetter(
|
|
||||||
WMTSCapabilities.readContents_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.CONTENTS_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Layer': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readLayer_),
|
|
||||||
'TileMatrixSet': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readTileMatrixSet_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.LAYER_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Style': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readStyle_),
|
|
||||||
'Format': makeObjectPropertyPusher(
|
|
||||||
XSD.readString),
|
|
||||||
'TileMatrixSetLink': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readTileMatrixSetLink_),
|
|
||||||
'Dimension': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readDimensions_),
|
|
||||||
'ResourceURL': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readResourceUrl_)
|
|
||||||
}, makeStructureNS(WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'Title': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'Abstract': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'WGS84BoundingBox': makeObjectPropertySetter(
|
|
||||||
WMTSCapabilities.readWgs84BoundingBox_),
|
|
||||||
'Identifier': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.STYLE_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'LegendURL': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readLegendUrl_)
|
|
||||||
}, makeStructureNS(WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'Title': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'Identifier': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.TMS_LINKS_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'TileMatrixSet': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'TileMatrixSetLimits': makeObjectPropertySetter(
|
|
||||||
WMTSCapabilities.readTileMatrixLimitsList_)
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.TMS_LIMITS_LIST_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'TileMatrixLimits': makeArrayPusher(
|
|
||||||
WMTSCapabilities.readTileMatrixLimits_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.TMS_LIMITS_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'TileMatrix': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'MinTileRow': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MaxTileRow': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MinTileCol': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MaxTileCol': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.DIMENSION_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'Default': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'Value': makeObjectPropertyPusher(
|
|
||||||
XSD.readString)
|
|
||||||
}, makeStructureNS(WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'Identifier': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.WGS84_BBOX_READERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'LowerCorner': makeArrayPusher(
|
|
||||||
WMTSCapabilities.readCoordinates_),
|
|
||||||
'UpperCorner': makeArrayPusher(
|
|
||||||
WMTSCapabilities.readCoordinates_)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.TMS_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'WellKnownScaleSet': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'TileMatrix': makeObjectPropertyPusher(
|
|
||||||
WMTSCapabilities.readTileMatrix_)
|
|
||||||
}, makeStructureNS(WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'SupportedCRS': makeObjectPropertySetter(
|
|
||||||
XSD.readString),
|
|
||||||
'Identifier': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
}));
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @const
|
|
||||||
* @type {Object.<string, Object.<string, ol.XmlParser>>}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
WMTSCapabilities.TM_PARSERS_ = makeStructureNS(
|
|
||||||
WMTSCapabilities.NAMESPACE_URIS_, {
|
|
||||||
'TopLeftCorner': makeObjectPropertySetter(
|
|
||||||
WMTSCapabilities.readCoordinates_),
|
|
||||||
'ScaleDenominator': makeObjectPropertySetter(
|
|
||||||
XSD.readDecimal),
|
|
||||||
'TileWidth': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'TileHeight': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MatrixWidth': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger),
|
|
||||||
'MatrixHeight': makeObjectPropertySetter(
|
|
||||||
XSD.readNonNegativeInteger)
|
|
||||||
}, makeStructureNS(WMTSCapabilities.OWS_NAMESPACE_URIS_, {
|
|
||||||
'Identifier': makeObjectPropertySetter(
|
|
||||||
XSD.readString)
|
|
||||||
}));
|
|
||||||
export default WMTSCapabilities;
|
export default WMTSCapabilities;
|
||||||
|
|||||||
@@ -103,13 +103,11 @@ describe('ol.format.MVT', function() {
|
|||||||
name: 'layer1'
|
name: 'layer1'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const readRawGeometry_ = MVT.readRawGeometry_;
|
format.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
||||||
MVT.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
|
||||||
flatCoordinates.push(0, 0);
|
flatCoordinates.push(0, 0);
|
||||||
ends.push(2);
|
ends.push(2);
|
||||||
};
|
};
|
||||||
const feature = format.createFeature_({}, rawFeature);
|
const feature = format.createFeature_({}, rawFeature);
|
||||||
MVT.readRawGeometry_ = readRawGeometry_;
|
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
expect(geometry).to.be.a(Point);
|
expect(geometry).to.be.a(Point);
|
||||||
expect(feature.get('myGeom')).to.equal(geometry);
|
expect(feature.get('myGeom')).to.equal(geometry);
|
||||||
@@ -127,14 +125,12 @@ describe('ol.format.MVT', function() {
|
|||||||
name: 'layer1'
|
name: 'layer1'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const readRawGeometry_ = MVT.readRawGeometry_;
|
format.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
||||||
MVT.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
|
||||||
flatCoordinates.push(0, 0, 3, 0, 3, 3, 3, 0, 0, 0);
|
flatCoordinates.push(0, 0, 3, 0, 3, 3, 3, 0, 0, 0);
|
||||||
flatCoordinates.push(1, 1, 1, 2, 2, 2, 2, 1, 1, 1);
|
flatCoordinates.push(1, 1, 1, 2, 2, 2, 2, 1, 1, 1);
|
||||||
ends.push(10, 20);
|
ends.push(10, 20);
|
||||||
};
|
};
|
||||||
const feature = format.createFeature_({}, rawFeature);
|
const feature = format.createFeature_({}, rawFeature);
|
||||||
MVT.readRawGeometry_ = readRawGeometry_;
|
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
expect(geometry).to.be.a(Polygon);
|
expect(geometry).to.be.a(Polygon);
|
||||||
});
|
});
|
||||||
@@ -150,14 +146,12 @@ describe('ol.format.MVT', function() {
|
|||||||
name: 'layer1'
|
name: 'layer1'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const readRawGeometry_ = MVT.readRawGeometry_;
|
format.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
||||||
MVT.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
|
||||||
flatCoordinates.push(0, 0, 1, 0, 1, 1, 1, 0, 0, 0);
|
flatCoordinates.push(0, 0, 1, 0, 1, 1, 1, 0, 0, 0);
|
||||||
flatCoordinates.push(1, 1, 2, 1, 2, 2, 2, 1, 1, 1);
|
flatCoordinates.push(1, 1, 2, 1, 2, 2, 2, 1, 1, 1);
|
||||||
ends.push(10, 20);
|
ends.push(10, 20);
|
||||||
};
|
};
|
||||||
const feature = format.createFeature_({}, rawFeature);
|
const feature = format.createFeature_({}, rawFeature);
|
||||||
MVT.readRawGeometry_ = readRawGeometry_;
|
|
||||||
const geometry = feature.getGeometry();
|
const geometry = feature.getGeometry();
|
||||||
expect(geometry).to.be.a(MultiPolygon);
|
expect(geometry).to.be.a(MultiPolygon);
|
||||||
});
|
});
|
||||||
@@ -173,10 +167,9 @@ describe('ol.format.MVT', function() {
|
|||||||
name: 'layer1'
|
name: 'layer1'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
const readRawGeometry_ = MVT.readRawGeometry_;
|
|
||||||
let createdFlatCoordinates;
|
let createdFlatCoordinates;
|
||||||
let createdEnds;
|
let createdEnds;
|
||||||
MVT.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
format.readRawGeometry_ = function({}, rawFeature, flatCoordinates, ends) {
|
||||||
flatCoordinates.push(0, 0, 1, 0, 1, 1, 1, 0, 0, 0);
|
flatCoordinates.push(0, 0, 1, 0, 1, 1, 1, 0, 0, 0);
|
||||||
flatCoordinates.push(1, 1, 2, 1, 2, 2, 2, 1, 1, 1);
|
flatCoordinates.push(1, 1, 2, 1, 2, 2, 2, 1, 1, 1);
|
||||||
createdFlatCoordinates = flatCoordinates;
|
createdFlatCoordinates = flatCoordinates;
|
||||||
@@ -184,7 +177,6 @@ describe('ol.format.MVT', function() {
|
|||||||
createdEnds = ends;
|
createdEnds = ends;
|
||||||
};
|
};
|
||||||
const feature = format.createFeature_({}, rawFeature);
|
const feature = format.createFeature_({}, rawFeature);
|
||||||
MVT.readRawGeometry_ = readRawGeometry_;
|
|
||||||
expect(feature).to.be.a(RenderFeature);
|
expect(feature).to.be.a(RenderFeature);
|
||||||
expect(feature.getType()).to.be('Polygon');
|
expect(feature.getType()).to.be('Polygon');
|
||||||
expect(feature.getFlatCoordinates()).to.equal(createdFlatCoordinates);
|
expect(feature.getFlatCoordinates()).to.equal(createdFlatCoordinates);
|
||||||
|
|||||||
Reference in New Issue
Block a user