diff --git a/src/layer/vector/Canvas.js b/src/layer/vector/Canvas.js index edcb70b3444..de0cee9df4b 100644 --- a/src/layer/vector/Canvas.js +++ b/src/layer/vector/Canvas.js @@ -87,6 +87,9 @@ L.Canvas = L.Renderer.extend({ // translate so we use the same path coordinates after canvas element moves this._ctx.translate(-b.min.x, -b.min.y); + + // Tell paths to redraw themselves + this.fire('update'); }, _initPath: function (layer) { diff --git a/src/layer/vector/Renderer.js b/src/layer/vector/Renderer.js index efae6031693..d0f72675b6c 100644 --- a/src/layer/vector/Renderer.js +++ b/src/layer/vector/Renderer.js @@ -45,13 +45,10 @@ L.Renderer = L.Layer.extend({ this.getPane().appendChild(this._container); this._update(); - - this._map.on('rotate', this._update, this); }, onRemove: function () { L.DomUtil.remove(this._container); - this._map.off('rotate', this._update, this); }, getEvents: function () { @@ -90,7 +87,8 @@ L.Renderer = L.Layer.extend({ }, _update: function () { - // update pixel bounds of renderer container (for positioning/sizing/clipping later) + // Update pixel bounds of renderer container (for positioning/sizing/clipping later) + // Subclasses are responsible of firing the 'update' event. var p = this.options.padding, map = this._map, size = this._map.getSize(), @@ -111,8 +109,6 @@ L.Renderer = L.Layer.extend({ this._center = this._map.getCenter(); this._zoom = this._map.getZoom(); - - this.fire('update'); } }); diff --git a/src/layer/vector/SVG.js b/src/layer/vector/SVG.js index 847de702744..91400ed984d 100644 --- a/src/layer/vector/SVG.js +++ b/src/layer/vector/SVG.js @@ -78,6 +78,8 @@ L.SVG = L.Renderer.extend({ // movement: update container viewBox so that we don't have to change coordinates of individual layers L.DomUtil.setPosition(container, b.min); container.setAttribute('viewBox', [b.min.x, b.min.y, size.x, size.y].join(' ')); + + this.fire('update'); }, // methods below are called by vector layers implementations