diff --git a/src/ol/style/style.js b/src/ol/style/style.js index 23ff4c84fe..5d1f76b4fd 100644 --- a/src/ol/style/style.js +++ b/src/ol/style/style.js @@ -239,48 +239,45 @@ ol.style.createStyleFunction = function(obj) { }; +/** + * @type {Array.} + * @private + */ +ol.style.defaultStyle_ = null; + + /** * @param {ol.Feature} feature Feature. * @param {number} resolution Resolution. * @return {Array.} Style. */ ol.style.defaultStyleFunction = function(feature, resolution) { - var fill = new ol.style.Fill({ - color: 'rgba(255,255,255,0.4)' - }); - var stroke = new ol.style.Stroke({ - color: '#3399CC', - width: 1.25 - }); - var styles = [ - new ol.style.Style({ - image: new ol.style.Circle({ - fill: fill, - stroke: stroke, - radius: 5 - }), - fill: fill, - stroke: stroke - }) - ]; - - // Now that we've run it the first time, replace the function with - // a constant version. We don't use an immediately-invoked function + // 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.} Style. - */ - ol.style.defaultStyleFunction = function(feature, resolution) { - return styles; - }; - - return styles; + if (goog.isNull(ol.style.defaultStyle_)) { + var fill = new ol.style.Fill({ + color: 'rgba(255,255,255,0.4)' + }); + var stroke = new ol.style.Stroke({ + color: '#3399CC', + width: 1.25 + }); + ol.style.defaultStyle_ = [ + new ol.style.Style({ + image: new ol.style.Circle({ + fill: fill, + stroke: stroke, + radius: 5 + }), + fill: fill, + stroke: stroke + }) + ]; + } + return ol.style.defaultStyle_; };