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);
}
}
Ich habe den Code bearbeiten können Sie es jetzt bitte überprüfen –
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
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. –