42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
/* Copyright (c) 2019 Jean-Marc VIGLINO,
|
|
released under the CeCILL-B license (French BSD license)
|
|
(http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt).
|
|
*/
|
|
import ol_source_Vector from 'ol/source/Vector.js'
|
|
import ol_ext_Ajax from '../util/Ajax.js';
|
|
|
|
import ol_format_GeoRSS from '../format/GeoRSS.js'
|
|
|
|
/** ol_source_GeoRSS is a source that load Wikimedia Commons content in a vector layer.
|
|
* @constructor
|
|
* @extends {ol_source_Vector}
|
|
* @param {*} options source options
|
|
* @param {string} options.url GeoRSS feed url
|
|
*/
|
|
var ol_source_GeoRSS = class olsourceGeoRSS extends ol_source_Vector {
|
|
constructor(options) {
|
|
options = options || {};
|
|
options.loader = function(extent, resolution, projection) {
|
|
return this._loaderFn(extent, resolution, projection);
|
|
}
|
|
super(options);
|
|
}
|
|
/** Loader function used to load features.
|
|
* @private
|
|
*/
|
|
_loaderFn(extent, resolution, projection) {
|
|
// Ajax request to get source
|
|
ol_ext_Ajax.get({
|
|
url: this.getUrl(),
|
|
dataType: 'XML',
|
|
error: function () { console.log('oops'); },
|
|
success: function (xml) {
|
|
var features = (new ol_format_GeoRSS()).readFeatures(xml, { featureProjection: projection });
|
|
this.addFeatures(features);
|
|
}.bind(this)
|
|
});
|
|
}
|
|
}
|
|
|
|
export default ol_source_GeoRSS
|