Controllo del comportamento di una mappa

La classe MapAction contiene i metodi e le costanti che controllano e modificano una mappa. Ad esempio, è possibile impostare il livello di zoom iniziale di una mappa o impedire agli utenti BlackBerry di modificare il livello di zoom.

È possibile utilizzare i metodi e le costanti nella classe MapAction per aggiungere a una mappa le seguenti funzionalità:

  • Avviare azioni su una mappa.
  • Definire il comportamento delle azioni che gli utenti possono eseguire su una mappa.
  • Identificare e rispondere agli eventi che si verificano su una mappa.

Avvio di azioni su una mappa

La classe MapAction fornisce una serie di metodi, ciascuno denominato set<Action>, che è possibile richiamare per eseguire azioni su una mappa (ad esempio, setRotation). I metodi set determinano se l'azione è consentita e, in tal caso, come l'azione viene eseguita.

Prima di poter richiamare uno di questi metodi su una mappa, è necessario recuperare l'oggetto MapAction dalla mappa richiamando getAction(). Ad esempio, quando si apre l'applicazione e si visualizza la mappa, è possibile richiamare myMap.getAction().setCenterAndZoom(MapPoint center, int zoom) per impostare il centro e il livello di zoom della mappa.

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

Definizione di comportamenti personalizzati

Ogni metodoset<Action> dispone di un metodo perform<Action> and allow<Action> corrispondente. I metodi perform consentono di personalizzare il comportamento che si verifica quando viene eseguita un'azione. I metodi allow definiscono quali azioni possono essere eseguite. Per utilizzare i metodi perform e allow, è necessario estendere la classe con MapAction e sovrascrivere i metodi appropriati.

L'esempio di codice seguente mostra come sovrascrivere i metodi performNavigateNext() e performNavigatePrev() per personalizzare il relativo comportamento quando un utente preme i tasti N (avanti) o P (indietro). I metodi richiamano super per assicurare che le azioni predefinite per questi metodi vengano comunque richiamate, oltre alle azioni personalizzate che vengono aggiunte. Questo esempio di codice mostra anche come impedire a un utente di eseguire lo zoom sovrascrivendo allowSetZoom(int zoom) e restituendo 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;	
    }
}

Aggiunta di un oggetto MapAction personalizzato a una mappa

Dopo aver creato un nuovo oggetto MapAction, è possibile richiamare setAction() sulla mappa per applicare l'oggetto MapAction personalizzato.

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

Risposta alle modifiche apportate in un campo della mappa

Se si desidera identificare e rispondere alle azioni eseguite dall'utente in un campo della mappa, è possibile richiamare addChangeListener() per registrare il campo della mappa come listener e utilizzare quindi le costanti definite nella classe MapAction. Ad esempio, MapAction.ACTION_ZOOM_CHANGE indica che il livello di zoom è stato modificato.

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;
        }
    }
}

Le informazioni sono state utili? Inviateci i vostri commenti.