Событие клика jxmapkit, возвращающее неверный лат длинный - PullRequest
1 голос
/ 03 мая 2011

Я использую JXmapkit для отображения карты с путевыми точками openstreetmaps в кадре, где координаты путевой точки хранятся в базе данных. Если щелкнуть местоположение, приложение проверит, находятся ли координаты области внутри области вокруг путевой точки, если значение true, чем откроется внутренняя рамка. Проблема в том, что координаты выбранного местоположения всегда возвращаются в неправильном примере, правильные координаты (35.9097,14.4259) возвращаются как (85.05012, -179.96198). Я попытался добавить разницу, но она не работает, так как я не могу определить точную разницу между координатами, поскольку каждый раз, когда я щелкаю одно и то же место, координаты всегда различаются. Я что-то упустил или я делаю что-то не так?

public static  ArrayList<StopBS> GetBusStopByCoordinates(float x, float y, float radius)
{
    Connection connection = null;
    Statement statement = null;
    ResultSet resultSet = null;
    try
    {
        ArrayList<StopBS> stops = new ArrayList<StopBS>();
        Class.forName("org.sqlite.JDBC");
        connection = DriverManager.getConnection(ConnectionString);
        statement = connection.createStatement(); 
       // Added value
       // x -= 49.1401725;
       // y += 194.4150295;
        float x1 = x - radius;
        float x2 = x + radius;
        float y1 = y - radius;
        float y2 = y + radius;
        String command = "SELECT StopID, StopNumber, Tag, Latitude, Longitude FROM StopTable  WHERE (Latitude BETWEEN %f AND %f) AND (Longitude BETWEEN %f AND %f)" ;
        command = String.format(command, x1,x2,y1,y2);
        resultSet = statement.executeQuery(command);
        while (resultSet.next())
        {
            StopBS newStop = new StopBS();
            newStop.StopID = resultSet.getInt("StopID");
            newStop.StopNumber = resultSet.getInt("StopNumber");
            newStop.Tag = resultSet.getString("Tag");
            newStop.Lat = resultSet.getFloat("Latitude");
            newStop.Long = resultSet.getFloat("Longitude");
            stops.add(newStop);
        }
        return stops;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return null;
    }
    finally
    {
        try
        {
            resultSet.close();
            statement.close();
            connection.close();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}
mainMap.getMainMap().addMouseListener(new MouseInputAdapter()
{      
        public void mouseClicked(MouseEvent e)
        {
           //Get mouse click position in screen values
            Point point = e.getPoint();
            //get map component
            JXMapViewer map = mainMap.getMainMap();
            //calculate x, y for map as the point is relative to the whole screen
           Rectangle bounds = getBounds();
            int x = (int)(point.getX() - bounds.getX());
            int y = (int)(point.getY() - bounds.getY());

            //Get the lat and long from the x and y mouse position
            Point2D pixelcoord1 = point;

           GeoPosition mappos =   map.getTileFactory().pixelToGeo(pixelcoord1, map.getZoom());
            Point2D QALLA =  map.getTileFactory().geoToPixel(mappos, map.getZoom());

           //check in database for busstops in that area 0.0015F
          ArrayList<StopBS> stops =  DataAccess.GetBusStopByCoordinates((float)mappos.getLatitude(),(float)mappos.getLongitude(), 0.0015F);
        }
    });
}    

1 Ответ

3 голосов
/ 22 июля 2011

jXMapKit1.getMainMap (). ConvertPointToGeoPosition (pixelcoord1)

...