From 7825a9945e8ff3d20ab6a1e18c7f522f4c67e0cf Mon Sep 17 00:00:00 2001 From: savsch Date: Tue, 24 Dec 2024 02:47:18 +0530 Subject: [PATCH] Nearby: Increase max radius from 100km to 300km --- .../free/nrw/commons/mwapi/OkHttpJsonApiClient.kt | 4 ++-- .../fr/free/nrw/commons/nearby/NearbyPlaces.java | 14 +++++++++++--- .../nrw/commons/nearby/model/NearbyQueryParams.kt | 2 +- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt index e3e8e8b70..e8fbc543c 100644 --- a/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt +++ b/app/src/main/java/fr/free/nrw/commons/mwapi/OkHttpJsonApiClient.kt @@ -359,7 +359,7 @@ class OkHttpJsonApiClient @Inject constructor( "\${LONG}", String.format(Locale.ROOT, "%.4f", queryParams.center.longitude) ) - .replace("\${RAD}", String.format(Locale.ROOT, "%.2f", queryParams.radius)) + .replace("\${RAD}", String.format(Locale.ROOT, "%.2f", queryParams.radiusInKm)) } } @@ -425,7 +425,7 @@ class OkHttpJsonApiClient @Inject constructor( ).replace( "\${LONG}", String.format(locale, "%.4f", queryParams.center.longitude) ) - .replace("\${RAD}", String.format(locale, "%.2f", queryParams.radius)) + .replace("\${RAD}", String.format(locale, "%.2f", queryParams.radiusInKm)) } is NearbyQueryParams.Rectangular -> { 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 51c126ad8..be68113d4 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 @@ -147,7 +147,9 @@ public class NearbyPlaces { } } - int minRadius = 0, maxRadius = Math.round(Math.min(100f, Math.min(longGap, latGap))) * 100; + // minRadius, targetRadius and maxRadius are radii in decameters + // unlike other + int minRadius = 0, maxRadius = Math.round(Math.min(300f, Math.min(longGap, latGap))) * 100; int targetRadius = maxRadius / 2; while (minRadius < maxRadius) { targetRadius = minRadius + (maxRadius - minRadius + 1) / 2; @@ -156,8 +158,14 @@ public class NearbyPlaces { if (itemCount >= lowerLimit && itemCount < upperLimit) { break; } - if (targetRadius > maxRadius / 2 && itemCount < lowerLimit / 5) { - minRadius = targetRadius + (maxRadius - targetRadius + 1) / 2; + if (targetRadius > maxRadius / 2 && itemCount < lowerLimit / 5) { // fast forward + minRadius = targetRadius; + targetRadius = minRadius + (maxRadius - minRadius + 1) / 2; + minRadius = targetRadius; + if (itemCount < lowerLimit / 10 && minRadius < maxRadius) { // fast forward again + targetRadius = minRadius + (maxRadius - minRadius + 1) / 2; + minRadius = targetRadius; + } continue; } if (itemCount < upperLimit) { diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/model/NearbyQueryParams.kt b/app/src/main/java/fr/free/nrw/commons/nearby/model/NearbyQueryParams.kt index ea2957abe..eb1d7cc70 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/model/NearbyQueryParams.kt +++ b/app/src/main/java/fr/free/nrw/commons/nearby/model/NearbyQueryParams.kt @@ -6,5 +6,5 @@ sealed class NearbyQueryParams { class Rectangular(val screenTopRight: LatLng, val screenBottomLeft: LatLng) : NearbyQueryParams() - class Radial(val center: LatLng, val radius: Float) : NearbyQueryParams() + class Radial(val center: LatLng, val radiusInKm: Float) : NearbyQueryParams() } \ No newline at end of file