Markieren und Festlegen der Sichtbarkeit von Standorten auf einer Karte

Die folgenden Schritte beschreiben, wie abbildbaren Elementen Markierungen zugewiesen werden, die in einer MapDataModel-Klasse gespeichert sind. Die Sichtbarkeit wird für die Anzeige von Standorten mit dem Tag „Arbeit“ festgelegt. Die resultierende Karte in der Anwendung ist in der folgenden Grafik dargestellt:

  1. Importieren Sie die erforderlichen Klassen und Schnittstellen.
    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. Erstellen Sie das Anwendungsframework durch Erweitern der UiApplication-Klasse. Erstellen Sie in main() eine Instanz der neuen Klasse, und rufen Sie enterEventDispatcher() auf, um der Anwendung das Empfangen von Ereignissen zu ermöglichen. Rufen Sie im Anwendungskonstruktor pushScreen() auf, um den benutzerdefinierten Bildschirm für die Anwendung anzuzeigen. Die in Schritt 3 beschriebene MapTagScreen stellt den benutzerdefinierten Bildschirm dar.
    public class MapTaggingDemo extends UiApplication
    {
        public static void main(String[] args)
        {
            MapTaggingDemo theApp = new MapTaggingDemo();
            theApp.enterEventDispatcher();
        }
        public MapTaggingDemo()
        {
            pushScreen(new MapTagScreen());
        }
    }
  3. Erstellen Sie das Framework für den benutzerdefinierten Bildschirm durch Erweitern der FullScreen-Klasse. Rufen Sie im Konstruktor super() auf, um ein Standardmenü zu erstellen.
    class MapTagScreen extends FullScreen
    {
        public MapTagScreen() 
        {
            super(FullScreen.DEFAULT_CLOSE | FullScreen.DEFAULT_MENU | 
                    FullScreen.VERTICAL_SCROLL | FullScreen.VERTICAL_SCROLLBAR);
  4. Rufen Sie im Bildschirmkonstruktor MapFactory.getInstance() auf, um eine Instanz der MapFactory-Klasse zu erstellen, und rufen Sie anschließend generateRichMapField() auf, um das Kartenfeld zu generieren. Rufen Sie add() auf, um die RichMapField-Instanz zum Bildschirm hinzuzufügen.
    RichMapField map = MapFactory.getInstance().generateRichMapField();
    add(map);
  5. Rufen Sie getModel() auf, um eine Instanz der MapDataModel-Klasse zu erstellen.
    MapDataModel data = map.getModel();
  6. Erstellen Sie Instanzen der MapLocation-Klasse, um die Standorte zu definieren. Übergeben Sie Breite, Länge, Bezeichnung und Beschreibung für jeden Standort an die MapLocation-Objekte.
    MapLocation julieHome = new MapLocation( 43.47751, -80.54817, 
            "Julie - Home", null );
    MapLocation headOffice = new MapLocation( 43.47550, -80.53900, 
            "Head Office", null );
  7. Erstellen Sie einen Ganzzahlbezeichner, um ein auf der Karte anzeigbares Element darzustellen. Weisen Sie dem Bezeichner das abbildbare Element durch Aufrufen von add() zu, um einen Standort hinzuzufügen, und übergeben Sie eines der MapLocation-Objekte und eine Markierung für den Standort an MapDataModel. Sie können den Bezeichner verwenden, um auf das Element in MapDataModel zuzugreifen, und einem abbildbaren Element eine weitere Markierung durch Aufrufen von tag() zuzuweisen und den Bezeichner und die Markierung als Argumente zu übergeben. Im folgenden Codebeispiel werden zwei Orte zu MapDataModel hinzugefügt und jedem Ort sind zwei Markierungen zugewiesen.
    int julieHomeId = data.add( (Mappable) julieHome, "julie" );
    data.tag( julieHomeId, "home" );
    int headOfficeId = data.add( (Mappable) headOffice, "julie" );
    data.tag( headOfficeId, "work" );
  8. Definieren Sie zwei weitere Orte, und rufen Sie add() auf, um diese Orte zu MapDataModel hinzuzufügen. Rufen Sie tag() auf, um den Orten die entsprechenden Markierungen zuzuweisen.
    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. Aktivieren Sie die Sichtbarkeit für die Standorte, die mit dem Tag „Arbeit“ markiert sind. Standardmäßig sind alle Standorte auf der Karte sichtbar. Rufen Sie setVisibleNone() auf, um die Sichtbarkeit für alle Orte auszuschalten. Rufen Sie setVisible() auf, und übergeben Sie die Markierung „Arbeit“ als Argument, um festzulegen, dass nur die Orte mit der Markierung "Arbeit" auf der Karte sichtbar sind.
    data.setVisibleNone();
    data.setVisible( "work" );
  10. Rufen Sie getMapField().update() auf, um die Kartenansicht zu aktualisieren. Übergeben Sie den Wert der booleschen Operatoren true an die update-Methode, um die Mitte und den Vergrößerungsfaktor der Karte mit den sichtbaren Orten auf der Karte neu zu berechnen.
    map.getMapField().update(true);

Waren diese Informationen hilfreich? Senden Sie uns Ihren Kommentar.