gpt4 book ai didi

java - jxmapkit 点击事件返回不正确的经纬度

转载 作者:行者123 更新时间:2023-11-29 06:13:44 25 4
gpt4 key购买 nike

我正在使用 JXmapkit 以在框架中显示带有 openstreetmaps 路径点的 map ,其中路径点的坐标存储在数据库中。单击某个位置时,应用程序将检查该区域的坐标是否在航路点周围的区域内,如果为真,则内部框架将打开。问题是点击位置的坐标总是返回不正确的示例,正​​确的坐标 (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);
}
});
}

最佳答案

jXMapKit1.getMainMap().convertPointToGeoPosition(pixelcoord1)

关于java - jxmapkit 点击事件返回不正确的经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5870618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com