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.