How to save geoposition location in java

707 views Asked by At

I am getting the coordinates from a map when a user clicks on the map. Now I want to save this and pass the coordinates to another class. If anyone knows the answer please guide.

Thanks

public class Corndinates extends MapClickListener{
    /**
     * Creates a mouse listener for the jxmapviewer which returns the
     * GeoPosition of the the point where the mouse was clicked.
     *
     * @param viewer the jxmapviewer
     */
    public Corndinates(JXMapViewer viewer) {
        super(viewer);
    }


    @Override
    public void mapClicked(GeoPosition location) {

        GeoPosition  cord = location;
        System.out.println(cord);

    }
}

I want to pass the cord to below class and to add the location to this line

//Initializing first and last position (program to get the coordinate from mouse click here)

    GeoPosition firstPoint = new GeoPosition(50.834722, 12.921389);

but i dont know how to put value in firstPoint object from cord.

public class MapPanel {

public static void main(String args) {
    System.out.println(args);

    JFrame frame = new JFrame("FrameWork");
    FrameWork frameWork = new FrameWork();
    frame.setContentPane(frameWork.mainPanel);

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

    // Use 8 threads in parallel to load the tiles
    //tileFactory.setThreadPoolSize(8);

    //Initializing first and last position (program to get the coordinate from mouse click here)
    GeoPosition firstPoint = new GeoPosition(50.834722, 12.921389);
    GeoPosition lastPoint = new GeoPosition(50.839167, 12.9275);

    // Create a track from the geo-positions
    List<GeoPosition> track = Arrays.asList(firstPoint,lastPoint);
    RoutePainter routePainter = new RoutePainter(track);

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

    //Set the focus
    frameWork.mapViewer.setZoom(7);
    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));

    // Create waypoints from the geo-positions
    Set<SwingWaypoint> waypoints = new HashSet<SwingWaypoint>(Arrays.asList(
            new SwingWaypoint("Zentrum", firstPoint),
            new SwingWaypoint("TU", lastPoint)));

    // Create a waypoint painter that takes all the waypoints
    WaypointPainter<Waypoint> waypointPainter = new WaypointPainter<Waypoint>();
    waypointPainter.setWaypoints(waypoints);

    // Create a compound painter that uses both the route-painter and the waypoint-painter
    List<org.jxmapviewer.painter.Painter<JXMapViewer>> painters = new ArrayList<org.jxmapviewer.painter.Painter<JXMapViewer>>();
    painters.add(routePainter);
    painters.add(waypointPainter);

    CompoundPainter<JXMapViewer> painter = new CompoundPainter<JXMapViewer>(painters);
    frameWork.mapViewer.setOverlayPainter(painter);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);


}

}

1

There are 1 answers

1
SurefireMooly On

By pass to another class I presume you want to avoid saving the information to a file. The following code will pass the code into your new class

@Override
public void mapClicked(GeoPosition location) {

    GeoPosition  cord = location;
    System.out.println(cord);
    NewClass c = new NewClass(cord);

}

public class NewClass {

    GeoPosition location = null;

    public NewClass(GeoPosition coord) { //constructor to hold location in class
        location = coord;
    }

    public doCalc {
        //etc
    }
}