diff --git a/src/ol/map.js b/src/ol/map.js
index bffa9ab407..7e8e04dfcb 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -242,6 +242,12 @@ ol.Map = function(mapOptions) {
goog.events.listen(this.viewportSizeMonitor_, goog.events.EventType.RESIZE,
this.handleBrowserWindowResize, false, this);
+ /**
+ * @private
+ * @type {ol.Coordinate}
+ */
+ this.focus_ = null;
+
/**
* @private
* @type {Array.
}
@@ -487,9 +493,10 @@ ol.Map.prototype.getTilePriority = function(tile, tileSourceKey, tileCenter) {
if (!frameState.wantedTiles[tileSourceKey][coordKey]) {
return ol.TileQueue.DROP;
}
- var center = frameState.view2DState.center;
- var deltaX = tileCenter.x - center.x;
- var deltaY = tileCenter.y - center.y;
+ var focus = goog.isNull(this.focus_) ?
+ frameState.view2DState.center : this.focus_;
+ var deltaX = tileCenter.x - focus.x;
+ var deltaY = tileCenter.y - focus.y;
return deltaX * deltaX + deltaY * deltaY;
};
@@ -502,6 +509,11 @@ ol.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) {
var type = opt_type || browserEvent.type;
var mapBrowserEvent = new ol.MapBrowserEvent(type, this, browserEvent);
this.handleMapBrowserEvent(mapBrowserEvent);
+ if (type == goog.events.EventType.MOUSEOUT) {
+ this.focus_ = null;
+ } else {
+ this.focus_ = mapBrowserEvent.getCoordinate();
+ }
};