Add new 'weight' option to ol.layer.Heatmap

This commit is contained in:
Frederic Junod
2014-03-26 17:58:05 +01:00
parent 0c131ba931
commit 0461901a86
2 changed files with 14 additions and 1 deletions

View File

@@ -595,6 +595,8 @@
* @property {number|undefined} radius Radius size in pixels. Default is `8`.
* @property {number|undefined} blur Blur size in pixels. Default is `15`.
* @property {number|undefined} shadow Shadow size in pixels. Default is `250`.
* @property {string|function(ol.Feature):number|undefined} weight The feature attribute to use for the
* weight or a function that returns a weight from a feature. Default is `weight`.
* @property {number|undefined} minResolution The minimum resolution
* (inclusive) at which this layer will be visible.
* @property {number|undefined} maxResolution The maximum resolution

View File

@@ -55,8 +55,19 @@ ol.layer.Heatmap = function(opt_options) {
*/
var styleCache = new Array(256);
var weight = goog.isDef(options.weight) ? options.weight : 'weight';
var weightFunction;
if (goog.isString(weight)) {
weightFunction = function(feature) {
return feature.get(weight);
};
} else {
weightFunction = weight;
}
goog.asserts.assert(goog.isFunction(weightFunction));
this.setStyle(function(feature, resolution) {
var weight = feature.get('weight');
var weight = weightFunction(feature);
var opacity = goog.isDef(weight) ? weight : 1;
// cast to 8 bits
var index = (255 * opacity) | 0;