Я использую 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);
}
});
}