Я хочу добавить путевую точку на карту при каждом нажатии на карту. Я получал путевую точку на карте всякий раз, когда пользователь нажимал, но проблема в том, что предыдущая путевая точка исчезает и не отображается на карте, показывается только wapoint, набранный из-за текущего щелчка. Ниже приведен код для путевой точки.Как добавить маркер (путевые точки) на карту (OSM) всякий раз, когда пользователь нажимает на карту?
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);
}
}
Я отредактировал код, вы можете его перепроверить –
извините Джамиль, но код неполный, попробуйте сделать проверки, которые я вам сказал, убедитесь, что все выбранные местоположения сохранены в модели (чтобы проверить это, вы можете проанализировать, что выполняется, когда вы нажимаете на карту, какие объекты уведомляются) – whyn0t
Я могу понять, но я застрял в этой точке drawNew метод нарисовал путевые точки на карте, но я не понял, почему он не показывает предыдущие путевые точки на карте , Какую модификацию я должен сделать в методе drawNew, чтобы она могла показывать предыдущие путевые точки. –