diff options
| author | Samuel Tardieu <sam@rfc1149.net> | 2011-09-15 13:49:46 -0700 |
|---|---|---|
| committer | Samuel Tardieu <sam@rfc1149.net> | 2011-09-15 13:49:46 -0700 |
| commit | 931ab08f805703f2a7610843fbdbe0f54113e919 (patch) | |
| tree | c135cd0915026d0ed950bc660c624388051d99dc /src/cgeo/geocaching/cgBase.java | |
| parent | c166372fa282e7f9f1f5c53b0fe33d3d3dd61148 (diff) | |
| parent | a7c9811629b30c2c314966fc585290e8b42d5927 (diff) | |
| download | cgeo-931ab08f805703f2a7610843fbdbe0f54113e919.zip cgeo-931ab08f805703f2a7610843fbdbe0f54113e919.tar.gz cgeo-931ab08f805703f2a7610843fbdbe0f54113e919.tar.bz2 | |
Merge pull request #463 from samueltardieu/use-geopoint-parser
Use geopoint parser
Diffstat (limited to 'src/cgeo/geocaching/cgBase.java')
| -rw-r--r-- | src/cgeo/geocaching/cgBase.java | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java index 3db717f..9a1f33d 100644 --- a/src/cgeo/geocaching/cgBase.java +++ b/src/cgeo/geocaching/cgBase.java @@ -2485,118 +2485,6 @@ public class cgBase { return formatLatitude(coords.getLatitude(), degrees) + " | " + formatLongitude(coords.getLongitude(), degrees); } - // TODO Use android.util.Pair<Double, String> if needed rather than a Map here. - public static Map<String, Object> parseCoordinate(String coord, String latlon) { - final Map<String, Object> coords = new HashMap<String, Object>(); - - final Pattern patternA = Pattern.compile("^([NSWE])[^\\d]*(\\d+)°? +(\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE); - final Pattern patternB = Pattern.compile("^([NSWE])[^\\d]*(\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE); - final Pattern patternC = Pattern.compile("^(-?\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE); - final Pattern patternD = Pattern.compile("^([NSWE])[^\\d]*(\\d+)°?$", Pattern.CASE_INSENSITIVE); - final Pattern patternE = Pattern.compile("^(-?\\d+)°?$", Pattern.CASE_INSENSITIVE); - final Pattern patternF = Pattern.compile("^([NSWE])[^\\d]*(\\d+)$", Pattern.CASE_INSENSITIVE); - final Pattern pattern0 = Pattern.compile("^(-?\\d+)([\\.|,](\\d+))?$", Pattern.CASE_INSENSITIVE); - - coord = coord.trim().toUpperCase(); - - final Matcher matcherA = patternA.matcher(coord); - final Matcher matcherB = patternB.matcher(coord); - final Matcher matcherC = patternC.matcher(coord); - final Matcher matcherD = patternD.matcher(coord); - final Matcher matcherE = patternE.matcher(coord); - final Matcher matcherF = patternF.matcher(coord); - final Matcher matcher0 = pattern0.matcher(coord); - - int latlonNegative; - if (matcherA.find() && matcherA.groupCount() > 0) { - if (matcherA.group(1).equalsIgnoreCase("N") || matcherA.group(1).equalsIgnoreCase("E")) { - latlonNegative = 1; - } else { - latlonNegative = -1; - } - - if (matcherA.groupCount() < 5 || matcherA.group(5) == null) { - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherA.group(2)) + Double.valueOf(matcherA.group(3) + ".0") / 60))); - coords.put("string", matcherA.group(1) + " " + matcherA.group(2) + "° " + matcherA.group(3) + ".000"); - } else { - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherA.group(2)) + Double.valueOf(matcherA.group(3) + "." + matcherA.group(5)) / 60))); - coords.put("string", matcherA.group(1) + " " + matcherA.group(2) + "° " + matcherA.group(3) + "." + matcherA.group(5)); - } - - return coords; - } else if (matcherB.find() && matcherB.groupCount() > 0) { - if (matcherB.group(1).equalsIgnoreCase("N") || matcherB.group(1).equalsIgnoreCase("E")) { - latlonNegative = 1; - } else { - latlonNegative = -1; - } - - if (matcherB.groupCount() < 4 || matcherB.group(4) == null) { - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherB.group(2) + ".0")))); - } else { - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherB.group(2) + "." + matcherB.group(4))))); - } - } else if (matcherC.find() && matcherC.groupCount() > 0) { - if (matcherC.groupCount() < 3 || matcherC.group(3) == null) { - coords.put("coordinate", Double.valueOf(new Float(matcherC.group(1) + ".0"))); - } else { - coords.put("coordinate", Double.valueOf(new Float(matcherC.group(1) + "." + matcherC.group(3)))); - } - } else if (matcherD.find() && matcherD.groupCount() > 0) { - if (matcherD.group(1).equalsIgnoreCase("N") || matcherD.group(1).equalsIgnoreCase("E")) { - latlonNegative = 1; - } else { - latlonNegative = -1; - } - - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherB.group(2))))); - } else if (matcherE.find() && matcherE.groupCount() > 0) { - coords.put("coordinate", Double.valueOf(matcherE.group(1))); - } else if (matcherF.find() && matcherF.groupCount() > 0) { - if (matcherF.group(1).equalsIgnoreCase("N") || matcherF.group(1).equalsIgnoreCase("E")) { - latlonNegative = 1; - } else { - latlonNegative = -1; - } - - coords.put("coordinate", Double.valueOf(latlonNegative * (Double.valueOf(matcherB.group(2))))); - } else { - return null; - } - - if (matcher0.find() && matcher0.groupCount() > 0) { - String tmpDir = null; - Float tmpCoord; - if (matcher0.groupCount() < 3 || matcher0.group(3) == null) { - tmpCoord = new Float("0.0"); - } else { - tmpCoord = new Float("0." + matcher0.group(3)); - } - - if (latlon.equalsIgnoreCase("lat")) { - if (matcher0.group(1).equals("+")) { - tmpDir = "N"; - } - if (matcher0.group(1).equals("-")) { - tmpDir = "S"; - } - } else if (latlon.equalsIgnoreCase("lon")) { - if (matcher0.group(1).equals("+")) { - tmpDir = "E"; - } - if (matcher0.group(1).equals("-")) { - tmpDir = "W"; - } - } - - coords.put("string", tmpDir + " " + matcher0.group(1) + "° " + (Math.round(tmpCoord / (1 / 60) * 1000) * 1000)); - - return coords; - } else { - return new HashMap<String, Object>(); - } - } - public UUID searchByNextPage(cgSearchThread thread, final UUID searchId, int reason, boolean showCaptcha) { final String[] viewstates = app.getViewstates(searchId); |
