44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
/* Copyright (c) 2015 Jean-Marc VIGLINO,
|
|
released under the CeCILL-B license (French BSD license)
|
|
(http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt).
|
|
*/
|
|
/** Ordering function for ol.layer.Vector renderOrder parameter
|
|
* ol.ordering.fn (options)
|
|
* It will return an ordering function (f0,f1)
|
|
* @namespace
|
|
*/
|
|
var ol_ordering = {};
|
|
|
|
/** y-Ordering
|
|
* @return ordering function (f0,f1)
|
|
*/
|
|
ol_ordering.yOrdering = function()
|
|
{ return function(f0,f1)
|
|
{ return f1.getGeometry().getExtent()[1] - f0.getGeometry().getExtent()[1] ;
|
|
};
|
|
};
|
|
|
|
/** Order with a feature attribute
|
|
* @param options
|
|
* @param {string} options.attribute ordering attribute, default zIndex
|
|
* @param {function} options.equalFn ordering function for equal values
|
|
* @return ordering function (f0,f1)
|
|
*/
|
|
ol_ordering.zIndex = function(options)
|
|
{ if (!options) options = {};
|
|
var attr = options.attribute || 'zIndex';
|
|
if (options.equalFn)
|
|
{ return function(f0,f1)
|
|
{ if (f0.get(attr) == f1.get(attr)) return options.equalFn(f0,f1);
|
|
else return f0.get(attr) < f1.get(attr) ? 1:-1;
|
|
};
|
|
}
|
|
else
|
|
{ return function(f0,f1)
|
|
{ if (f0.get(attr) == f1.get(attr)) return 0;
|
|
else return f0.get(attr) < f1.get(attr) ? 1:-1;
|
|
};
|
|
}
|
|
};
|
|
|
|
export default ol_ordering |