From ba2d35fc572a7dc9ca6d09870786df5f6794ddd6 Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Wed, 5 Mar 2014 13:05:31 +0100 Subject: [PATCH] Cache serializers on the context --- src/ol/format/gmlformat.js | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ol/format/gmlformat.js b/src/ol/format/gmlformat.js index e1224a83cf..54e50463fe 100644 --- a/src/ol/format/gmlformat.js +++ b/src/ol/format/gmlformat.js @@ -1434,25 +1434,31 @@ ol.format.GML.writeFeature_ = function(node, feature, objectStack) { goog.asserts.assert(goog.isObject(context)); var featureNS = goog.object.get(context, 'featureNS'); var geometryName = feature.getGeometryName(); - var serializers = {}; - serializers[featureNS] = {}; + if (!goog.isDef(context.serializers)) { + context.serializers = {}; + context.serializers[featureNS] = {}; + } var properties = feature.getProperties(); var keys = [], values = []; for (var key in properties) { keys.push(key); values.push(properties[key]); if (key == geometryName) { - serializers[featureNS][key] = ol.xml.makeChildAppender( - ol.format.GML.writeGeometry_); + if (!(key in context.serializers[featureNS])) { + context.serializers[featureNS][key] = ol.xml.makeChildAppender( + ol.format.GML.writeGeometry_); + } } else { - serializers[featureNS][key] = ol.xml.makeChildAppender( - ol.format.XSD.writeStringTextNode); + if (!(key in context.serializers[featureNS])) { + context.serializers[featureNS][key] = ol.xml.makeChildAppender( + ol.format.XSD.writeStringTextNode); + } } } var item = goog.object.clone(context); goog.object.set(item, 'node', node); ol.xml.pushSerializeAndPop(/** @type {ol.xml.NodeStackItem} */ - (item), serializers, + (item), context.serializers, ol.xml.OBJECT_PROPERTY_NODE_FACTORY, values, objectStack, keys);