From 9c8ec427138e558025803d955043b67830dc55d6 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Mon, 4 Mar 2013 20:29:42 +0100 Subject: [PATCH] Feature parser interfaces Parsers that read features from strings, objects, or dom elements should implement the right interface. Among the read options is a callback that gets called after feature construction and before geometry construction. This callback is called with the feature and the geometry type and returns a shared vertices structure. The geometry is then constructed with this shared vertices structure before being added to the feature. --- src/ol/parser/featureparser.js | 66 ++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/ol/parser/featureparser.js diff --git a/src/ol/parser/featureparser.js b/src/ol/parser/featureparser.js new file mode 100644 index 0000000000..686fcb2443 --- /dev/null +++ b/src/ol/parser/featureparser.js @@ -0,0 +1,66 @@ +goog.provide('ol.parser.DomFeatureParser'); +goog.provide('ol.parser.ObjectFeatureParser'); +goog.provide('ol.parser.ReadFeaturesOptions'); +goog.provide('ol.parser.StringFeatureParser'); + +goog.require('ol.Feature'); + + + +/** + * @interface + */ +ol.parser.DomFeatureParser = function() {}; + + +/** + * @param {Element|Document} node Document or element node. + * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. + * @return {Array.} Array of features. + */ +ol.parser.DomFeatureParser.prototype.readFeaturesFromNode = + goog.abstractMethod; + + + +/** + * @interface + */ +ol.parser.ObjectFeatureParser = function() {}; + + +/** + * @param {Object} obj Object representing features. + * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. + * @return {Array.} Array of features. + */ +ol.parser.ObjectFeatureParser.prototype.readFeaturesFromObject = + goog.abstractMethod; + + + +/** + * @interface + */ +ol.parser.StringFeatureParser = function() {}; + + +/** + * @param {string} data String data. + * @param {ol.parser.ReadFeaturesOptions=} opt_options Feature reading options. + * @return {Array.} Array of features. + */ +ol.parser.StringFeatureParser.prototype.readFeaturesFromString = + goog.abstractMethod; + + +/** + * @typedef {function(ol.Feature, ol.geom.GeometryType):ol.geom.SharedVertices} + */ +ol.parser.ReadFeaturesCallback; + + +/** + * @typedef {{callback: ol.parser.ReadFeaturesCallback}} + */ +ol.parser.ReadFeaturesOptions;