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_;
};