jxmapkit单击事件返回不正确的纬度长

问题描述:

我正在使用JXmapkit为了显示一个地图,其中路标的坐标存储在数据库中的框架中的方式点openstreetmaps。点击某个位置后,应用程序将检查该区域的坐标是否位于航点周围的区域内,如果该位置正确,则会打开一个内部框架。问题是单击位置的坐标总是返回不正确的示例,正​​确的坐标(35.9097,14.4259)返回为(85.05012,-179.96198)。我试图增加差异,但它不起作用,因为我无法确定坐标之间的确切区别,因为每次单击相同的位置时,坐标总是不一样。我错过了什么,或者我做错了什么?jxmapkit单击事件返回不正确的纬度长

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); 
     } 
    }); 
}  
+0

可能是重复的。http://*.com/questions/5850062/jxmapkit-pixeltogeo-not-working – kleopatra 2011-05-03 15:26:17

jXMapKit1.getMainMap()convertPointToGeoPosition(pixelcoord1)