J'ajoute une polyligne à une carte et j'utilise un plugin Polyline Decorator pour ajouter une flèche de direction à la polyligne. Puis avec setInterval
déplacer la flèche le long de la polyligne en utilisant un simple incrément de comptage comme le pourcentage de décalage.Comment faire pour ralentir cette animation avec javascript
Le problème est le plus grand zoom avant (quelque chose de plus que le niveau de zoom 13) la vitesse de la flèche est beaucoup trop rapide. pouvez-vous suggérer un moyen de le ralentir?
certaines variables dans le jeu sont:
map.getZoom()
pour changer la vitesse en fonction du niveau de zoom?
polyArray.length
peut changer la vitesse en fonction de la longueur de la polyligne?
Voir violon ici: http://jsfiddle.net/KSv2h/
et ma pleine fonction ci-dessous
// add map polylines
function addPolyline(polyArray, colour) {
console.log(polyArray.length);
polyline = L.polyline(polyArray, {color: colour});
var arrowHead = L.polylineDecorator(polyline).addTo(mylayergroup);
var arrowOffset = 0;
var anim = window.setInterval(function() {
arrowHead.setPatterns([
{offset: arrowOffset+'%', repeat: 0, symbol: new L.Symbol.ArrowHead({pixelSize: 15, polygon: false, pathOptions: {stroke: true}})}
])
if(++arrowOffset > 100)
arrowOffset = 0;
}, 100);
mylayergroup.addLayer(polyline).addTo(map);
}
une aide très appréciée.
Très belle question! Problème bien décrit, contexte fourni et code, et un sandbox jsfiddle! +1 –
Alors, pourquoi n'utilisez-vous pas le niveau de zoom dans le shouthow de setInterval? – marekful
@Marcell Fülöp essayant l'homme, oh im essayant ... –