我正在尝试向Leaflet插件MovingMarker添加一个自定义选项,以便在相应动画结束时删除每个标记。此插件扩展了L.Marker类,并使用window.requestAnimationFrame方法为标记设置动画。
考虑到这一点,我在静态属性中添加了destroyedState: 4
行,在options属性中添加了remove: false
行。我还添加了以下代码块:
吸气剂
isDestroyed: function() {
return this._state === L.Marker.MovingMarker.destroyedState;
}
Setter
destroy: function() {
if (this.isDestroyed()) {
return;
}
this._state = L.Marker.MovingMarker.destroyedState;
this._removeMarker();
},
onEnd: function(map) {
L.Marker.prototype.onEnd.call(this, map);
if (this.options.remove && (this.isDestroyed())) {
this.destroy();
return;
}
this._removeMarker();
},
_removeMarker: function() {
this._state = L.Marker.MovingMarker.destroyedState;
if (this._animRequested) {
L.Util.cancelAnimFrame(this._animId);
this._animRequested = false;
}
this.L.Marker.MovingMarker.clearLayers(this, map);
this.L.Marker.MovingMarker = null;
},
不幸的是,由于某种原因,当option remove设置为true时,方法clearLayers不能完成预期的工作。我尝试了 removeLayer 这个方法也无济于事。我不知道我做错了什么?这是一个有效的example,其中remove
选项在第232行设置为true。