goog.provide('M.format.GeoJSON'); goog.require('M.Feature'); (function() { /** * @classdesc * Main constructor of the class. Creates a layer * with parameters specified by the user * * @constructor * @extends {M.facade.Base} * @param {string|Object} userParameters parameters * provided by the user * @api stable */ M.format.GeoJSON = (function(options) { // checks if the implementation can create format GeoJSON if (M.utils.isUndefined(M.impl.format.GeoJSON)) { M.exception('La implementación usada no puede M.impl.format.GeoJSON'); } options = (options || {}); /** * Implementation of this formatter * @public * @type {M.impl.format.GeoJSON} */ var impl = new M.impl.format.GeoJSON(options); // calls the super constructor goog.base(this, impl); }); goog.inherits(M.format.GeoJSON, M.facade.Base); /** * TODO * * @public * @function * @param {Array<M.Feature>} features features array to parsed * as a GeoJSON FeatureCollection * @return {Array<Object>} * @api stable */ M.format.GeoJSON.prototype.write = function(features) { if (!M.utils.isArray(features)) { features = [features]; } return this.getImpl().write(features); }; /** * This function read Features * * @public * @function * @param {object} geojson GeoJSON to parsed as a * M.Feature array * @return {Array<M.Feature>} * @api stable */ M.format.GeoJSON.prototype.read = function(geojson, projection) { var features = []; if (!M.utils.isNullOrEmpty(geojson)) { if (M.utils.isString(geojson)) { geojson = JSON.parse(geojson); } let geojsonFeatures = []; if (geojson.type === "FeatureCollection") { geojsonFeatures = geojson.features; } else if (geojson.type === "Feature") { geojsonFeatures = [geojson]; } features = this.getImpl().read(geojson, geojsonFeatures, projection); } return features; }; })();