Changeset 1108 in josm for trunk/src/org
- Timestamp:
- 2008-12-07T20:38:10+01:00 (16 years ago)
- Location:
- trunk/src/org/openstreetmap/josm
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/data/coor/LatLon.java
r655 r1108 2 2 package org.openstreetmap.josm.data.coor; 3 3 4 5 import static org.openstreetmap.josm.tools.I18n.tr; 6 4 7 import org.openstreetmap.josm.data.Bounds; 5 8 import org.openstreetmap.josm.data.projection.Projection; 9 10 import java.text.DecimalFormat; 6 11 import java.text.NumberFormat; 7 12 … … 15 20 public class LatLon extends Coordinate { 16 21 17 public LatLon(double lat, double lon) { 18 super(lon, lat); 19 } 22 private static DecimalFormat cDmsMinuteFormatter = new DecimalFormat("00"); 23 private static DecimalFormat cDmsSecondFormatter = new DecimalFormat("00.0"); 24 private static DecimalFormat cDdFormatter = new DecimalFormat("###0.0000"); 25 26 /** 27 * Possible ways to display coordinates 28 */ 29 public enum CoordinateFormat { 30 DECIMAL_DEGREES {public String toString() {return tr("Decimal Degrees");}}, 31 DEGREES_MINUTES_SECONDS {public String toString() {return tr("Degrees Minutes Seconds");}}; 32 } 33 34 public static String dms(double pCoordinate) { 20 35 21 public double lat() { 22 return y; 23 } 36 double tAbsCoord = Math.abs(pCoordinate); 37 int tDegree = (int) tAbsCoord; 38 double tTmpMinutes = (tAbsCoord - tDegree) * 60; 39 int tMinutes = (int) tTmpMinutes; 40 double tSeconds = (tTmpMinutes - tMinutes) * 60; 24 41 25 public double lon() { 26 return x;27 } 42 return tDegree + "\u00B0" + cDmsMinuteFormatter.format(tMinutes) + "\'" 43 + cDmsSecondFormatter.format(tSeconds) + "\""; 44 } 28 45 29 /** 30 * @return <code>true</code> if the other point has almost the same lat/lon 31 * values, only differing by no more than 32 * 1 / {@link org.openstreetmap.josm.data.projection.Projection#MAX_SERVER_PRECISION MAX_SERVER_PRECISION}. 33 */ 34 public boolean equalsEpsilon(LatLon other) { 35 final double p = 1/Projection.MAX_SERVER_PRECISION; 36 return Math.abs(lat()-other.lat()) <= p && Math.abs(lon()-other.lon()) <= p; 37 } 46 public LatLon(double lat, double lon) { 47 super(lon, lat); 48 } 38 49 39 /** 40 * @return <code>true</code>, if the coordinate is outside the world, compared 50 public double lat() { 51 return y; 52 } 53 54 public String latToString(CoordinateFormat d) { 55 switch(d) { 56 case DECIMAL_DEGREES: return cDdFormatter.format(y); 57 case DEGREES_MINUTES_SECONDS: return dms(y) + ((y < 0) ? tr("S") : tr("N")); 58 default: return "ERR"; 59 } 60 } 61 62 public double lon() { 63 return x; 64 } 65 66 public String lonToString(CoordinateFormat d) { 67 switch(d) { 68 case DECIMAL_DEGREES: return cDdFormatter.format(x); 69 case DEGREES_MINUTES_SECONDS: return dms(x) + ((x < 0) ? tr("W") : tr("E")); 70 default: return "ERR"; 71 } 72 } 73 74 75 76 /** 77 * @return <code>true</code> if the other point has almost the same lat/lon 78 * values, only differing by no more than 79 * 1 / {@link org.openstreetmap.josm.data.projection.Projection#MAX_SERVER_PRECISION MAX_SERVER_PRECISION}. 80 */ 81 public boolean equalsEpsilon(LatLon other) { 82 final double p = 1/Projection.MAX_SERVER_PRECISION; 83 return Math.abs(lat()-other.lat()) <= p && Math.abs(lon()-other.lon()) <= p; 84 } 85 86 /** 87 * @return <code>true</code>, if the coordinate is outside the world, compared 41 88 * by using lat/lon. 42 89 */ -
trunk/src/org/openstreetmap/josm/data/osm/Node.java
r999 r1108 9 9 import org.openstreetmap.josm.data.coor.LatLon; 10 10 import org.openstreetmap.josm.data.coor.EastNorth; 11 import org.openstreetmap.josm.data.coor.LatLon.CoordinateFormat; 11 12 import org.openstreetmap.josm.data.osm.visitor.Visitor; 12 13 … … 21 22 public LatLon coor; 22 23 public volatile EastNorth eastNorth; 24 25 private static CoordinateFormat mCord; 26 27 static { 28 try { 29 mCord = LatLon.CoordinateFormat.valueOf(Main.pref.get("coordinates")); 30 } catch (IllegalArgumentException iae) { 31 mCord =LatLon.CoordinateFormat.DECIMAL_DEGREES; 32 } 33 } 23 34 24 35 /** … … 78 89 name = tr("incomplete"); 79 90 } else { 80 NumberFormat latLonFormat = new DecimalFormat("###0.0000000");81 82 91 name = get("name"); 83 92 if (name == null) 84 93 name = id == 0 ? "" : ""+id; 85 name += " (" +latLonFormat.format(coor.lat())+", "+latLonFormat.format(coor.lon())+")";94 name += " (" + coor.latToString(mCord) + ", " + coor.lonToString(mCord) + ")"; 86 95 } 87 96 return name; -
trunk/src/org/openstreetmap/josm/gui/MapStatus.java
r999 r1108 89 89 } 90 90 91 DecimalFormat latlon = new DecimalFormat("###0.0000"); 92 ImageLabel lonText = new ImageLabel("lon", tr("The geographic longitude at the mouse pointer."), 8); 91 LatLon.CoordinateFormat mCord; 92 93 ImageLabel lonText = new ImageLabel("lon", tr("The geographic longitude at the mouse pointer."), 11); 93 94 ImageLabel nameText = new ImageLabel("name", tr("The name of the object at the mouse pointer."), 20); 94 95 JTextField helpText = new JTextField(); 95 ImageLabel latText = new ImageLabel("lat", tr("The geographic latitude at the mouse pointer."), 7);96 ImageLabel latText = new ImageLabel("lat", tr("The geographic latitude at the mouse pointer."), 10); 96 97 ImageLabel angleText = new ImageLabel("angle", tr("The angle between the previous and the current way segment."), 6); 97 98 ImageLabel headingText = new ImageLabel("heading", tr("The (compass) heading of the line segment being drawn."), 6); … … 254 255 public MapStatus(final MapFrame mapFrame) { 255 256 this.mv = mapFrame.mapView; 256 257 258 try { 259 mCord = LatLon.CoordinateFormat.valueOf(Main.pref.get("coordinates")); 260 } catch (IllegalArgumentException iae) { 261 mCord =LatLon.CoordinateFormat.DECIMAL_DEGREES; 262 } 257 263 // Listen for mouse movements and set the position text field 258 264 mv.addMouseMotionListener(new MouseMotionListener(){ … … 263 269 if (mv.center == null) 264 270 return; 265 // Do not update the view ,if ctrl is pressed.271 // Do not update the view if ctrl is pressed. 266 272 if ((e.getModifiersEx() & MouseEvent.CTRL_DOWN_MASK) == 0) { 267 273 LatLon p = mv.getLatLon(e.getX(),e.getY()); 268 latText.setText( latlon.format(p.lat()));269 lonText.setText( latlon.format(p.lon()));274 latText.setText(p.latToString(mCord)); 275 lonText.setText(p.lonToString(mCord)); 270 276 } 271 277 } -
trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java
r627 r1108 14 14 import org.openstreetmap.josm.Main; 15 15 import org.openstreetmap.josm.data.projection.Projection; 16 import org.openstreetmap.josm.data.coor.LatLon.CoordinateFormat; 16 17 import org.openstreetmap.josm.tools.GBC; 17 18 … … 22 23 */ 23 24 private JComboBox projectionCombo = new JComboBox(Projection.allProjections); 25 private JComboBox coordinatesCombo = new JComboBox(CoordinateFormat.values()); 24 26 25 27 public void addGui(PreferenceDialog gui) { 26 for (int i = 0; i < projectionCombo.getItemCount(); ++i) { 27 if (projectionCombo.getItemAt(i).getClass().getName().equals(Main.pref.get("projection"))) { 28 projectionCombo.setSelectedIndex(i); 29 break; 30 } 31 } 28 29 for (int i = 0; i < projectionCombo.getItemCount(); ++i) { 30 if (projectionCombo.getItemAt(i).getClass().getName().equals(Main.pref.get("projection"))) { 31 projectionCombo.setSelectedIndex(i); 32 break; 33 } 34 } 35 36 for (int i = 0; i < coordinatesCombo.getItemCount(); ++i) { 37 if (((CoordinateFormat)coordinatesCombo.getItemAt(i)).name().equals(Main.pref.get("coordinates"))) { 38 coordinatesCombo.setSelectedIndex(i); 39 break; 40 } 41 } 42 32 43 projectionCombo.addActionListener(gui.requireRestartAction); 44 coordinatesCombo.addActionListener(gui.requireRestartAction); 33 45 34 46 JPanel projPanel = new JPanel(); … … 38 50 projPanel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL)); 39 51 projPanel.add(projectionCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0,5,5,5)); 52 projPanel.add(new JLabel(tr("Display coordinates as")), GBC.std().insets(5,5,0,5)); 53 projPanel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL)); 54 projPanel.add(coordinatesCombo, GBC.eop().fill(GBC.HORIZONTAL).insets(0,5,5,5)); 40 55 gui.map.add(projPanel, GBC.eol().insets(0,0,0,10).fill(GBC.HORIZONTAL)); 41 56 } … … 43 58 public void ok() { 44 59 Main.pref.put("projection", projectionCombo.getSelectedItem().getClass().getName()); 60 Main.pref.put("coordinates", ((CoordinateFormat)coordinatesCombo.getSelectedItem()).name()); 45 61 } 46 62 }
Note:
See TracChangeset
for help on using the changeset viewer.