Merge pull request #4064 from fredj/lazy_ol.style.defaultStyleFunction

Use a private variable to cache the default style array
This commit is contained in:
Frédéric Junod
2015-09-07 09:24:52 +02:00
+16 -19
View File
@@ -239,12 +239,25 @@ ol.style.createStyleFunction = function(obj) {
}; };
/**
* @type {Array.<ol.style.Style>}
* @private
*/
ol.style.defaultStyle_ = null;
/** /**
* @param {ol.Feature} feature Feature. * @param {ol.Feature} feature Feature.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {Array.<ol.style.Style>} Style. * @return {Array.<ol.style.Style>} Style.
*/ */
ol.style.defaultStyleFunction = function(feature, resolution) { ol.style.defaultStyleFunction = function(feature, resolution) {
// We don't use an immediately-invoked function
// and a closure so we don't get an error at script evaluation time in
// browsers that do not support Canvas. (ol.style.Circle does
// canvas.getContext('2d') at construction time, which will cause an.error
// in such browsers.)
if (goog.isNull(ol.style.defaultStyle_)) {
var fill = new ol.style.Fill({ var fill = new ol.style.Fill({
color: 'rgba(255,255,255,0.4)' color: 'rgba(255,255,255,0.4)'
}); });
@@ -252,7 +265,7 @@ ol.style.defaultStyleFunction = function(feature, resolution) {
color: '#3399CC', color: '#3399CC',
width: 1.25 width: 1.25
}); });
var styles = [ ol.style.defaultStyle_ = [
new ol.style.Style({ new ol.style.Style({
image: new ol.style.Circle({ image: new ol.style.Circle({
fill: fill, fill: fill,
@@ -263,24 +276,8 @@ ol.style.defaultStyleFunction = function(feature, resolution) {
stroke: stroke stroke: stroke
}) })
]; ];
}
// Now that we've run it the first time, replace the function with return ol.style.defaultStyle_;
// a constant version. We don't use an immediately-invoked function
// and a closure so we don't get an error at script evaluation time in
// browsers that do not support Canvas. (ol.style.Circle does
// canvas.getContext('2d') at construction time, which will cause an.error
// in such browsers.)
/**
* @param {ol.Feature} feature Feature.
* @param {number} resolution Resolution.
* @return {Array.<ol.style.Style>} Style.
*/
ol.style.defaultStyleFunction = function(feature, resolution) {
return styles;
};
return styles;
}; };