2016-08-08 48 views
0

Ich möchte einen Wegpunkt auf der Karte hinzufügen, wenn der Benutzer auf die Karte klickt. Ich habe den Wegpunkt auf der Karte, wenn der Benutzer klickt, aber das Problem ist, dass der vorherige Wegpunkt verschwindet und nicht auf der Karte angezeigt wird, nur der Wapoint, der aufgrund des aktuellen Klicks gezeichnet wurde, wird angezeigt. Es folgt der Code für den Wegpunkt.Wie wird die Markierung (Wegpunkte) auf der Karte (OSM) hinzugefügt, wenn der Benutzer auf die Karte klickt?

public class MapPanel { 

public static void acc(GeoPosition loc){ 
    MapPanel.drawNew(loc); 
} 

public static void drawNew(GeoPosition location){ 

    GeoPosition fp = new GeoPosition(location.getLatitude(),location.getLongitude()); 
    List<GeoPosition> track = Arrays.asList(fp); 

//  Create waypoints from the geo-positions 
    Set<Waypoint> waypoints = new HashSet<Waypoint>(Arrays.asList(
      new DefaultWaypoint(fp))); 
//  Create a waypoint painter that takes all the waypoints 
    waypointPainter.setWaypoints(waypoints); 
//  Create a compound painter that uses both the route-painter and the waypoint-painter 
    List<org.jxmapviewer.painter.Painter<org.jxmapviewer.JXMapViewer>> painters = new ArrayList<org.jxmapviewer.painter.Painter<org.jxmapviewer.JXMapViewer>>(); 
    painters.add(waypointPainter); 
    CompoundPainter<org.jxmapviewer.JXMapViewer> painter = new CompoundPainter<org.jxmapviewer.JXMapViewer>(painters); 
    frameWork.mapViewer.setOverlayPainter(painter); 

} 
public static void main (String args) { 
    frame.setContentPane(frameWork.mainPanel); 

    // Create a TileFactoryInfo for OpenStreetMap 
    TileFactoryInfo info = new OSMTileFactoryInfo(); 
    DefaultTileFactory tileFactory = new DefaultTileFactory(info); 
    frameWork.mapViewer.setTileFactory(tileFactory); 

    // Set the Default Location 
    GeoPosition chemnitz = new GeoPosition(50.833333, 12.916667); 

    //Set the focus 
    frameWork.mapViewer.setZoom(1); 
    frameWork.mapViewer.setAddressLocation(chemnitz); 

    // Add interactions 
    MouseInputListener mia = new PanMouseInputListener(frameWork.mapViewer); 

    frameWork.mapViewer.addMouseListener(mia); 
    frameWork.mapViewer.addMouseMotionListener(mia); 
    frameWork.mapViewer.addMouseListener(new CenterMapListener(frameWork.mapViewer)); 
    frameWork.mapViewer.addMouseWheelListener(new ZoomMouseWheelListenerCenter(frameWork.mapViewer)); 
    frameWork.mapViewer.addKeyListener(new PanKeyListener(frameWork.mapViewer)); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    //frame.pack(); 
    frame.setSize(900, 600); 
    frame.setVisible(true); 


} 
} 

Antwort

0

ohne vollständigen Quellcode kann ich nur vermuten, dass das Problem entweder in 1- das Modell sein, könnten Sie die Wegpunkte speichern verwenden: Stellen Sie sicher, dass die neuen klickten Punkte werden das Modell hinzugefügt nicht durch die überschrieben zuletzt (überprüfen Sie die Größe der ausgewählten Wegpunkte) oder 2- die Ansicht, die Sie verwenden, ist für jedes Add-Ereignis vollständig neu gezeichnet; verursacht den Verlust aller vorletzten gemalten Elemente.

+0

Ich habe den Code bearbeiten können Sie es jetzt bitte überprüfen –

+0

Sorry Jamil aber der Code ist unvollständig versuchen Sie die Überprüfungen, die ich Ihnen gesagt habe, stellen Sie sicher, die angeklickte Orte sind alle im Modell gespeichert (um dies zu überprüfen, können Sie was analysieren wird getan, wenn Sie auf die Karte klicken, was sind Objekte, die benachrichtigt werden) – whyn0t

+0

Ich kann verstehen, aber ich bin an diesem Punkt fest drawNew Methode zeichnen Sie die Wegpunkte auf der Karte, aber ich habe nicht den Punkt, warum es nicht zeigt vorherige Wegpunkte auf der Karte . Welche Art von Änderung muss ich in der Methode drawNew vornehmen, damit die vorherigen Wegpunkte angezeigt werden können. –