Add scope and type checking to ol.reader.GeoJSON
This commit is contained in:
@@ -54,13 +54,16 @@ ol.reader.GeoJSON.readPolygonGeometry_ = function(geometry) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {GeoJSONFeature} feature Feature.
|
* @param {GeoJSONObject} object Object.
|
||||||
* @param {function(ol.Feature): *} callback Callback.
|
* @param {function(this: S, ol.Feature): T} callback Callback.
|
||||||
|
* @param {S=} opt_obj Scope.
|
||||||
* @private
|
* @private
|
||||||
* @return {*} Callback result.
|
* @return {T} Callback result.
|
||||||
|
* @template S,T
|
||||||
*/
|
*/
|
||||||
ol.reader.GeoJSON.readFeature_ = function(feature, callback) {
|
ol.reader.GeoJSON.readFeature_ = function(object, callback, opt_obj) {
|
||||||
goog.asserts.assert(feature.type == 'Feature');
|
goog.asserts.assert(object.type == 'Feature');
|
||||||
|
var feature = /** @type {GeoJSONFeature} */ (object);
|
||||||
var geometryReader =
|
var geometryReader =
|
||||||
ol.reader.GeoJSON.GEOMETRY_READERS_[feature.geometry.type];
|
ol.reader.GeoJSON.GEOMETRY_READERS_[feature.geometry.type];
|
||||||
goog.asserts.assert(goog.isDef(geometryReader));
|
goog.asserts.assert(goog.isDef(geometryReader));
|
||||||
@@ -69,23 +72,25 @@ ol.reader.GeoJSON.readFeature_ = function(feature, callback) {
|
|||||||
if (goog.isDef(feature.properties)) {
|
if (goog.isDef(feature.properties)) {
|
||||||
f.setValues(feature.properties);
|
f.setValues(feature.properties);
|
||||||
}
|
}
|
||||||
return callback(f);
|
return callback.call(opt_obj, f);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {GeoJSONFeatureCollection} featureCollection Feature collection.
|
* @param {GeoJSONObject} object Object.
|
||||||
* @param {function(ol.Feature): *} callback Callback.
|
* @param {function(this: S, ol.Feature): T} callback Callback.
|
||||||
|
* @param {S=} opt_obj Scope.
|
||||||
* @private
|
* @private
|
||||||
* @return {*} Callback result.
|
* @return {T|undefined} Callback result.
|
||||||
|
* @template S,T
|
||||||
*/
|
*/
|
||||||
ol.reader.GeoJSON.readFeatureCollection_ =
|
ol.reader.GeoJSON.readFeatureCollection_ = function(object, callback, opt_obj) {
|
||||||
function(featureCollection, callback) {
|
goog.asserts.assert(object.type == 'FeatureCollection');
|
||||||
goog.asserts.assert(featureCollection.type == 'FeatureCollection');
|
var featureCollection = /** @type {GeoJSONFeatureCollection} */ (object);
|
||||||
var features = featureCollection.features;
|
var features = featureCollection.features;
|
||||||
var i, ii;
|
var i, ii;
|
||||||
for (i = 0, ii = features.length; i < ii; ++i) {
|
for (i = 0, ii = features.length; i < ii; ++i) {
|
||||||
var result = ol.reader.GeoJSON.readFeature_(features[i], callback);
|
var result = ol.reader.GeoJSON.readFeature_(features[i], callback, opt_obj);
|
||||||
if (result) {
|
if (result) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -96,22 +101,26 @@ ol.reader.GeoJSON.readFeatureCollection_ =
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {GeoJSONObject} object Object.
|
* @param {GeoJSONObject} object Object.
|
||||||
* @param {function(ol.Feature): *} callback Callback.
|
* @param {function(this: S, ol.Feature): T} callback Callback.
|
||||||
* @return {*} Callback result.
|
* @param {S=} opt_obj Scope.
|
||||||
|
* @return {T} Callback result.
|
||||||
|
* @template S,T
|
||||||
*/
|
*/
|
||||||
ol.reader.GeoJSON.readObject = function(object, callback) {
|
ol.reader.GeoJSON.readObject = function(object, callback, opt_obj) {
|
||||||
var objectReader = ol.reader.GeoJSON.OBJECT_READERS_[object.type];
|
var objectReader = ol.reader.GeoJSON.OBJECT_READERS_[object.type];
|
||||||
goog.asserts.assert(goog.isDef(objectReader));
|
goog.asserts.assert(goog.isDef(objectReader));
|
||||||
return objectReader(object, callback);
|
return objectReader(object, callback, opt_obj);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {string} string String.
|
* @param {string} string String.
|
||||||
* @param {function(ol.Feature): *} callback Callback.
|
* @param {function(ol.Feature): T} callback Callback.
|
||||||
* @return {*} Callback result.
|
* @param {S=} opt_obj Scope.
|
||||||
|
* @return {T} Callback result.
|
||||||
|
* @template S,T
|
||||||
*/
|
*/
|
||||||
ol.reader.GeoJSON.readString = function(string, callback) {
|
ol.reader.GeoJSON.readString = function(string, callback, opt_obj) {
|
||||||
var object = goog.json.parse(string);
|
var object = goog.json.parse(string);
|
||||||
return ol.reader.GeoJSON.readObject(
|
return ol.reader.GeoJSON.readObject(
|
||||||
/** @type {GeoJSONObject} */ (object), callback);
|
/** @type {GeoJSONObject} */ (object), callback);
|
||||||
@@ -133,7 +142,7 @@ ol.reader.GeoJSON.GEOMETRY_READERS_ = {
|
|||||||
/**
|
/**
|
||||||
* @const
|
* @const
|
||||||
* @private
|
* @private
|
||||||
* @type {Object.<string, function(*, function(ol.Feature): *): *>}
|
* @type {Object.<string, function(GeoJSONObject, function(ol.Feature): *, *): *>}
|
||||||
*/
|
*/
|
||||||
ol.reader.GeoJSON.OBJECT_READERS_ = {
|
ol.reader.GeoJSON.OBJECT_READERS_ = {
|
||||||
'Feature': ol.reader.GeoJSON.readFeature_,
|
'Feature': ol.reader.GeoJSON.readFeature_,
|
||||||
|
|||||||
Reference in New Issue
Block a user