Personalizzazione dell'aspetto degli oggetti su una mappa

Il pacchetto net.rim.device.api.lbs.maps.view contiene le classi Style e StyleSet, che consentono di personalizzare l'aspetto di qualunque oggetto mappabile visualizzato su una mappa. Utilizzando gli stili, è possibile personalizzare le mappe attribuendo loro un aspetto uniforme, in maniera analoga all'applicazione degli stili CSS.

La classe Style fornisce le proprietà riportate di seguito che definiscono le caratteristiche visive degli oggetti mappabili.

  • Bordo: specifica le proprietà del bordo circostante un oggetto mappabile (il colore, l'opacità e la dimensione)
  • Riempimento: specifica le proprietà dell'area interna di un oggetto mappabile (il colore e l'opacità)
  • Etichetta: specifica le proprietà dell'etichetta di un oggetto mappabile (il colore e l'opacità del riempimento e l'allineamento, il colore, il nome della famiglia, l'opacità, la dimensione e lo stile del carattere)

La classe Style contiene anche le costanti per la dimensione del bordo e l'allineamento del testo (ad esempio, EDGE_SIZE_LARGE e FONT_ALIGNMENT_RIGHT). È possibile trovare le costanti relative al carattere e al colore nelle classi Font e Color, rispettivamente. L'opacità è rappresentata da un numero intero compreso tra 0 e 255, dove 0 indica trasparente e 255 opaco.

La classe StyleSet rappresenta una serie di singoli stili utilizzati da una mappa per eseguire il rendering degli oggetti mappabili sullo schermo. Le mappe presentano una serie di stili predefinita che è possibile recuperare e sovrascrivere con stili personalizzati.

Un oggetto StyleSet può includere tre tipi di stili diversi: uno stile di base, uno stile di classe e uno stile ID. Lo stile di base definisce uno stile per tutti gli oggetti mappabili. Lo stile di classe definisce uno stile per tutti gli oggetti mappabili di una particolare classe. Lo stile ID definisce uno stile per tutti gli oggetti mappabili di un particolare ID. Per assegnare un ID a un oggetto mappabile, è necessario richiamare AbstractMappable.setStyleId() sull'oggetto.

È possibile creare anche particolari stili che ereditano le proprietà dagli stili principali (ad esempio, uno stile ID può ereditare le proprietà da uno stile di classe o di base). Per ereditare una proprietà da uno stile principale, è possibile specificare una delle costanti INHERIT (ad esempio, COLOR_INHERIT o EDGE_SIZE_INHERIT ).

Creazione di una mappa

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

Recupero della serie di stili per la mappa

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

Definizione e applicazione degli stili a una serie di stili

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

Creazione di un oggetto mappabile che utilizza uno stile ID

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

Le informazioni sono state utili? Inviateci i vostri commenti.