Support multiple featureTypes as well in autoconfigure mode
This commit is contained in:
@@ -106,17 +106,29 @@ ol.format.GMLBase.prototype.readFeaturesInternal = function(node, objectStack) {
|
|||||||
} else if (localName == 'featureMembers' || localName == 'featureMember') {
|
} else if (localName == 'featureMembers' || localName == 'featureMember') {
|
||||||
var context = objectStack[0];
|
var context = objectStack[0];
|
||||||
goog.asserts.assert(goog.isObject(context));
|
goog.asserts.assert(goog.isObject(context));
|
||||||
var featureType = context['featureType'];
|
var featureType = goog.object.get(context, 'featureType');
|
||||||
if (!goog.isDef(featureType) && !goog.isNull(node.firstElementChild)) {
|
var i, ii, featureNS;
|
||||||
var member = node.firstElementChild;
|
if (!goog.isDef(featureType) && goog.isDefAndNotNull(node.childNodes)) {
|
||||||
featureType = member.nodeName.split(':').pop();
|
featureType = [];
|
||||||
|
for (i = 0, ii = node.childNodes.length; i < ii; ++i) {
|
||||||
|
var child = node.childNodes[i];
|
||||||
|
if (child.nodeType === 1) {
|
||||||
|
var ft = child.nodeName.split(':').pop();
|
||||||
|
if (goog.array.indexOf(featureType, ft) === -1) {
|
||||||
|
featureType.push(ft);
|
||||||
|
if (!goog.isDef(featureNS)) {
|
||||||
|
featureNS = child.namespaceURI;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
context['featureType'] = featureType;
|
context['featureType'] = featureType;
|
||||||
context['featureNS'] = member.namespaceURI;
|
context['featureNS'] = featureNS;
|
||||||
}
|
}
|
||||||
var parsers = {};
|
var parsers = {};
|
||||||
var parsersNS = {};
|
var parsersNS = {};
|
||||||
var featureTypes = goog.isArray(featureType) ? featureType : [featureType];
|
var featureTypes = goog.isArray(featureType) ? featureType : [featureType];
|
||||||
for (var i = 0, ii = featureTypes.length; i < ii; ++i) {
|
for (i = 0, ii = featureTypes.length; i < ii; ++i) {
|
||||||
parsers[featureTypes[i]] = (localName == 'featureMembers') ?
|
parsers[featureTypes[i]] = (localName == 'featureMembers') ?
|
||||||
ol.xml.makeArrayPusher(this.readFeatureElement, this) :
|
ol.xml.makeArrayPusher(this.readFeatureElement, this) :
|
||||||
ol.xml.makeReplacer(this.readFeatureElement, this);
|
ol.xml.makeReplacer(this.readFeatureElement, this);
|
||||||
|
|||||||
Reference in New Issue
Block a user