Controlar o comportamento de um mapa
A classe MapAction contém os métodos e constantes que controlam e modificam um mapa. Por exemplo, você pode definir o nível inicial de zoom de um mapa ou impedir que usuários de aparelhos BlackBerry alterem o nível de zoom.
Você pode usar os métodos e constantes na classe MapAction para adicionar a seguinte funcionalidade a um mapa:
- Iniciar ações em um mapa.
- Defina o comportamento para ações que os usuários podem executar em um mapa.
- Identifique e responda aos eventos que ocorrem em um mapa.
Iniciar ações em um mapa
A classe MapAction fornece um conjunto de métodos, cada um chamado de set<Action>, que você pode chamar para executar ações em um mapa (por exemplo, setRotation). Os métodos set determinam se a ação é permitida e, em caso afirmativo, como ela deve ser executada.
Antes que você possa chamar um destes métodos em um mapa, você deve obter o objeto MapAction do mapa chamando getAction(). Por exemplo, quando o aplicativo abre e exibe o mapa, você pode chamar myMap.getAction().setCenterAndZoom(MapPoint center, int zoom) para definir o centro e o nível de zoom do mapa.
MapField map = new MapField(); map.getAction().setCenterLatLon( 45.0000, -75.0000 ); map.getAction().setZoom( 0 );
Definir comportamentos personalizados
Cada método set<Action> tem um método perform<Action> and allow<Action> correspondente. Os métodos perform permitem que você personalize o comportamento que ocorre quando uma ação é executada. Os métodos allow definem se as ações podem ocorrer. Para usar os métodos perform e allow, você deve estender sua classe com MapAction e substituir os métodos apropriados.
O exemplo de código a seguir demonstra como substituir os métodos performNavigateNext() e performNavigatePrev() para adicionar comportamento personalizado quando um usuário pressionar as teclas N (próximo) ou P (anterior). Os métodos chamam super para assegurar que as ações padrão destes métodos ainda sejam chamadas, além das ações personalizadas que são adicionadas. Este exemplo de código também demonstra como evitar a aplicação de zoom ao substituir allowSetZoom(int zoom) e retornar 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;
}
}
Adicionar um objeto personalizado de MapAction a um mapa
Depois que você cria um novo objeto MapAction, pode chamar setAction() em seu mapa e aplicar o objeto personalizado MapAction.
NewMapActions action = new NewMapActions(); map.getMapField().setAction(action);
Responder a alterações em MapField
Se você deseja identificar e responder às ações que o usuário executa em um campo de mapa, pode chamar addChangeListener() para registrar o campo de mapa como um ouvinte e, em seguida, usar as constantes que são definidas na classe MapAction. Por exemplo, MapAction.ACTION_ZOOM_CHANGE indica que o nível de zoom foi alterado.
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;
}
}
}
Estas informações foram úteis? Gostaríamos de receber seus comentários.