0
ユーザーが地図をクリックするたびに地図にウェイポイントを追加したい。ユーザーがクリックするたびにウェイポイントを取得しましたが、以前のウェイポイントが消えてマップに表示されない問題は、現在のクリックによって描画されたワイプだけが表示されます。次はウェイポイントのコードです。ユーザーが地図をクリックするたびに地図(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メソッドでどのような変更を加えましたか? –