Swing Waypoints in JXMapKit löschen

hirsra

Aktives Mitglied
Hallo.

Ich stelle mit JXMapKit eine Karte dar. Per Default wird London in den Mittelpunkt der Karte gestellt und dort ein Wegpunkt(Waypoint) gezeichnet. Das funktioniert soweit. Nun versuche ich den Wegpunkt zu löschen. Das funktioniert leider nicht. Anbei meine Map-Klasse welche die Darstellung der Karte in einem Panel regelt. (Dieses Panel kann dann ganz normal in Swing benutzt werden.

Java:
import java.awt.BorderLayout;
import java.awt.Component;
import java.util.Set;

import javax.swing.JPanel;

import org.jdesktop.swingx.JXMapKit;
import org.jdesktop.swingx.JXMapKit.DefaultProviders;
import org.jdesktop.swingx.mapviewer.Waypoint;
import org.jdesktop.swingx.mapviewer.WaypointPainter;
import org.jdesktop.swingx.painter.CompoundPainter;
import org.jdesktop.swingx.painter.Painter;

/** A panel containing a JXMapKit component. */
public class Map extends JPanel {    private final JXMapKit map;

    /**
     * Create the panel.
     */
    public Map() {

        super();

        this.map = new JXMapKit();

        this.map.setDefaultProvider(DefaultProviders.OpenStreetMaps);

        final Set<Waypoint> s = this.getWaypointPainter().getWaypoints();

        // Löschen der Waypunkts funktioniert nicht.
        System.out.println(s.size());
        s.clear();
        System.out.println(s.size());    // in s gelöscht
        System.out.println(this.getWaypointPainter().getWaypoints().size());   // aber nicht hier

        this.setLayout(new BorderLayout(0, 0));
        this.add(this.map, BorderLayout.CENTER);
    }

    /**
     * @return the component JXMapKit
     */
    public JXMapKit getJXMapKit() {
        final Component[] components = this.getComponents();
        JXMapKit result = null;

        for (final Component component : components) {
            if (component instanceof JXMapKit) {
                if (result != null) {
                    throw new RuntimeException("more than one JXMapKit found"); //$NON-NLS-1$
                }
                result = (JXMapKit) component;
            }
        }

        return result;
    }

    public WaypointPainter getWaypointPainter() {
        WaypointPainter    result = null;

        if (this.map.getMainMap().getOverlayPainter() instanceof CompoundPainter) {
            final CompoundPainter painter    = (CompoundPainter) this.map.getMainMap().getOverlayPainter();

            for (final Painter tmp : painter.getPainters()) {
                if (tmp instanceof WaypointPainter) {
                    result = (WaypointPainter) tmp;
                    break;
                }
            }
        }

        return result;
    }

}

Hier die Ausgabe:
1
0
1

Kann das jemand erklären, bzw. zeigen/erklären wie ich die Wegpunktliste manipulieren kann?


Vielen Dank
hirsra
 
Das Problem ist dass der ermittelte WaypointPainter anonym ist und den einzigen Wegpunkt der sogenannten WaypointLocation beinhaltet. Bei Ermitteln der Wegpunkte wird eine temporäres Set erstellt dass dann manipuliert wird.
 

Zurück
Oben