Applicazione di tag e impostazione della visibilità delle posizioni su una mappa

I seguenti passaggi descrivono come assegnare tag agli elementi che possono essere mappati e che sono memorizzati in una classe MapDataModel. La visibilità viene impostata per visualizzare le posizioni che hanno il tag "work". La mappa risultante dall'applicazione viene mostrata nella seguente immagine:

  1. Importare le classi e le interfacce richieste.
    import net.rim.device.api.lbs.maps.*;
    import net.rim.device.api.lbs.maps.model.*;
    import net.rim.device.api.lbs.maps.ui.*;
    import net.rim.device.api.ui.*;
    import net.rim.device.api.ui.container.*;
  2. Creare il framework dell'applicazione estendendo la classe UiApplication. In main(), creare un'istanza della nuova classe e richiamare enterEventDispatcher() per abilitare l'applicazione a ricevere gli eventi. Nel costruttore dell'applicazione, richiamare pushScreen() per visualizzare la schermata personalizzata per l'applicazione. L'elemento MapTagScreen, descritto nel passaggio 3, rappresenta la schermata personalizzata.
    public class MapTaggingDemo extends UiApplication
    {
        public static void main(String[] args)
        {
            MapTaggingDemo theApp = new MapTaggingDemo();
            theApp.enterEventDispatcher();
        }
        public MapTaggingDemo()
        {
            pushScreen(new MapTagScreen());
        }
    }
  3. Creare il framework della schermata personalizzata estendendo la classe FullScreen. Nel costruttore, richiamare super() per creare un menu predefinito.
    class MapTagScreen extends FullScreen
    {
        public MapTagScreen() 
        {
            super(FullScreen.DEFAULT_CLOSE | FullScreen.DEFAULT_MENU | 
                    FullScreen.VERTICAL_SCROLL | FullScreen.VERTICAL_SCROLLBAR);
  4. Nel costruttore della schermata, richiamare MapFactory.getInstance() per creare un'istanza della classe MapFactory, quindi richiamare generateRichMapField() per generare il campo della mappa. Richiamare add() per aggiungere l'istanza RichMapField alla schermata.
    RichMapField map = MapFactory.getInstance().generateRichMapField();
    add(map);
  5. Richiamare getModel() per creare un'istanza della classe MapDataModel.
    MapDataModel data = map.getModel();
  6. Creare istanze della classe MapLocation per definire le posizioni. Passare la latitudine, la longitudine, l'etichetta e la descrizione di ciascuna posizione agli oggetti MapLocation.
    MapLocation julieHome = new MapLocation( 43.47751, -80.54817, 
            "Julie - Home", null );
    MapLocation headOffice = new MapLocation( 43.47550, -80.53900, 
            "Head Office", null );
  7. Creare un identificativo di tipo numero intero per rappresentare un elemento che può essere mappato. Assegnare l'identificativo all'elemento mappabile richiamando add() per aggiungere una posizione e passare a MapDataModel uno degli oggetti MapLocation e un tag per la posizione. È possibile utilizzare l'identificativo per accedere all'elemento in MapDataModel e assegnare un altro tag a un elemento mappabile, richiamando tag() e passando come argomenti l'identificativo e il tag. Nel seguente esempio di codice, due posizioni vengono aggiunte a MapDataModel e a ogni posizione vengono assegnati due tag.
    int julieHomeId = data.add( (Mappable) julieHome, "julie" );
    data.tag( julieHomeId, "home" );
    int headOfficeId = data.add( (Mappable) headOffice, "julie" );
    data.tag( headOfficeId, "work" );
  8. Definire altre due posizioni e richiamare add() per aggiungere le posizioni a MapDataModel. Richiamare tag() per assegnare i tag appropriati alle posizioni.
    MapLocation paulHome = new MapLocation( 43.49487, -80.55335, 
            "Paul - Home", null );
    int paulHomeId = data.add( (Mappable) paulHome, "paul" );
    data.tag( paulHomeId, "home" );
    data.tag( headOfficeId, "paul" );
    data.tag( paulHomeId, "sarah" );
    MapLocation manufacturing = new MapLocation( 43.46514, -80.50506, 
            "Manufacturing", null );
    int manufacturingId = data.add( (Mappable) manufacturing, "sarah" );
    data.tag( manufacturingId, "work" );
  9. Attivare la visibilità delle posizioni che hanno il tag "work". Per impostazione predefinita, tutte le posizioni sono visibili sulla mappa. Richiamare setVisibleNone() per disattivare la visibilità di tutte le posizioni. Richiamare setVisible() e passare il tag "work" come argomento per specificare che solo le posizioni con il tag "work" devono essere visibili sulla mappa.
    data.setVisibleNone();
    data.setVisible( "work" );
  10. Richiamare getMapField().update() per aggiornare la visualizzazione della mappa. Passare il valore booleano true al metodo update per ricalcolare le coordinate del centro e il livello di zoom della mappa con le posizioni visibili sulla mappa.
    map.getMapField().update(true);

Le informazioni sono state utili? Inviateci i vostri commenti.