Contrôle du comportement d'une carte

La classe MapAction contient les méthodes et les constantes qui contrôlent et modifient une carte. Par exemple, vous pouvez définir le niveau de zoom initial d'une carte ou empêcher les utilisateurs de terminal BlackBerry de modifier le niveau de zoom.

Vous pouvez utiliser les méthodes et les constantes de la classe MapAction pour ajouter les fonctionnalités suivantes à une carte :

  • Lancer des actions sur une carte.
  • Définir le comportement des actions que les utilisateurs sont autorisés à exécuter sur une carte.
  • Identifier les événements survenant sur une carte et y répondre.

Lancement d'actions sur une carte

La classe MapAction fournit un ensemble de méthodes portant le nom set<Action>, que vous pouvez appeler pour exécuter des actions sur une carte (par exemple, setRotation). Les méthodes set déterminent si l'action est autorisée, et si tel est le cas, la façon dont elle est exécutée.

Avant de pouvoir appeler l'une de ces méthodes sur une carte, vous devez récupérer l'objet MapAction à partir de la carte en appelant getAction(). Par exemple, lorsque l'application s'ouvre et affiche la carte, vous pouvez appeler myMap.getAction().setCenterAndZoom(MapPoint center, int zoom) pour définir le centre et le niveau de zoom de la carte.

MapField map = new MapField();
map.getAction().setCenterLatLon( 45.0000, -75.0000 );
map.getAction().setZoom( 0 );

Définition de comportements personnalisés

Chaque méthode set<Action> a une méthode perform<Action> and allow<Action> correspondante. Les méthodes perform personnalisent le comportement déclenché lorsqu'une action est exécutée. Les méthodes allow définissent si les actions sont autorisées ou non. Pour utiliser les méthodes perform et allow, vous devez étendre votre classe avec MapAction et remplacer les méthodes appropriées.

L'échantillon de code suivant montre comment remplacer performNavigateNext() et performNavigatePrev() pour personnaliser leur comportement lorsque l'utilisateur appuie sur les touches N (suivant) ou P (précédent). Les méthodes appellent super pour assurer que les actions par défaut de ces méthodes sont toujours appelées, en plus des actions personnalisées ajoutées. Cet échantillon de code montre également comment empêcher l'utilisateur d'effectuer toute action de zoom en remplaçant allowSetZoom(int zoom) et en renvoyant false.

public class NewMapActions extends MapAction
{
    protected boolean performNavigateNext()
    {
        super.performNavigateNext();
        // Add custom behavior here.
        return true;	
    }
    protected boolean performNavigatePrev()
    {
        super.performNavigatePrev();
        // Add custom behavior here.
        return true;	
    }
    protected boolean allowSetZoom(int zoom)
    {
        return false;	
    }
}

Ajout d'un objet MapAction personnalisé à une carte

Après que vous avez créé un objet MapAction, vous pouvez appeler setAction() sur votre carte pour appliquer l'objet MapAction personnalisé.

NewMapActions action = new NewMapActions();
map.getMapField().setAction(action);

Répondre aux modifications dans un objet MapField

Si vous voulez identifier et répondre aux actions que l'utilisateur exécute dans un champ de carte, vous pouvez appeler addChangeListener() pour enregistrer le champ de carte en tant qu'écouteur, puis utiliser les constantes définies dans la classe MapAction. Par exemple, MapAction.ACTION_ZOOM_CHANGE indique que le niveau de zoom a été modifié.

class MapFieldListener implements FieldChangeListener
{
    public MapFieldListener ()
    {
        MapField map = new MapField();
        map.addChangeListener(this);
    }
    public void fieldChanged( Field field, int actionId )
    {
        switch ( actionId )
        {
            case MapAction.ACTION_CENTRE_CHANGE:
                break;
            case MapAction.ACTION_ZOOM_CHANGE:
                break;
        }
    }
}

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.