Comment déterminer quand Mapbox GL JS FlyTo est «arrivé»

12

Je voudrais afficher une superposition lorsque le mouvement de la caméra Flybox Mapbox a terminé son action et est en place à la position et au niveau de zoom corrects. Existe-t-il un moyen de savoir quand cette action est terminée?

Alors, volez jusqu'à une position, puis montrez la superposition, en gros.

Bill Thornton
la source

Réponses:

17

Vous pouvez y parvenir en combinant quelques écouteurs d'événements de carte et une variable comme suit.

Pour empêcher une info-bulle lorsque l'utilisateur a déplacé ou zoomé la carte avec la souris ou le clavier, vous aurez besoin d'une variable qui détermine si votre utilisateur a cliqué sur le bouton "voler" ou non:

map.on('flystart', function(){
    flying = true;
});
map.on('flyend', function(){
    flying = false;
});

Ce code s'exécutera ensuite une fois que votre carte aura cessé de bouger et de zoomer:

map.on('moveend', function(e){
   if(flying){
      // tooltip or overlay here
      map.fire(flyend); 
   }
});

Voir la démo: http://jsfiddle.net/ft7s8son/

chrki
la source
Doh. J'ai regardé cette liste d'événements et je n'ai jamais vu de mouvement. Je vous remercie!
Bill Thornton
Mec, je l'apprécie vraiment! Cela fonctionne très bien!
willbeeler