2016-08-08 4 views
0

Я хочу добавить путевую точку на карту при каждом нажатии на карту. Я получал путевую точку на карте всякий раз, когда пользователь нажимал, но проблема в том, что предыдущая путевая точка исчезает и не отображается на карте, показывается только 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); 


} 
} 

ответ

0

без полного исходного кода я могу только предположить, что проблема может быть в 1- модель вы используете для хранения WAYPOINTS: убедитесь, что новые Clicked точка добавляется в модели не перезаписывается на последний (проверьте размер выбранных WayPoints) или 2- вид, который вы используете, полностью перекрашен для каждого события добавления; вызывая потерю всех перед последними окрашенными элементами.

+0

Я отредактировал код, вы можете его перепроверить –

+0

извините Джамиль, но код неполный, попробуйте сделать проверки, которые я вам сказал, убедитесь, что все выбранные местоположения сохранены в модели (чтобы проверить это, вы можете проанализировать, что выполняется, когда вы нажимаете на карту, какие объекты уведомляются) – whyn0t

+0

Я могу понять, но я застрял в этой точке drawNew метод нарисовал путевые точки на карте, но я не понял, почему он не показывает предыдущие путевые точки на карте , Какую модификацию я должен сделать в методе drawNew, чтобы она могла показывать предыдущие путевые точки. –