Personalizar la apariencia de los objetos en un mapa

El paquete net.rim.device.api.lbs.maps.view contiene las clases Style y StyleSet, que puede utilizar para personalizar la apariencia de cualquier objeto asignable que se muestre en un mapa. Mediante los estilos, puede personalizar sus mapas y darles una apariencia uniforme de manera análoga a la aplicación de estilos CSS.

La clase Style proporciona las siguientes propiedades que definen las características visuales de los objetos asignables.

  • Margen: especifica las propiedades del margen que rodea a un objeto asignable (color, opacidad y tamaño)
  • Relleno: especifica las propiedades del área interna de un objeto asignable (color y opacidad)
  • Etiqueta: especifica las propiedades de la etiqueta de un objeto asignable (color y opacidad del relleno, y alineación, color, nombre de familia, opacidad, tamaño y estilo de la fuente)

La clase Style también contiene constantes para el tamaño del margen y la alineación del texto (por ejemplo, EDGE_SIZE_LARGE y FONT_ALIGNMENT_RIGHT). Puede encontrar constantes relacionadas con la fuente y el color en las clases Font y Color, respectivamente. La opacidad está representada por un valor entero entre 0 y 255, donde 0 es transparente y 255 es opaco.

La clase StyleSet representa un conjunto de estilos individuales que un mapa utiliza para representar objetos asignables en una pantalla. Los mapas tienen un conjunto de estilos predeterminado que puede recuperar y anular con sus propios estilos.

Un objeto StyleSet puede incluir tres tipos diferentes de estilos, un estilo de base, un estilo de clase y un estilo de ID. El estilo de base define un estilo para todos los objetos asignables. El estilo de clase define un estilo para todos los objetos asignables de una clase concreta. El estilo de ID define un estilo para todos los objetos asignables de un ID concreto. Para asignar un ID a un objeto asignable, debe invocar AbstractMappable.setStyleId() en el objeto.

Asimismo, puede crear estilos que hereden las propiedades de los estilos padre (por ejemplo, un estilo de ID puede heredar de un estilo de clase o de base). Para heredar una propiedad de un estilo padre, puede especificar una de las constantes de INHERIT (por ejemplo, COLOR_INHERIT o EDGE_SIZE_INHERIT).

Crear un mapa

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

Recuperar el conjunto de estilos del mapa

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

Definir estilos y aplicarlos a un conjunto de estilos

// 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);

Crear un objeto asignable que utilice un estilo de ID

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

¿Le ha resultado útil esta información? Envíenos sus comentarios.