diff options
Diffstat (limited to 'main/src/cgeo/geocaching/geopoint/GeopointFormatter.java')
| -rw-r--r-- | main/src/cgeo/geocaching/geopoint/GeopointFormatter.java | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java b/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java index c4cfb8c..d0baee9 100644 --- a/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java +++ b/main/src/cgeo/geocaching/geopoint/GeopointFormatter.java @@ -1,5 +1,8 @@ package cgeo.geocaching.geopoint; +import cgeo.geocaching.geopoint.Geopoint.DMM; +import cgeo.geocaching.geopoint.Geopoint.DMS; + import java.util.Locale; /** @@ -58,18 +61,9 @@ public class GeopointFormatter { final double latSigned = gp.getLatitude(); final double lonSigned = gp.getLongitude(); - final double lat = Math.abs(latSigned); - final double lon = Math.abs(lonSigned); - final double latFloor = Math.floor(lat); - final double lonFloor = Math.floor(lon); - final double latMin = (lat - latFloor) * 60; - final double lonMin = (lon - lonFloor) * 60; - final double latMinFloor = Math.floor(latMin); - final double lonMinFloor = Math.floor(lonMin); - final double latSec = (latMin - latMinFloor) * 60; - final double lonSec = (lonMin - lonMinFloor) * 60; - final char latDir = latSigned < 0 ? 'S' : 'N'; - final char lonDir = lonSigned < 0 ? 'W' : 'E'; + + DMM dmm = gp.asDMM(); + DMS dms = gp.asDMS(); switch (format) { case LAT_LON_DECDEGREE: @@ -79,34 +73,34 @@ public class GeopointFormatter return String.format((Locale) null, "%.6f,%.6f", latSigned, lonSigned); case LAT_LON_DECMINUTE: - return String.format("%c %02.0f° %06.3f · %c %03.0f° %06.3f", - latDir, latFloor, latMin, lonDir, lonFloor, lonMin); + return String.format("%c %02d° %06.3f · %c %03d° %06.3f", + dmm.latDir, dmm.latDeg, dmm.latMinRaw, dmm.lonDir, dmm.lonDeg, dmm.lonMinRaw); case LAT_LON_DECMINUTE_RAW: - return String.format((Locale) null, "%c %02.0f° %06.3f %c %03.0f° %06.3f", - latDir, latFloor, latMin, lonDir, lonFloor, lonMin); + return String.format((Locale) null, "%c %02d° %06.3f %c %03d° %06.3f", + dmm.latDir, dmm.latDeg, dmm.latMinRaw, dmm.lonDir, dmm.lonDeg, dmm.lonMinRaw); case LAT_LON_DECSECOND: - return String.format("%c %02.0f° %02.0f' %06.3f\" · %c %03.0f° %02.0f' %06.3f\"", - latDir, latFloor, latMinFloor, latSec, lonDir, lonFloor, lonMinFloor, lonSec); + return String.format("%c %02d° %02d' %06.3f\" · %c %03d° %02d' %06.3f\"", + dms.latDir, dms.latDeg, dms.latMin, dms.latSecRaw, dms.lonDir, dms.lonDeg, dms.lonMin, dms.lonSecRaw); case LAT_DECDEGREE_RAW: return String.format((Locale) null, "%.6f", latSigned); case LAT_DECMINUTE: - return String.format("%c %02.0f° %06.3f", latDir, latFloor, latMin); + return String.format("%c %02d° %06.3f", dmm.latDir, dmm.latDeg, dmm.latMinRaw); case LAT_DECMINUTE_RAW: - return String.format("%c %02.0f %06.3f", latDir, latFloor, latMin); + return String.format("%c %02d %06.3f", dmm.latDir, dmm.latDeg, dmm.latMinRaw); case LON_DECDEGREE_RAW: return String.format((Locale) null, "%.6f", lonSigned); case LON_DECMINUTE: - return String.format("%c %03.0f° %06.3f", lonDir, lonFloor, lonMin); + return String.format("%c %03d° %06.3f", dmm.lonDir, dmm.lonDeg, dmm.lonMinRaw); case LON_DECMINUTE_RAW: - return String.format("%c %03.0f %06.3f", lonDir, lonFloor, lonMin); + return String.format("%c %03d %06.3f", dmm.lonDir, dmm.lonDeg, dmm.lonMinRaw); } // Keep the compiler happy even though it cannot happen |
