diff options
| author | Sven Karsten Greiner <sven@sammyshp.de> | 2011-09-13 00:21:14 -0700 |
|---|---|---|
| committer | Sven Karsten Greiner <sven@sammyshp.de> | 2011-09-13 00:21:14 -0700 |
| commit | 0dab75878492f23f345cf70fba70416a14436471 (patch) | |
| tree | 67cacdacde22e00281ad5f458fd8b05d3d5ad161 | |
| parent | 72bc9f6022e44d4c82407def9a1c81cf3c1d3a6b (diff) | |
| parent | affa2dd88d7080ba85edecf20d8e683567cf5fa4 (diff) | |
| download | cgeo-0dab75878492f23f345cf70fba70416a14436471.zip cgeo-0dab75878492f23f345cf70fba70416a14436471.tar.gz cgeo-0dab75878492f23f345cf70fba70416a14436471.tar.bz2 | |
Merge pull request #427 from samueltardieu/inline-operations
Inline operations regarding Geopoint
22 files changed, 63 insertions, 113 deletions
diff --git a/src/cgeo/geocaching/cgBase.java b/src/cgeo/geocaching/cgBase.java index c3625dd..4ddae1b 100644 --- a/src/cgeo/geocaching/cgBase.java +++ b/src/cgeo/geocaching/cgBase.java @@ -174,9 +174,9 @@ public class cgBase { private static final Pattern patternViewstateFieldCount = Pattern.compile("id=\"__VIEWSTATEFIELDCOUNT\"[^(value)]+value=\"(\\d+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static final Pattern patternViewstates = Pattern.compile("id=\"__VIEWSTATE(\\d*)\"[^(value)]+value=\"([^\"]+)\"[^>]+>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); private static final Pattern patternIsPremium = Pattern.compile("<span id=\"ctl00_litPMLevel\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE); - public static final double miles2km = 1.609344; - public static final double feet2km = 0.0003048; - public static final double yards2km = 0.0009144; + public static final float miles2km = 1.609344f; + public static final float feet2km = 0.0003048f; + public static final float yards2km = 0.0009144f; public static final double deg2rad = Math.PI / 180; public static final double rad2deg = 180 / Math.PI; public static final float erad = 6371.0f; @@ -2363,35 +2363,11 @@ public class cgBase { return text.trim(); } - public static double getDistance(final Geopoint coords1, final Geopoint coords2) { - if (coords1 == null || coords2 == null) { - return 0; - } - - return coords1.distanceTo(coords2); // TODO Check callers for null and replace them - } - - public static double getHeading(final Geopoint coords1, final Geopoint coords2) { - return coords1.bearingTo(coords2); // TODO Replace callers - } - - public static Geopoint getRadialDistance(final Geopoint coords, double bearing, double distance) { - return coords.project(bearing, distance); // TODO Replace callers - } - public String getHumanDistance(Float distance) { if (distance == null) { return "?"; } - return getHumanDistance(Double.valueOf(distance)); - } - - public String getHumanDistance(Double distance) { - if (distance == null) { - return "?"; - } - if (settings.units == cgSettings.unitsImperial) { distance /= miles2km; if (distance > 100) { diff --git a/src/cgeo/geocaching/cgCache.java b/src/cgeo/geocaching/cgCache.java index 21d78ce..4a16d76 100644 --- a/src/cgeo/geocaching/cgCache.java +++ b/src/cgeo/geocaching/cgCache.java @@ -48,8 +48,8 @@ public class cgCache implements ICache { public String size = ""; public Float difficulty = Float.valueOf(0); public Float terrain = Float.valueOf(0); - public Double direction = null; - public Double distance = null; + public Float direction = null; + public Float distance = null; public String latlon = ""; public String latitudeString = ""; public String longitudeString = ""; diff --git a/src/cgeo/geocaching/cgCacheListAdapter.java b/src/cgeo/geocaching/cgCacheListAdapter.java index dec5bef..6dc63da 100644 --- a/src/cgeo/geocaching/cgCacheListAdapter.java +++ b/src/cgeo/geocaching/cgCacheListAdapter.java @@ -50,11 +50,10 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { private LayoutInflater inflater = null; private Activity activity = null; private cgBase base = null; - private DistanceComparator dstComparator = null; private CacheComparator statComparator = null; private boolean historic = false; private Geopoint coords = null; - private Double azimuth = Double.valueOf(0); + private float azimuth = 0; private long lastSort = 0L; private boolean sort = true; private int checked = 0; @@ -79,7 +78,6 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { settings = settingsIn; list = listIn; base = baseIn; - dstComparator = new DistanceComparator(); DisplayMetrics metrics = new DisplayMetrics(); activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); @@ -257,7 +255,7 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { return; } - dstComparator.setCoords(coordsIn); + final DistanceComparator dstComparator = new DistanceComparator(coordsIn); Collections.sort((List<cgCache>) list, dstComparator); } notifyDataSetChanged(); @@ -278,7 +276,7 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { if (statComparator != null) { Collections.sort((List<cgCache>) list, statComparator); } else { - dstComparator.setCoords(coordsIn); + final DistanceComparator dstComparator = new DistanceComparator(coordsIn); Collections.sort((List<cgCache>) list, dstComparator); } notifyDataSetChanged(); @@ -302,12 +300,12 @@ public class cgCacheListAdapter extends ArrayAdapter<cgCache> { } } - public void setActualHeading(Double azimuthIn) { - if (azimuthIn == null) { + public void setActualHeading(Float directionNow) { + if (directionNow == null) { return; } - azimuth = azimuthIn; + azimuth = directionNow; if (CollectionUtils.isNotEmpty(compasses)) { for (cgCompassMini compass : compasses) { diff --git a/src/cgeo/geocaching/cgCompassMini.java b/src/cgeo/geocaching/cgCompassMini.java index 2b9d0b6..bd3cad0 100644 --- a/src/cgeo/geocaching/cgCompassMini.java +++ b/src/cgeo/geocaching/cgCompassMini.java @@ -16,8 +16,8 @@ public class cgCompassMini extends View { private Context context = null; private Geopoint cacheCoords = null; private Bitmap compassArrow = null; - private Double azimuth = Double.valueOf(0); - private Double heading = Double.valueOf(0); + private float azimuth = 0; + private float heading = 0; private PaintFlagsDrawFilter setfil = null; private PaintFlagsDrawFilter remfil = null; @@ -56,13 +56,13 @@ public class cgCompassMini extends View { cacheCoords = cacheCoordsIn; } - protected void updateAzimuth(Double azimuthIn) { + protected void updateAzimuth(float azimuthIn) { azimuth = azimuthIn; updateDirection(); } - protected void updateHeading(Double headingIn) { + protected void updateHeading(float headingIn) { heading = headingIn; updateDirection(); @@ -73,7 +73,7 @@ public class cgCompassMini extends View { return; } - heading = cgBase.getHeading(coordsIn, cacheCoords); + heading = coordsIn.bearingTo(cacheCoords); updateDirection(); } @@ -96,7 +96,7 @@ public class cgCompassMini extends View { protected void onDraw(Canvas canvas){ super.onDraw(canvas); - Double azimuthRelative = azimuth - heading; + float azimuthRelative = azimuth - heading; if (azimuthRelative < 0) { azimuthRelative = azimuthRelative + 360; } else if (azimuthRelative >= 360) { @@ -118,9 +118,9 @@ public class cgCompassMini extends View { marginLeft = (getWidth() - compassArrowWidth) / 2; marginTop = (getHeight() - compassArrowHeight) / 2; - canvas.rotate(-(azimuthRelative.floatValue()), canvasCenterX, canvasCenterY); + canvas.rotate(-azimuthRelative, canvasCenterX, canvasCenterY); canvas.drawBitmap(compassArrow, marginLeft, marginTop, null); - canvas.rotate(azimuthRelative.floatValue(), canvasCenterX, canvasCenterY); + canvas.rotate(azimuthRelative, canvasCenterX, canvasCenterY); canvas.setDrawFilter(remfil); } diff --git a/src/cgeo/geocaching/cgData.java b/src/cgeo/geocaching/cgData.java index 6f16430..97afcff 100644 --- a/src/cgeo/geocaching/cgData.java +++ b/src/cgeo/geocaching/cgData.java @@ -1930,13 +1930,13 @@ public class cgData { if (cursor.isNull(index)) { cache.direction = null; } else { - cache.direction = (Double) cursor.getDouble(index); + cache.direction = cursor.getFloat(index); } index = cursor.getColumnIndex("distance"); if (cursor.isNull(index)) { cache.distance = null; } else { - cache.distance = (Double) cursor.getDouble(index); + cache.distance = cursor.getFloat(index); } cache.terrain = (Float) cursor.getFloat(cursor.getColumnIndex("terrain")); cache.latlon = (String) cursor.getString(cursor.getColumnIndex("latlon")); diff --git a/src/cgeo/geocaching/cgDirection.java b/src/cgeo/geocaching/cgDirection.java index 29df84d..abc4175 100644 --- a/src/cgeo/geocaching/cgDirection.java +++ b/src/cgeo/geocaching/cgDirection.java @@ -15,7 +15,7 @@ public class cgDirection { private cgeoSensorListener sensorListener = null;
private cgUpdateDir dirUpdate = null;
- public Double directionNow = null;
+ public Float directionNow = null;
public cgDirection(Context contextIn, cgUpdateDir dirUpdateIn) {
context = contextIn;
@@ -63,7 +63,7 @@ public class cgDirection { @Override
public void onSensorChanged(SensorEvent event) {
- directionNow = Compatibility.getDirectionNow(Double.valueOf(event.values[0]), (Activity)context);
+ directionNow = Compatibility.getDirectionNow(event.values[0], (Activity)context);
if (dirUpdate != null && directionNow != null) {
dirUpdate.updateDir(dir);
diff --git a/src/cgeo/geocaching/cgDistanceView.java b/src/cgeo/geocaching/cgDistanceView.java index ae9e7b7..9030bbb 100644 --- a/src/cgeo/geocaching/cgDistanceView.java +++ b/src/cgeo/geocaching/cgDistanceView.java @@ -27,14 +27,13 @@ public class cgDistanceView extends TextView { } public void update(final Geopoint coords) { - if (cacheCoords == null) return; - if (coords == null) return; - if (base == null) return; - - setText(base.getHumanDistance(cgBase.getDistance(coords, cacheCoords))); + if (cacheCoords == null || coords == null || base == null) { + return; + } + setText(base.getHumanDistance(coords.distanceTo(cacheCoords))); } - public void setDistance(Double distance) { + public void setDistance(Float distance) { setText("~" + base.getHumanDistance(distance)); } diff --git a/src/cgeo/geocaching/cgGeo.java b/src/cgeo/geocaching/cgGeo.java index c908580..bb9dffa 100644 --- a/src/cgeo/geocaching/cgGeo.java +++ b/src/cgeo/geocaching/cgGeo.java @@ -42,7 +42,7 @@ public class cgGeo { public Geopoint coordsNow = null; public Geopoint coordsBefore = null; public Double altitudeNow = null; - public Double bearingNow = null; + public Float bearingNow = null; public Float speedNow = null; public Float accuracyNow = null; public Integer satellitesVisible = null; @@ -289,7 +289,7 @@ public class cgGeo { gps = -1; coordsNow = coords; altitudeNow = null; - bearingNow = Double.valueOf(0); + bearingNow = 0f; speedNow = 0f; accuracyNow = 999f; @@ -324,9 +324,9 @@ public class cgGeo { altitudeNow = null; } if (location.hasBearing() && gps != -1) { - bearingNow = Double.valueOf(location.getBearing()); + bearingNow = location.getBearing(); } else { - bearingNow = Double.valueOf(0); + bearingNow = 0f; } if (location.hasSpeed() && gps != -1) { speedNow = location.getSpeed(); @@ -342,9 +342,9 @@ public class cgGeo { if (gps == 1) { // save travelled distance only when location is from GPS if (coordsBefore != null && coordsNow != null) { - final double dst = cgBase.getDistance(coordsBefore, coordsNow); + final float dst = coordsBefore.distanceTo(coordsNow); - if (Double.isNaN(dst) == false && dst > 0.005) { + if (dst > 0.005) { distanceNow += dst; coordsBefore = coordsNow; @@ -375,7 +375,7 @@ public class cgGeo { return; } - if (settings.publicLoc == 1 && (lastGo4cacheCoords == null || cgBase.getDistance(coordsNow, lastGo4cacheCoords) > 0.75)) { + if (settings.publicLoc == 1 && (lastGo4cacheCoords == null || coordsNow.distanceTo(lastGo4cacheCoords) > 0.75)) { g4cRunning = true; final String host = "api.go4cache.com"; diff --git a/src/cgeo/geocaching/cgTrackable.java b/src/cgeo/geocaching/cgTrackable.java index 19b66b8..fb877ad 100644 --- a/src/cgeo/geocaching/cgTrackable.java +++ b/src/cgeo/geocaching/cgTrackable.java @@ -23,7 +23,7 @@ public class cgTrackable { public Spannable nameSp = null; public String type = null; public Date released = null; - public Double distance = null; + public Float distance = null; public String origin = null; public String owner = null; public String ownerGuid = null; diff --git a/src/cgeo/geocaching/cgeo.java b/src/cgeo/geocaching/cgeo.java index 1c7a4c4..1f6260f 100644 --- a/src/cgeo/geocaching/cgeo.java +++ b/src/cgeo/geocaching/cgeo.java @@ -555,7 +555,7 @@ public class cgeo extends AbstractActivity { if (addCoords == null) { navLocation.setText(res.getString(R.string.loc_no_addr)); } - if (addCoords == null || (cgBase.getDistance(geo.coordsNow, addCoords) > 0.5 && addressObtaining == false)) { + if (addCoords == null || (geo.coordsNow.distanceTo(addCoords) > 0.5 && addressObtaining == false)) { (new obtainAddress()).start(); } } else { diff --git a/src/cgeo/geocaching/cgeocaches.java b/src/cgeo/geocaching/cgeocaches.java index e87def5..5fd1db1 100644 --- a/src/cgeo/geocaching/cgeocaches.java +++ b/src/cgeo/geocaching/cgeocaches.java @@ -152,7 +152,7 @@ public class cgeocaches extends AbstractListActivity { private View listFooter = null; private TextView listFooterText = null; private ProgressDialog waitDialog = null; - private Double northHeading = Double.valueOf(0); + private Float northHeading = 0f; private cgGeo geo = null; private cgDirection dir = null; private cgUpdateLoc geoUpdate = new update(); @@ -1718,7 +1718,7 @@ public class cgeocaches extends AbstractListActivity { if (geo.bearingNow != null) { adapter.setActualHeading(geo.bearingNow); } else { - adapter.setActualHeading(Double.valueOf(0)); + adapter.setActualHeading(0f); } } if (northHeading != null) { diff --git a/src/cgeo/geocaching/cgeodetail.java b/src/cgeo/geocaching/cgeodetail.java index 2b35618..340e8ee 100644 --- a/src/cgeo/geocaching/cgeodetail.java +++ b/src/cgeo/geocaching/cgeodetail.java @@ -1084,7 +1084,7 @@ public class cgeodetail extends AbstractActivity { } if (geo != null && geo.coordsNow != null && cache != null && cache.coords != null) { - cacheDistance.setText(base.getHumanDistance(cgBase.getDistance(geo.coordsNow, cache.coords))); + cacheDistance.setText(base.getHumanDistance(geo.coordsNow.distanceTo(cache.coords))); cacheDistance.bringToFront(); } } catch (Exception e) { @@ -1636,7 +1636,7 @@ public class cgeodetail extends AbstractActivity { StringBuilder dist = new StringBuilder(); if (geo.coordsNow != null && cache != null && cache.coords != null) { - dist.append(base.getHumanDistance(cgBase.getDistance(geo.coordsNow, cache.coords))); + dist.append(base.getHumanDistance(geo.coordsNow.distanceTo(cache.coords))); } if (cache != null && cache.elevation != null) { diff --git a/src/cgeo/geocaching/cgeonavigate.java b/src/cgeo/geocaching/cgeonavigate.java index 037db1c..4e0cd34 100644 --- a/src/cgeo/geocaching/cgeonavigate.java +++ b/src/cgeo/geocaching/cgeonavigate.java @@ -32,8 +32,8 @@ public class cgeonavigate extends AbstractActivity { private cgUpdateLoc geoUpdate = new update(); private cgUpdateDir dirUpdate = new UpdateDirection(); private Geopoint dstCoords = null; - private Double cacheHeading = Double.valueOf(0); - private Double northHeading = Double.valueOf(0); + private float cacheHeading = 0; + private float northHeading = 0; private String title = null; private String name = null; private TextView navType = null; @@ -341,8 +341,8 @@ public class cgeonavigate extends AbstractActivity { headingView = (TextView) findViewById(R.id.heading); } - cacheHeading = cgBase.getHeading(geo.coordsNow, dstCoords); - distanceView.setText(base.getHumanDistance(cgBase.getDistance(geo.coordsNow, dstCoords))); + cacheHeading = geo.coordsNow.bearingTo(dstCoords); + distanceView.setText(base.getHumanDistance(geo.coordsNow.distanceTo(dstCoords))); headingView.setText(String.format(Locale.getDefault(), "%.0f", cacheHeading) + "°"); } @@ -414,7 +414,7 @@ public class cgeonavigate extends AbstractActivity { if (geo != null && geo.bearingNow != null) { northHeading = geo.bearingNow; } else { - northHeading = Double.valueOf(0); + northHeading = 0; } } } catch (Exception e) { diff --git a/src/cgeo/geocaching/cgeopoint.java b/src/cgeo/geocaching/cgeopoint.java index bb817b5..e6483a0 100644 --- a/src/cgeo/geocaching/cgeopoint.java +++ b/src/cgeo/geocaching/cgeopoint.java @@ -526,7 +526,7 @@ public class cgeopoint extends AbstractActivity { return null; } - final Geopoint coordsDst = cgBase.getRadialDistance(coords, bearing, distance); + final Geopoint coordsDst = coords.project(bearing, distance); if (coordsDst == null) { showToast(res.getString(R.string.err_point_location_error)); diff --git a/src/cgeo/geocaching/cgeopopup.java b/src/cgeo/geocaching/cgeopopup.java index 696fc17..029e8d7 100644 --- a/src/cgeo/geocaching/cgeopopup.java +++ b/src/cgeo/geocaching/cgeopopup.java @@ -510,7 +510,7 @@ public class cgeopopup extends AbstractActivity { try { if (geo.coordsNow != null && cache != null && cache.coords != null) { - cacheDistance.setText(base.getHumanDistance(cgBase.getDistance(geo.coordsNow, cache.coords))); + cacheDistance.setText(base.getHumanDistance(geo.coordsNow.distanceTo(cache.coords))); cacheDistance.bringToFront(); } } catch (Exception e) { diff --git a/src/cgeo/geocaching/cgeowaypointadd.java b/src/cgeo/geocaching/cgeowaypointadd.java index eefe2fd..e2ebbb6 100644 --- a/src/cgeo/geocaching/cgeowaypointadd.java +++ b/src/cgeo/geocaching/cgeowaypointadd.java @@ -308,7 +308,7 @@ public class cgeowaypointadd extends AbstractActivity { Double latParsed = null; Double lonParsed = null; - final Geopoint coordsDst = cgBase.getRadialDistance(new Geopoint(latitude, longitude), bearing, distance); + final Geopoint coordsDst = new Geopoint(latitude, longitude).project(bearing, distance); latParsed = coordsDst.getLatitude(); lonParsed = coordsDst.getLongitude(); diff --git a/src/cgeo/geocaching/compatibility/Compatibility.java b/src/cgeo/geocaching/compatibility/Compatibility.java index 18ee8a8..bc58764 100644 --- a/src/cgeo/geocaching/compatibility/Compatibility.java +++ b/src/cgeo/geocaching/compatibility/Compatibility.java @@ -27,7 +27,7 @@ public final class Compatibility { return level8; } - public static Double getDirectionNow(final Double directionNowPre, + public static Float getDirectionNow(final Float directionNowPre, final Activity activity) { AndroidLevel8 level8 = getLevel8(); diff --git a/src/cgeo/geocaching/geopoint/DistanceParser.java b/src/cgeo/geocaching/geopoint/DistanceParser.java index 3578902..a5b3d7b 100644 --- a/src/cgeo/geocaching/geopoint/DistanceParser.java +++ b/src/cgeo/geocaching/geopoint/DistanceParser.java @@ -19,14 +19,14 @@ public final class DistanceParser { * * @throws NumberFormatException if the given number is invalid */ - public static double parseDistance(String distanceText, final int defaultUnit) { + public static float parseDistance(String distanceText, final int defaultUnit) { final Matcher matcher = pattern.matcher(distanceText); if (!matcher.find()) { throw new NumberFormatException(distanceText); } - final double value = Double.parseDouble(matcher.group(1)); + final float value = Float.parseFloat(matcher.group(1)); final String unit = matcher.group(2).toLowerCase(); if (unit.equals("m") || (unit.length() == 0 && defaultUnit == cgSettings.unitsMetric)) { diff --git a/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java b/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java index ffe3e21..46c42ce 100644 --- a/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java +++ b/src/cgeo/geocaching/mapcommon/cgMapMyOverlay.java @@ -14,7 +14,6 @@ import android.graphics.PaintFlagsDrawFilter; import android.graphics.Point; import android.location.Location; import cgeo.geocaching.R; -import cgeo.geocaching.cgBase; import cgeo.geocaching.cgSettings; import cgeo.geocaching.geopoint.Geopoint; import cgeo.geocaching.mapinterfaces.GeoPointImpl; @@ -28,7 +27,7 @@ public class cgMapMyOverlay implements OverlayBase { private cgSettings settings = null; private Location coordinates = null; private GeoPointImpl location = null; - private Double heading = Double.valueOf(0); + private Float heading = 0f; private Paint accuracyCircle = null; private Paint historyLine = null; private Paint historyLineShadow = null; @@ -59,8 +58,8 @@ public class cgMapMyOverlay implements OverlayBase { location = settings.getMapFactory().getGeoPointBase(new Geopoint(coordinates)); } - public void setHeading(Double headingIn) { - heading = headingIn; + public void setHeading(Float bearingNow) { + heading = bearingNow; } @Override @@ -128,7 +127,7 @@ public class cgMapMyOverlay implements OverlayBase { accuracyCircle.setStyle(Style.FILL); canvas.drawCircle(center.x, center.y, radius, accuracyCircle); - if (coordinates.getAccuracy() < 50f && ((historyRecent != null && cgBase.getDistance(new Geopoint(historyRecent), new Geopoint(coordinates)) > 0.005) || historyRecent == null)) { + if (coordinates.getAccuracy() < 50f && ((historyRecent != null && historyRecent.distanceTo(coordinates) > 5.0) || historyRecent == null)) { if (historyRecent != null) history.add(historyRecent); historyRecent = coordinates; diff --git a/src/cgeo/geocaching/mapcommon/cgOverlayScale.java b/src/cgeo/geocaching/mapcommon/cgOverlayScale.java index e4db67c..f7fb969 100644 --- a/src/cgeo/geocaching/mapcommon/cgOverlayScale.java +++ b/src/cgeo/geocaching/mapcommon/cgOverlayScale.java @@ -59,8 +59,7 @@ public class cgOverlayScale implements OverlayBase { final Geopoint leftCoords = new Geopoint(center.getLatitudeE6() / 1e6, center.getLongitudeE6() / 1e6 - span /2); final Geopoint rightCoords = new Geopoint(center.getLatitudeE6() / 1e6, center.getLongitudeE6() / 1e6 + span /2); - distance = cgBase.getDistance(leftCoords, rightCoords); - distance = distance / 2; + distance = leftCoords.distanceTo(rightCoords) / 2; distanceRound = 0d; if(settings.units == cgSettings.unitsImperial) { diff --git a/src/cgeo/geocaching/mapcommon/cgeomap.java b/src/cgeo/geocaching/mapcommon/cgeomap.java index 6e7bab6..40f7a3c 100644 --- a/src/cgeo/geocaching/mapcommon/cgeomap.java +++ b/src/cgeo/geocaching/mapcommon/cgeomap.java @@ -788,7 +788,7 @@ public class cgeomap extends MapBase implements OnDragListener, ViewFactory { if (geo.bearingNow != null) { overlayMyLoc.setHeading(geo.bearingNow); } else { - overlayMyLoc.setHeading(Double.valueOf(0)); + overlayMyLoc.setHeading(0f); } repaintRequired = true; } diff --git a/src/cgeo/geocaching/sorting/DistanceComparator.java b/src/cgeo/geocaching/sorting/DistanceComparator.java index 6198753..9a5b551 100644 --- a/src/cgeo/geocaching/sorting/DistanceComparator.java +++ b/src/cgeo/geocaching/sorting/DistanceComparator.java @@ -1,6 +1,5 @@ package cgeo.geocaching.sorting; -import cgeo.geocaching.cgBase; import cgeo.geocaching.cgCache; import cgeo.geocaching.geopoint.Geopoint; @@ -9,17 +8,9 @@ import cgeo.geocaching.geopoint.Geopoint; * */ public class DistanceComparator extends AbstractCacheComparator { - private Geopoint coords = null; - - public DistanceComparator() { - // nothing - } + private final Geopoint coords; public DistanceComparator(final Geopoint coords) { - setCoords(coords); - } - - public void setCoords(final Geopoint coords) { this.coords = coords; } @@ -32,13 +23,7 @@ public class DistanceComparator extends AbstractCacheComparator { protected int compareCaches(final cgCache cache1, final cgCache cache2) { if ((cache1.coords == null || cache2.coords == null) && cache1.distance != null && cache2.distance != null) { - if (cache1.distance < cache2.distance) { - return -1; - } else if (cache1.distance > cache2.distance) { - return 1; - } else { - return 0; - } + return Double.compare(cache1.distance, cache2.distance); } else { if (cache1.coords == null) { return 1; @@ -47,15 +32,9 @@ public class DistanceComparator extends AbstractCacheComparator { return -1; } - Double distance1 = cgBase.getDistance(coords, cache1.coords); - Double distance2 = cgBase.getDistance(coords, cache2.coords); - - if (distance1 < distance2) { - return -1; - } else if (distance1 > distance2) { - return 1; - } + return Float.compare(coords.distanceTo(cache1.coords), + coords.distanceTo(cache2.coords)); } - return 0; } + } |
