Cache serializers on the context
This commit is contained in:
@@ -1434,25 +1434,31 @@ ol.format.GML.writeFeature_ = function(node, feature, objectStack) {
|
|||||||
goog.asserts.assert(goog.isObject(context));
|
goog.asserts.assert(goog.isObject(context));
|
||||||
var featureNS = goog.object.get(context, 'featureNS');
|
var featureNS = goog.object.get(context, 'featureNS');
|
||||||
var geometryName = feature.getGeometryName();
|
var geometryName = feature.getGeometryName();
|
||||||
var serializers = {};
|
if (!goog.isDef(context.serializers)) {
|
||||||
serializers[featureNS] = {};
|
context.serializers = {};
|
||||||
|
context.serializers[featureNS] = {};
|
||||||
|
}
|
||||||
var properties = feature.getProperties();
|
var properties = feature.getProperties();
|
||||||
var keys = [], values = [];
|
var keys = [], values = [];
|
||||||
for (var key in properties) {
|
for (var key in properties) {
|
||||||
keys.push(key);
|
keys.push(key);
|
||||||
values.push(properties[key]);
|
values.push(properties[key]);
|
||||||
if (key == geometryName) {
|
if (key == geometryName) {
|
||||||
serializers[featureNS][key] = ol.xml.makeChildAppender(
|
if (!(key in context.serializers[featureNS])) {
|
||||||
ol.format.GML.writeGeometry_);
|
context.serializers[featureNS][key] = ol.xml.makeChildAppender(
|
||||||
|
ol.format.GML.writeGeometry_);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
serializers[featureNS][key] = ol.xml.makeChildAppender(
|
if (!(key in context.serializers[featureNS])) {
|
||||||
ol.format.XSD.writeStringTextNode);
|
context.serializers[featureNS][key] = ol.xml.makeChildAppender(
|
||||||
|
ol.format.XSD.writeStringTextNode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
var item = goog.object.clone(context);
|
var item = goog.object.clone(context);
|
||||||
goog.object.set(item, 'node', node);
|
goog.object.set(item, 'node', node);
|
||||||
ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */
|
ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */
|
||||||
(item), serializers,
|
(item), context.serializers,
|
||||||
ol.xml.OBJECT_PROPERTY_NODE_FACTORY,
|
ol.xml.OBJECT_PROPERTY_NODE_FACTORY,
|
||||||
values,
|
values,
|
||||||
objectStack, keys);
|
objectStack, keys);
|
||||||
|
|||||||
Reference in New Issue
Block a user