diff --git a/externs/olx.js b/externs/olx.js
index ae436811b5..cd39808c64 100644
--- a/externs/olx.js
+++ b/externs/olx.js
@@ -3649,6 +3649,7 @@ olx.layer.TileOptions.prototype.zIndex;
* map: (ol.PluggableMap|undefined),
* declutter: (boolean|undefined),
* style: (ol.style.Style|Array.
|ol.StyleFunction|undefined),
+ * maxTilesLoading: (number|undefined),
* updateWhileAnimating: (boolean|undefined),
* updateWhileInteracting: (boolean|undefined),
* visible: (boolean|undefined),
@@ -3763,6 +3764,12 @@ olx.layer.VectorOptions.prototype.declutter;
olx.layer.VectorOptions.prototype.style;
+/**
+ * Maximum number tiles to load simultaneously. Default is `16`.
+ * @type {number|undefined}
+ */
+olx.layer.VectorOptions.prototype.maxTilesLoading;
+
/**
* When set to `true`, feature batches will be recreated during animations.
* This means that no vectors will be shown clipped, but the setting will have a
diff --git a/src/ol/PluggableMap.js b/src/ol/PluggableMap.js
index ec018bf7e2..689c8d0dd5 100644
--- a/src/ol/PluggableMap.js
+++ b/src/ol/PluggableMap.js
@@ -76,6 +76,8 @@ export let MapOptions;
* Note that layers are rendered in the order supplied, so if you want, for
* example, a vector layer to appear on top of a tile layer, it must come
* after the tile layer.
+ * @param {number|undefined} options.maxTilesLoading Maximum number tiles to load
+ * simultaneously. Default is `16`.
* @param {boolean|undefined} options.loadTilesWhileAnimating When set to true,
* tiles will be loaded during animations. This may improve the user
* experience, but can also make animations stutter on devices with slow
@@ -115,6 +117,12 @@ const PluggableMap = function(options) {
const optionsInternal = createOptionsInternal(options);
+ /**
+ * @type {number}
+ * @private
+ */
+ this.maxTilesLoading_ = options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;
+
/**
* @type {boolean}
* @private
@@ -945,7 +953,7 @@ PluggableMap.prototype.handlePostRender = function() {
// loading tiles that will quickly disappear from view.
const tileQueue = this.tileQueue_;
if (!tileQueue.isEmpty()) {
- let maxTotalLoading = 16;
+ let maxTotalLoading = this.maxTilesLoading_;
let maxNewLoads = maxTotalLoading;
if (frameState) {
const hints = frameState.viewHints;