在使用L.Polyline.SnakeAnim.js创建轨迹线时候,循环调用path.snakeIn()会报错:
Unhandled Rejection (TypeError): coordinates must be finite numbers
解决办法:源码中异步处理
源码
snakeIn: function () {
if (this._snaking) {
return;
}
if (!('performance' in window) || !('now' in window.performance) || !this._map) {
return;
}
this._snaking = true;
this._snakingTime = performance.now();
this._snakingVertices = this._snakingRings = this._snakingDistance = 0;
if (!this._snakeLatLngs) {
this._snakeLatLngs = L.LineUtil.isFlat(this._latlngs) ? [this._latlngs] : this._latlngs;
}
// Init with just the first (0th) vertex in a new ring
// Twice because the first thing that this._snake is is chop the head.
// 解决循环调用snakeIn报错问题 Unhandled Rejection (TypeError): coordinates must be finite numbers
this._latlngs = [[this._snakeLatLngs[0][0], this._snakeLatLngs[0][0]]];
this._update();
this._snake();
this.fire('snakestart');
return this;
},
改动
snakeIn: function () {
if (this._snaking) {
return;
}
if (!('performance' in window) || !('now' in window.performance) || !this._map) {
return;
}
this._snaking = true;
this._snakingTime = performance.now();
this._snakingVertices = this._snakingRings = this._snakingDistance = 0;
if (!this._snakeLatLngs) {
this._snakeLatLngs = L.LineUtil.isFlat(this._latlngs) ? [this._latlngs] : this._latlngs;
}
// Init with just the first (0th) vertex in a new ring
// Twice because the first thing that this._snake is is chop the head.
// 解决循环调用snakeIn报错问题 Unhandled Rejection (TypeError): coordinates must be finite numbers
setTimeout(() => {
this._latlngs = [[this._snakeLatLngs[0][0], this._snakeLatLngs[0][0]]];
this._update();
this._snake();
this.fire('snakestart');
});
return this;
}