Étiqueter et définir la visibilité des positions sur une carte

Les étapes suivantes décrivent comment attribuer des tags aux éléments mappables qui sont stockés dans une classe MapDataModel. La visibilité est définie de sorte à afficher les positions indiquées comme étant à caractère « professionnel ». La carte ainsi obtenue à partir de l'application est représentée dans l'image suivante :

  1. Importez les classes et les interfaces requises.
    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. Créez le cadre d'application en développant la classe UiApplication. Dans main(), créez une instance de la nouvelle classe et appelez enterEventDispatcher() pour activer l'application et recevoir des événements. Dans le constructeur d'application, appelez pushScreen() pour afficher l'écran personnalisé de l'application. La classe MapTagScreen, décrite à l'étape 3, représente l'écran personnalisé.
    public class MapTaggingDemo extends UiApplication
    {
        public static void main(String[] args)
        {
            MapTaggingDemo theApp = new MapTaggingDemo();
            theApp.enterEventDispatcher();
        }
        public MapTaggingDemo()
        {
            pushScreen(new MapTagScreen());
        }
    }
  3. Créez le cadre de l'écran personnalisé en développant la classe FullScreen. Dans le constructeur, appelez super() pour créer un menu par défaut.
    class MapTagScreen extends FullScreen
    {
        public MapTagScreen() 
        {
            super(FullScreen.DEFAULT_CLOSE | FullScreen.DEFAULT_MENU | 
                    FullScreen.VERTICAL_SCROLL | FullScreen.VERTICAL_SCROLLBAR);
  4. Dans le constructeur d'écran, appelez MapFactory.getInstance() pour créer une instance de la classe MapFactory, puis appelez generateRichMapField() pour générer le champ de carte. Appelez add() pour ajouter l'instance RichMapField à l'écran.
    RichMapField map = MapFactory.getInstance().generateRichMapField();
    add(map);
  5. Appelez getModel() pour créer une instance de la classe MapDataModel.
    MapDataModel data = map.getModel();
  6. Créez des instances de la classe MapLocation pour définir les positions. Transmettez la latitude, la longitude, l'étiquette, et la description de chaque position aux objets MapLocation.
    MapLocation julieHome = new MapLocation( 43.47751, -80.54817, 
            "Julie - Home", null );
    MapLocation headOffice = new MapLocation( 43.47550, -80.53900, 
            "Head Office", null );
  7. Créez un identifiant de nombre entier pour représenter un élément mappable. Attribuez l'élément mappable à l'identifiant en appelant add() pour ajouter une position et transmettre l'un des objets MapLocation et une balise de position à MapDataModel. Vous pouvez utiliser l'identifiant pour accéder à l'élément dans MapDataModel et attribuer une autre balise à un élément mappable en appelant tag() et en transmettant l'identifiant et la balise comme arguments. Dans l'échantillon de code suivant, deux positions sont ajoutées à MapDataModel et deux balises sont attribuées à chaque position.
    int julieHomeId = data.add( (Mappable) julieHome, "julie" );
    data.tag( julieHomeId, "home" );
    int headOfficeId = data.add( (Mappable) headOffice, "julie" );
    data.tag( headOfficeId, "work" );
  8. Définissez deux autres positions et appelez add() pour ajouter les positions à MapDataModel. Appelez tag() pour attribuer les balises appropriées aux positions.
    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. Activez la visibilité des positions portant la balise « professionnel ». Par défaut, toutes les positions sont visibles sur la carte. Appelez setVisibleNone() pour désactiver la visibilité de toutes les positions. Appelez setVisible() et transmettez la balise « professionnel » comme argument pour spécifier qu'uniquement les positions avec la balise « professionnel » sont visibles sur la carte.
    data.setVisibleNone();
    data.setVisible( "work" );
  10. Appelez getMapField().update() pour mettre à jour la vue de la carte. Transmettez la valeur booléenne true (vrai) à la méthode update pour recalculer le centre et le niveau de zoom de la carte avec les positions visibles sur la carte.
    map.getMapField().update(true);

Ces informations vous ont-elles été utiles ? Envoyez-nous vos commentaires.