From 4f4a875ebef8e6dda70211b0e3c0fa43a2a23990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=B6nberg?= Date: Sun, 28 May 2017 17:50:53 +0200 Subject: [PATCH 1/5] Add a marker and circle of accuracy for current location Currently the user's position is not visible on the map. This commit adds a marker to the user's position and a circular polygon which shows the accuracy of the location measurement. --- .../free/nrw/commons/MediaDataExtractor.java | 2 +- .../fr/free/nrw/commons/location/LatLng.java | 4 +- .../location/LocationServiceManager.java | 16 +++++- .../nrw/commons/nearby/NearbyInfoDialog.java | 2 +- .../nrw/commons/nearby/NearbyMapFragment.java | 52 +++++++++++++++++++ .../free/nrw/commons/nearby/NearbyPlaces.java | 4 +- 6 files changed, 73 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java index 280309d3d..8bbc03f4d 100644 --- a/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java +++ b/app/src/main/java/fr/free/nrw/commons/MediaDataExtractor.java @@ -262,7 +262,7 @@ public class MediaDataExtractor { NodeList childNodes = parentNode.getChildNodes(); double latitudeText = Double.parseDouble(childNodes.item(1).getTextContent()); double longitudeText = Double.parseDouble(childNodes.item(2).getTextContent()); - LatLng coordinates = new LatLng(latitudeText, longitudeText); + LatLng coordinates = new LatLng(latitudeText, longitudeText, 0); return coordinates.getPrettyCoordinateString(); } diff --git a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java index acd67ebf7..0cc5ba00f 100644 --- a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java +++ b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java @@ -4,6 +4,7 @@ public class LatLng { public final double latitude; public final double longitude; + public final float accuracy; /** Accepts latitude and longitude. * North and South values are cut off at 90° @@ -11,13 +12,14 @@ public class LatLng { * @param latitude double value * @param longitude double value */ - public LatLng(double latitude, double longitude) { + public LatLng(double latitude, double longitude, float accuracy) { if(-180.0D <= longitude && longitude < 180.0D) { this.longitude = longitude; } else { this.longitude = ((longitude - 180.0D) % 360.0D + 360.0D) % 360.0D - 180.0D; } this.latitude = Math.max(-90.0D, Math.min(90.0D, latitude)); + this.accuracy = accuracy; } public int hashCode() { diff --git a/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java b/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java index 3c0d2b23b..041281464 100644 --- a/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java +++ b/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java @@ -14,6 +14,7 @@ public class LocationServiceManager implements LocationListener { private String provider; private LocationManager locationManager; private LatLng latestLocation; + private Float latestLocationAccuracy; public LocationServiceManager(Context context) { this.locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); @@ -24,6 +25,16 @@ public class LocationServiceManager implements LocationListener { return latestLocation; } + /** + * Returns the accuracy of the location. The measurement is + * given as a radius in meter of 68 % confidence. + * + * @return Float + */ + public Float getLatestLocationAccuracy() { + return latestLocationAccuracy; + } + /** Registers a LocationManager to listen for current location. */ public void registerLocationManager() { @@ -57,9 +68,10 @@ public class LocationServiceManager implements LocationListener { public void onLocationChanged(Location location) { double currentLatitude = location.getLatitude(); double currentLongitude = location.getLongitude(); - Timber.d("Latitude: %f Longitude: %f", currentLatitude, currentLongitude); + latestLocationAccuracy = location.getAccuracy(); + Timber.d("Latitude: %f Longitude: %f Accuracy %f", currentLatitude, currentLongitude, latestLocationAccuracy); - latestLocation = new LatLng(currentLatitude, currentLongitude); + latestLocation = new LatLng(currentLatitude, currentLongitude, latestLocationAccuracy); } @Override diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java index 9308413da..e9e4ba771 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java @@ -57,7 +57,7 @@ public class NearbyInfoDialog extends OverlayDialog { Bundle bundle = getArguments(); placeTitle.setText(bundle.getString(ARG_TITLE)); placeDescription.setText(bundle.getString(ARG_DESC)); - location = new LatLng(bundle.getDouble(ARG_LATITUDE), bundle.getDouble(ARG_LONGITUDE)); + location = new LatLng(bundle.getDouble(ARG_LATITUDE), bundle.getDouble(ARG_LONGITUDE), 0); getArticleLink(bundle); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java index b80d16313..093eee33f 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java @@ -1,5 +1,6 @@ package fr.free.nrw.commons.nearby; +import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.preference.PreferenceManager; @@ -14,6 +15,8 @@ import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.annotations.Marker; +import com.mapbox.mapboxsdk.annotations.MarkerOptions; +import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; import com.mapbox.mapboxsdk.geometry.LatLng; @@ -24,6 +27,7 @@ import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.services.android.telemetry.MapboxTelemetry; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.List; import fr.free.nrw.commons.R; @@ -102,6 +106,8 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { return false; } }); + + addCurrentLocationMarker(mapboxMap); } }); if (PreferenceManager.getDefaultSharedPreferences(getActivity()).getBoolean("theme",true)) { @@ -111,6 +117,52 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { } } + /** + * Adds a marker for the user's current position. Adds a + * circle which uses the accuracy * 2, to draw a circle + * which represents the user's position with an accuracy + * of 95%. + */ + public void addCurrentLocationMarker(MapboxMap mapboxMap) { + MarkerOptions currentLocationMarker = new MarkerOptions() + .position(new LatLng(curLatLng.latitude, curLatLng.longitude)); + mapboxMap.addMarker(currentLocationMarker); + + List circle = createCircleArray(curLatLng.latitude, curLatLng.longitude, + curLatLng.accuracy * 2, 100); + + mapboxMap.addPolygon( + new PolygonOptions() + .addAll(circle) + .strokeColor(Color.parseColor("#55000000")) + .fillColor(Color.parseColor("#11000000")) + ); + } + + /** + * Creates a series of points that create a circle on the map. + * Takes the center latitude, center longitude of the circle, + * the radius in meter and the number of nodes of the circle. + * + * @return List List of LatLng points of the circle. + */ + public List createCircleArray(double centerLat, double centerLong, float radius, int nodes) { + List circle = new ArrayList<>(); + float radiusKilometer = radius / 1000; + double radiusLong = radiusKilometer / + (111.320 * Math.cos(centerLat * Math.PI / 180)); + double radiusLat = radiusKilometer / 110.574; + + for (int i = 0; i < nodes; i++) { + double theta = ((double) i / (double) nodes) * (2 * Math.PI); + double nodeLongitude = centerLong + radiusLong * Math.cos(theta); + double nodeLatitude = centerLat + radiusLat * Math.sin(theta); + circle.add(new LatLng(nodeLatitude, nodeLongitude)); + } + + return circle; + } + @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java index 365d3e06f..4683246fc 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java @@ -125,7 +125,7 @@ public class NearbyPlaces { type, // list type, // details Uri.parse(icon), - new LatLng(latitude, longitude), + new LatLng(latitude, longitude, 0), new Sitelinks.Builder() .setWikipediaLink(wikipediaSitelink) .setCommonsLink(commonsSitelink) @@ -187,7 +187,7 @@ public class NearbyPlaces { type, // list type, // details null, - new LatLng(latitude, longitude), + new LatLng(latitude, longitude, 0), new Sitelinks.Builder().build() )); } From a62bfd20013284a525cd375784b96b70bd642a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=B6nberg?= Date: Sun, 28 May 2017 18:35:03 +0200 Subject: [PATCH 2/5] Fix LatLng tests --- .../java/fr/free/nrw/commons/LatLngTests.java | 18 ++++++++--------- .../fr/free/nrw/commons/LengthUtilsTest.java | 20 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/app/src/test/java/fr/free/nrw/commons/LatLngTests.java b/app/src/test/java/fr/free/nrw/commons/LatLngTests.java index 5267a48bd..aed97c58c 100644 --- a/app/src/test/java/fr/free/nrw/commons/LatLngTests.java +++ b/app/src/test/java/fr/free/nrw/commons/LatLngTests.java @@ -9,55 +9,55 @@ import org.junit.Test; public class LatLngTests { @Test public void testZeroZero() { - LatLng place = new LatLng(0, 0); + LatLng place = new LatLng(0, 0, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("0.0 N, 0.0 E")); } @Test public void testAntipode() { - LatLng place = new LatLng(0, 180); + LatLng place = new LatLng(0, 180, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("0.0 N, 180.0 W")); } @Test public void testNorthPole() { - LatLng place = new LatLng(90, 0); + LatLng place = new LatLng(90, 0, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("90.0 N, 0.0 E")); } @Test public void testSouthPole() { - LatLng place = new LatLng(-90, 0); + LatLng place = new LatLng(-90, 0, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("90.0 S, 0.0 E")); } @Test public void testLargerNumbers() { - LatLng place = new LatLng(120, 380); + LatLng place = new LatLng(120, 380, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("90.0 N, 20.0 E")); } @Test public void testNegativeNumbers() { - LatLng place = new LatLng(-120, -30); + LatLng place = new LatLng(-120, -30, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("90.0 S, 30.0 W")); } @Test public void testTooBigWestValue() { - LatLng place = new LatLng(20, -190); + LatLng place = new LatLng(20, -190, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("20.0 N, 170.0 E")); } @Test public void testRounding() { - LatLng place = new LatLng(0.1234567, -0.33333333); + LatLng place = new LatLng(0.1234567, -0.33333333, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("0.1235 N, 0.3333 W")); } @Test public void testRoundingAgain() { - LatLng place = new LatLng(-0.000001, -0.999999); + LatLng place = new LatLng(-0.000001, -0.999999, 0); String prettyString = place.getPrettyCoordinateString(); Assert.assertThat(prettyString, is("0.0 S, 1.0 W")); } diff --git a/app/src/test/java/fr/free/nrw/commons/LengthUtilsTest.java b/app/src/test/java/fr/free/nrw/commons/LengthUtilsTest.java index b2556c197..3fdeafc40 100644 --- a/app/src/test/java/fr/free/nrw/commons/LengthUtilsTest.java +++ b/app/src/test/java/fr/free/nrw/commons/LengthUtilsTest.java @@ -10,36 +10,36 @@ import org.junit.Test; public class LengthUtilsTest { @Test public void testZeroDistance() { - LatLng pointA = new LatLng(0, 0); - LatLng pointB = new LatLng(0, 0); + LatLng pointA = new LatLng(0, 0, 0); + LatLng pointB = new LatLng(0, 0, 0); String distance = LengthUtils.formatDistanceBetween(pointA, pointB); Assert.assertThat(distance, is("0m")); } @Test public void testOneDegreeOnEquator() { - LatLng pointA = new LatLng(0, 0); - LatLng pointB = new LatLng(0, 1); + LatLng pointA = new LatLng(0, 0, 0); + LatLng pointB = new LatLng(0, 1, 0); String distance = LengthUtils.formatDistanceBetween(pointA, pointB); Assert.assertThat(distance, is("111.2km")); } @Test public void testOneDegreeFortyFiveDegrees() { - LatLng pointA = new LatLng(45, 0); - LatLng pointB = new LatLng(45, 1); + LatLng pointA = new LatLng(45, 0, 0); + LatLng pointB = new LatLng(45, 1, 0); String distance = LengthUtils.formatDistanceBetween(pointA, pointB); Assert.assertThat(distance, is("78.6km")); } @Test public void testOneDegreeSouthPole() { - LatLng pointA = new LatLng(-90, 0); - LatLng pointB = new LatLng(-90, 1); + LatLng pointA = new LatLng(-90, 0, 0); + LatLng pointB = new LatLng(-90, 1, 0); String distance = LengthUtils.formatDistanceBetween(pointA, pointB); Assert.assertThat(distance, is("0m")); } @Test public void testPoleToPole() { - LatLng pointA = new LatLng(90, 0); - LatLng pointB = new LatLng(-90, 0); + LatLng pointA = new LatLng(90, 0, 0); + LatLng pointB = new LatLng(-90, 0, 0); String distance = LengthUtils.formatDistanceBetween(pointA, pointB); Assert.assertThat(distance, is("20,015.1km")); } From 0a86a3120373899bacc2ff392094e45c58b447c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=B6nberg?= Date: Sun, 28 May 2017 18:39:10 +0200 Subject: [PATCH 3/5] Code style fixes --- app/src/main/java/fr/free/nrw/commons/location/LatLng.java | 2 +- .../free/nrw/commons/location/LocationServiceManager.java | 3 ++- .../java/fr/free/nrw/commons/nearby/NearbyMapFragment.java | 7 ++++--- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java index 0cc5ba00f..4b92b34ab 100644 --- a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java +++ b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java @@ -4,7 +4,7 @@ public class LatLng { public final double latitude; public final double longitude; - public final float accuracy; + private final float accuracy; /** Accepts latitude and longitude. * North and South values are cut off at 90° diff --git a/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java b/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java index 041281464..e87eaf92e 100644 --- a/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java +++ b/app/src/main/java/fr/free/nrw/commons/location/LocationServiceManager.java @@ -69,7 +69,8 @@ public class LocationServiceManager implements LocationListener { double currentLatitude = location.getLatitude(); double currentLongitude = location.getLongitude(); latestLocationAccuracy = location.getAccuracy(); - Timber.d("Latitude: %f Longitude: %f Accuracy %f", currentLatitude, currentLongitude, latestLocationAccuracy); + Timber.d("Latitude: %f Longitude: %f Accuracy %f", + currentLatitude, currentLongitude, latestLocationAccuracy); latestLocation = new LatLng(currentLatitude, currentLongitude, latestLocationAccuracy); } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java index 093eee33f..ed50555a4 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java @@ -146,11 +146,12 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { * * @return List List of LatLng points of the circle. */ - public List createCircleArray(double centerLat, double centerLong, float radius, int nodes) { + public List createCircleArray( + double centerLat, double centerLong, float radius, int nodes) { List circle = new ArrayList<>(); float radiusKilometer = radius / 1000; - double radiusLong = radiusKilometer / - (111.320 * Math.cos(centerLat * Math.PI / 180)); + double radiusLong = radiusKilometer + / (111.320 * Math.cos(centerLat * Math.PI / 180)); double radiusLat = radiusKilometer / 110.574; for (int i = 0; i < nodes; i++) { From 2a7ef947ff9f22b9894bb550aa4e949d73579d20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=B6nberg?= Date: Sun, 28 May 2017 18:56:10 +0200 Subject: [PATCH 4/5] Code style --- .../fr/free/nrw/commons/location/LatLng.java | 31 +++++++++++++++++-- .../nrw/commons/nearby/NearbyController.java | 4 +-- .../nrw/commons/nearby/NearbyInfoDialog.java | 7 +++-- .../commons/nearby/NearbyListFragment.java | 4 +-- .../nrw/commons/nearby/NearbyMapFragment.java | 8 ++--- .../free/nrw/commons/nearby/NearbyPlaces.java | 4 +-- .../free/nrw/commons/utils/LengthUtils.java | 8 ++--- 7 files changed, 47 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java index 4b92b34ab..1e3202914 100644 --- a/app/src/main/java/fr/free/nrw/commons/location/LatLng.java +++ b/app/src/main/java/fr/free/nrw/commons/location/LatLng.java @@ -2,8 +2,8 @@ package fr.free.nrw.commons.location; public class LatLng { - public final double latitude; - public final double longitude; + private final double latitude; + private final double longitude; private final float accuracy; /** Accepts latitude and longitude. @@ -95,4 +95,31 @@ public class LatLng { return formatCoordinate(this.latitude) + " " + this.getNorthSouth() + ", " + formatCoordinate(this.longitude) + " " + this.getEastWest(); } + + /** + * Return the location accuracy in meter. + * + * @return float + */ + public float getAccuracy() { + return accuracy; + } + + /** + * Return the longitude in degrees. + * + * @return double + */ + public double getLongitude() { + return longitude; + } + + /** + * Return the latitude in degrees. + * + * @return double + */ + public double getLatitude() { + return latitude; + } } diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java index dc6efe754..b38c01022 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyController.java @@ -109,8 +109,8 @@ public class NearbyController { nearbyBaseMarker.title(place.name); nearbyBaseMarker.position( new com.mapbox.mapboxsdk.geometry.LatLng( - place.location.latitude, - place.location.longitude)); + place.location.getLatitude(), + place.location.getLongitude())); nearbyBaseMarker.place(place); nearbyBaseMarker.icon(icon); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java index e9e4ba771..f2c7674b6 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyInfoDialog.java @@ -122,8 +122,8 @@ public class NearbyInfoDialog extends OverlayDialog { Bundle bundle = new Bundle(); bundle.putString(ARG_TITLE, place.name); bundle.putString(ARG_DESC, place.description); - bundle.putDouble(ARG_LATITUDE, place.location.latitude); - bundle.putDouble(ARG_LONGITUDE, place.location.longitude); + bundle.putDouble(ARG_LATITUDE, place.location.getLatitude()); + bundle.putDouble(ARG_LONGITUDE, place.location.getLongitude()); bundle.putParcelable(ARG_SITE_LINK, place.siteLinks); mDialog.setArguments(bundle); DialogUtil.showSafely(fragmentActivity, mDialog); @@ -138,7 +138,8 @@ public class NearbyInfoDialog extends OverlayDialog { @OnClick(R.id.link_preview_directions_button) void onDirectionsClick() { //Open map app at given position - Uri gmmIntentUri = Uri.parse("geo:0,0?q=" + location.latitude + "," + location.longitude); + Uri gmmIntentUri = Uri.parse( + "geo:0,0?q=" + location.getLatitude() + "," + location.getLongitude()); Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri); if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) { diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java index bc9e22a3f..b3759f228 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java @@ -85,8 +85,8 @@ public class NearbyListFragment extends ListFragment { Place place = (Place) listview.getItemAtPosition(position); LatLng placeLatLng = place.location; - double latitude = placeLatLng.latitude; - double longitude = placeLatLng.longitude; + double latitude = placeLatLng.getLatitude(); + double longitude = placeLatLng.getLongitude(); Timber.d("Item at position %d has coords: Lat: %f Long: %f", position, latitude, longitude); diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java index ed50555a4..0cae80df8 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyMapFragment.java @@ -83,7 +83,7 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { MapboxMapOptions options = new MapboxMapOptions() .styleUrl(Style.OUTDOORS) .camera(new CameraPosition.Builder() - .target(new LatLng(curLatLng.latitude, curLatLng.longitude)) + .target(new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude())) .zoom(11) .build()); @@ -125,11 +125,11 @@ public class NearbyMapFragment extends android.support.v4.app.Fragment { */ public void addCurrentLocationMarker(MapboxMap mapboxMap) { MarkerOptions currentLocationMarker = new MarkerOptions() - .position(new LatLng(curLatLng.latitude, curLatLng.longitude)); + .position(new LatLng(curLatLng.getLatitude(), curLatLng.getLongitude())); mapboxMap.addMarker(currentLocationMarker); - List circle = createCircleArray(curLatLng.latitude, curLatLng.longitude, - curLatLng.accuracy * 2, 100); + List circle = createCircleArray(curLatLng.getLatitude(), curLatLng.getLongitude(), + curLatLng.getAccuracy() * 2, 100); mapboxMap.addPolygon( new PolygonOptions() diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java index 4683246fc..94f0ac005 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyPlaces.java @@ -74,8 +74,8 @@ public class NearbyPlaces { String query = wikidataQuery .replace("${RAD}", String.format(Locale.ROOT, "%.2f", radius)) - .replace("${LAT}", String.format(Locale.ROOT, "%.4f", cur.latitude)) - .replace("${LONG}", String.format(Locale.ROOT, "%.4f", cur.longitude)) + .replace("${LAT}", String.format(Locale.ROOT, "%.4f", cur.getLatitude())) + .replace("${LONG}", String.format(Locale.ROOT, "%.4f", cur.getLongitude())) .replace("${LANG}", lang); Timber.v("# Wikidata query: \n" + query); diff --git a/app/src/main/java/fr/free/nrw/commons/utils/LengthUtils.java b/app/src/main/java/fr/free/nrw/commons/utils/LengthUtils.java index 3a8cc6aa5..c9c1fefc2 100644 --- a/app/src/main/java/fr/free/nrw/commons/utils/LengthUtils.java +++ b/app/src/main/java/fr/free/nrw/commons/utils/LengthUtils.java @@ -38,10 +38,10 @@ public class LengthUtils { } private static double computeAngleBetween(LatLng from, LatLng to) { - return distanceRadians(Math.toRadians(from.latitude), - Math.toRadians(from.longitude), - Math.toRadians(to.latitude), - Math.toRadians(to.longitude)); + return distanceRadians(Math.toRadians(from.getLatitude()), + Math.toRadians(from.getLongitude()), + Math.toRadians(to.getLatitude()), + Math.toRadians(to.getLongitude())); } private static double distanceRadians(double lat1, double lng1, double lat2, double lng2) { From 4dbf9d0858ba922d1b35002e5b3f541123d8e607 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Sch=C3=B6nberg?= Date: Sun, 28 May 2017 19:21:45 +0200 Subject: [PATCH 5/5] Fix some tests --- .../java/fr/free/nrw/commons/NearbyControllerTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java b/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java index 1eb73b3d1..ab528c2ab 100644 --- a/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java +++ b/app/src/androidTest/java/fr/free/nrw/commons/NearbyControllerTest.java @@ -29,7 +29,7 @@ public class NearbyControllerTest { } @Test public void testNullAttractions() { - LatLng location = new LatLng(0, 0); + LatLng location = new LatLng(0, 0, 0); List options = NearbyController.loadAttractionsFromLocationToBaseMarkerOptions( @@ -42,7 +42,7 @@ public class NearbyControllerTest { } @Test public void testEmptyList() { - LatLng location = new LatLng(0, 0); + LatLng location = new LatLng(0, 0, 0); List emptyList = new ArrayList<>(); List options =