Refactor L.Path _update and _project into L.Renderer so that no event handling is needed (#5054)
* Refactor L.Path _update and _project into L.Renderer so that no event handling is needed * Refactor away L.Path's _update event logic
This commit is contained in:
parent
9fd0ba15b7
commit
4b8762edf9
@ -35,8 +35,6 @@ L.Canvas = L.Renderer.extend({
|
|||||||
onAdd: function () {
|
onAdd: function () {
|
||||||
L.Renderer.prototype.onAdd.call(this);
|
L.Renderer.prototype.onAdd.call(this);
|
||||||
|
|
||||||
this._layers = this._layers || {};
|
|
||||||
|
|
||||||
// Redraw vectors since canvas is cleared upon removal,
|
// Redraw vectors since canvas is cleared upon removal,
|
||||||
// in case of removing the renderer itself from the map.
|
// in case of removing the renderer itself from the map.
|
||||||
this._draw();
|
this._draw();
|
||||||
|
@ -76,19 +76,10 @@ L.Path = L.Layer.extend({
|
|||||||
this._renderer._initPath(this);
|
this._renderer._initPath(this);
|
||||||
this._reset();
|
this._reset();
|
||||||
this._renderer._addPath(this);
|
this._renderer._addPath(this);
|
||||||
this._renderer.on('update', this._update, this);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
onRemove: function () {
|
onRemove: function () {
|
||||||
this._renderer._removePath(this);
|
this._renderer._removePath(this);
|
||||||
this._renderer.off('update', this._update, this);
|
|
||||||
},
|
|
||||||
|
|
||||||
getEvents: function () {
|
|
||||||
return {
|
|
||||||
zoomend: this._project,
|
|
||||||
viewreset: this._reset
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
|
|
||||||
// @method redraw(): this
|
// @method redraw(): this
|
||||||
|
@ -32,6 +32,7 @@ L.Renderer = L.Layer.extend({
|
|||||||
initialize: function (options) {
|
initialize: function (options) {
|
||||||
L.setOptions(this, options);
|
L.setOptions(this, options);
|
||||||
L.stamp(this);
|
L.stamp(this);
|
||||||
|
this._layers = this._layers || {};
|
||||||
},
|
},
|
||||||
|
|
||||||
onAdd: function () {
|
onAdd: function () {
|
||||||
@ -45,17 +46,20 @@ L.Renderer = L.Layer.extend({
|
|||||||
|
|
||||||
this.getPane().appendChild(this._container);
|
this.getPane().appendChild(this._container);
|
||||||
this._update();
|
this._update();
|
||||||
|
this.on('update', this._updatePaths, this);
|
||||||
},
|
},
|
||||||
|
|
||||||
onRemove: function () {
|
onRemove: function () {
|
||||||
L.DomUtil.remove(this._container);
|
L.DomUtil.remove(this._container);
|
||||||
|
this.off('update', this._updatePaths, this);
|
||||||
},
|
},
|
||||||
|
|
||||||
getEvents: function () {
|
getEvents: function () {
|
||||||
var events = {
|
var events = {
|
||||||
viewreset: this._reset,
|
viewreset: this._reset,
|
||||||
zoom: this._onZoom,
|
zoom: this._onZoom,
|
||||||
moveend: this._update
|
moveend: this._update,
|
||||||
|
zoomend: this._onZoomEnd
|
||||||
};
|
};
|
||||||
if (this._zoomAnimated) {
|
if (this._zoomAnimated) {
|
||||||
events.zoomanim = this._onAnimZoom;
|
events.zoomanim = this._onAnimZoom;
|
||||||
@ -91,6 +95,22 @@ L.Renderer = L.Layer.extend({
|
|||||||
_reset: function () {
|
_reset: function () {
|
||||||
this._update();
|
this._update();
|
||||||
this._updateTransform(this._center, this._zoom);
|
this._updateTransform(this._center, this._zoom);
|
||||||
|
|
||||||
|
for (var id in this._layers) {
|
||||||
|
this._layers[id]._reset();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_onZoomEnd: function () {
|
||||||
|
for (var id in this._layers) {
|
||||||
|
this._layers[id]._project();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_updatePaths: function () {
|
||||||
|
for (var id in this._layers) {
|
||||||
|
this._layers[id]._update();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_update: function () {
|
_update: function () {
|
||||||
|
@ -99,6 +99,7 @@ L.SVG = L.Renderer.extend({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._updateStyle(layer);
|
this._updateStyle(layer);
|
||||||
|
this._layers[L.stamp(layer)] = layer;
|
||||||
},
|
},
|
||||||
|
|
||||||
_addPath: function (layer) {
|
_addPath: function (layer) {
|
||||||
@ -109,6 +110,7 @@ L.SVG = L.Renderer.extend({
|
|||||||
_removePath: function (layer) {
|
_removePath: function (layer) {
|
||||||
L.DomUtil.remove(layer._path);
|
L.DomUtil.remove(layer._path);
|
||||||
layer.removeInteractiveTarget(layer._path);
|
layer.removeInteractiveTarget(layer._path);
|
||||||
|
delete this._layers[L.stamp(layer)];
|
||||||
},
|
},
|
||||||
|
|
||||||
_updatePath: function (layer) {
|
_updatePath: function (layer) {
|
||||||
|
Loading…
Reference in New Issue
Block a user