Personalizar a aparência de objetos em um mapa

O pacote net.rim.device.api.lbs.maps.view contém as classes Style e StyleSet, que você pode usar para personalizar a aparência de qualquer objeto mapeável que seja exibido em um mapa. Ao usar estilos, você pode personalizar seus mapas e dar a eles uma aparência uniforme, da mesma forma como faz para aplicar estilos de CSS.

A classe Style fornece as seguintes propriedades que definem as características visuais de objetos mapeáveis.

  • Borda: especifica propriedades para a borda ao redor de um objeto mapeável (cor, opacidade e tamanho)
  • Preenchimento: especifica propriedades para a área interna de um objeto mapeável (cor e opacidade)
  • Rótulo: especifica propriedades para o rótulo de um objeto mapeável (cor e opacidade do preenchimento e o alinhamento, cor, nome de família, opacidade, tamanho e estilo da fonte)

A classe Style também contém constantes relacionadas ao tamanho da borda e alinhamento de texto (por exemplo, EDGE_SIZE_LARGE e FONT_ALIGNMENT_RIGHT). Você pode encontrar constantes relacionadas à fonte e cor nas classes Font e Color, respectivamente. A opacidade é representada por um número inteiro entre 0 e 255, em que 0 é transparente e 255 é opaco.

A classe StyleSet representa um conjunto de estilos individuais que um mapa usa para processar objetos mapeáveis em uma tela. Os mapas têm um conjunto padrão de estilo que você pode obter e substituir com seus próprios estilos.

Um objeto StyleSet pode incluir três diferentes tipos de estilos: um estilo de base, um estilo de classe e um estilo de ID. O estilo de base define um estilo para todos os objetos mapeáveis. O estilo de classe define um estilo para todos os objetos mapeáveis de uma classe particular. O estilo de ID define um estilo para todos os objetos mapeáveis de um ID particular. Para atribuir um ID a um objeto mapeável, você deve chamar AbstractMappable.setStyleId() no objeto.

Você também pode criar estilos que herdem propriedades de estilos primários (por exemplo, um estilo de ID pode ser herdado de uma classe ou estilo de base). Para herdar uma propriedade de um estilo primário, você pode especificar uma das constantes INHERIT (por exemplo, COLOR_INHERIT ou EDGE_SIZE_INHERIT).

Criar um mapa

RichMapField map = MapFactory.getInstance().generateRichMapField();

Obter o conjunto de estilo para o mapa

StyleSet styles = map.getMapField().getDrawingStyles();

Definir estilos e aplicá-los a um conjunto de estilo

// Base style for the entire map.
Style baseStyle = new Style();
baseStyle.setLabelFontFamilyName("arial");
styles.setBaseStyle( baseStyle );
// Style for the MapLocation class.
Style classStyle = new Style();
classStyle.setLabelFillColor( Color.BLACK );
classStyle.setLabelFontColor( Color.WHITE );
classStyle.setEdgeColor( Color.WHITE );
styles.addClassBasedStyle( MapLocation.class, classStyle );
// Style for a specific ID.
Style idStyle = new Style();
classStyle.setEdgeColor( Color.RED );
styles.addIdBasedStyle("ID_1", idStyle);

Criar um objeto mapeável que usa um estilo de ID

MapLocation locationTwo = new MapLocation( 4500100, -7499900, "Loc. 2", "Uses an ID style" );
locationTwo.setStyleId("ID_1");

Estas informações foram úteis? Gostaríamos de receber seus comentários.