From d571ef5804bc6e58297525e085a9c63b5eb16c73 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Fri, 8 Mar 2013 01:04:35 +0100 Subject: [PATCH] Prioritize tile loading around mouse position --- src/ol/map.js | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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(); + } };