[Libreoffice-commits] online.git: loleaflet/src
Mihai Varga
mihai.varga at collabora.com
Fri May 22 04:35:31 PDT 2015
loleaflet/src/layer/tile/GridLayer.js | 56 +++++++++++++++++++++-------------
loleaflet/src/layer/tile/TileLayer.js | 3 -
2 files changed, 35 insertions(+), 24 deletions(-)
New commits:
commit 139bae53c112118f6b96b3f41ec8a8af6dd54a52
Author: Mihai Varga <mihai.varga at collabora.com>
Date: Fri May 22 14:27:42 2015 +0300
Fixed the incorrect tile rendering after zooming problem
Leaflet originally discarded tiles from different zoom levels
and I initially thought setting the opacity to 0 will be enough
and this way tiles will remain in cache.
But this does not work so tiles are now removed from the dom tree
and added in a cache to be later reused
diff --git a/loleaflet/src/layer/tile/GridLayer.js b/loleaflet/src/layer/tile/GridLayer.js
index 52636d3..5b85b58 100644
--- a/loleaflet/src/layer/tile/GridLayer.js
+++ b/loleaflet/src/layer/tile/GridLayer.js
@@ -34,6 +34,7 @@ L.GridLayer = L.Layer.extend({
this._levels = {};
this._tiles = {};
+ this._tileCache = {};
this._viewReset();
this._update();
@@ -262,11 +263,11 @@ L.GridLayer = L.Layer.extend({
},
_retainParent: function (x, y, z, minZoom) {
- var x2 = Math.floor(x / 2),
- y2 = Math.floor(y / 2),
+ var x2 = Math.floor(x / 1.2),
+ y2 = Math.floor(y / 1.2),
z2 = z - 1;
- var key = x2 + ':' + y2 + ':' + z2,
+ var key = x2 + ':' + y2 + ':' + z2 + ':' + this._currentPart,
tile = this._tiles[key];
if (tile && tile.active) {
@@ -286,10 +287,11 @@ L.GridLayer = L.Layer.extend({
_retainChildren: function (x, y, z, maxZoom) {
- for (var i = 2 * x; i < 2 * x + 2; i++) {
- for (var j = 2 * y; j < 2 * y + 2; j++) {
+ for (var i = 1.2 * x; i < 1.2 * x + 2; i++) {
+ for (var j = 1.2 * y; j < 1.2 * y + 2; j++) {
- var key = i + ':' + j + ':' + (z + 1),
+ var key = Math.floor(i) + ':' + Math.floor(j) + ':' +
+ (z + 1) + ':' + this._currentPart,
tile = this._tiles[key];
if (tile && tile.active) {
@@ -437,7 +439,6 @@ L.GridLayer = L.Layer.extend({
_move: function () {
this._update();
- this._pruneTiles();
},
_update: function (center, zoom) {
@@ -558,7 +559,15 @@ L.GridLayer = L.Layer.extend({
_removeTile: function (key) {
var tile = this._tiles[key];
if (!tile) { return; }
- tile.current = false;
+
+ this._tileCache[key] = tile.el.src;
+ L.DomUtil.remove(tile.el);
+ delete this._tiles[key];
+
+ this.fire('tileunload', {
+ tile: tile.el,
+ coords: this._keyToTileCoords(key)
+ });
},
_initTile: function (tile) {
@@ -583,18 +592,6 @@ L.GridLayer = L.Layer.extend({
},
_addTile: function (coords, fragment) {
- if (this.options.useSocket && this._map.socket) {
- var twips = this._coordsToTwips(coords);
- this._map.socket.send('tile ' +
- 'part=' + this._currentPart + ' ' +
- 'width=' + this._tileSize + ' ' +
- 'height=' + this._tileSize + ' ' +
- 'tileposx=' + twips.x + ' ' +
- 'tileposy=' + twips.y + ' ' +
- 'tilewidth=' + this._tileWidthTwips + ' ' +
- 'tileheight=' + this._tileHeightTwips);
- }
-
var tilePos = this._getTilePos(coords),
key = this._tileCoordsToKey(coords);
var tile = this.createTile(this._wrapCoords(coords), L.bind(this._tileReady, this, coords));
@@ -624,6 +621,23 @@ L.GridLayer = L.Layer.extend({
tile: tile,
coords: coords
});
+
+ if (!this._tileCache[key]) {
+ if (this.options.useSocket && this._map.socket) {
+ var twips = this._coordsToTwips(coords);
+ this._map.socket.send('tile ' +
+ 'part=' + this._currentPart + ' ' +
+ 'width=' + this._tileSize + ' ' +
+ 'height=' + this._tileSize + ' ' +
+ 'tileposx=' + twips.x + ' ' +
+ 'tileposy=' + twips.y + ' ' +
+ 'tilewidth=' + this._tileWidthTwips + ' ' +
+ 'tileheight=' + this._tileHeightTwips);
+ }
+ }
+ else {
+ tile.src = this._tileCache[key];
+ }
},
_tileReady: function (coords, err, tile) {
@@ -640,7 +654,7 @@ L.GridLayer = L.Layer.extend({
var key = this._tileCoordsToKey(coords);
tile = this._tiles[key];
- if (!tile || tile.loaded !== undefined) { return; }
+ if (!tile) { return; }
tile.loaded = +new Date();
if (this._map._fadeAnimated) {
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index bf532e3..8875565 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -95,9 +95,6 @@ L.TileLayer = L.GridLayer.extend({
http://www.w3.org/TR/WCAG20-TECHS/H67
*/
tile.alt = '';
-
- tile.src = '';
-
return tile;
},
More information about the Libreoffice-commits
mailing list