From 365e94a796253981e13e6ad27dc5d8abb45b95f9 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Date: Thu, 11 Dec 2025 16:23:35 +0100 Subject: [PATCH] [android] Add open in panoramax link on the place page Signed-off-by: Jean-Baptiste --- .../main/java/app/organicmaps/util/Utils.java | 14 +++++++++++ .../widget/placepage/PlacePageView.java | 5 ++++ .../main/res/layout/place_page_details.xml | 2 ++ .../layout/place_page_open_photoviewer.xml | 24 +++++++++++++++++++ android/app/src/main/res/values/strings.xml | 1 + 5 files changed, 46 insertions(+) create mode 100644 android/app/src/main/res/layout/place_page_open_photoviewer.xml diff --git a/android/app/src/main/java/app/organicmaps/util/Utils.java b/android/app/src/main/java/app/organicmaps/util/Utils.java index ea3dd9ec1..f1cbb87fd 100644 --- a/android/app/src/main/java/app/organicmaps/util/Utils.java +++ b/android/app/src/main/java/app/organicmaps/util/Utils.java @@ -48,7 +48,10 @@ import app.organicmaps.sdk.util.log.Logger; import app.organicmaps.sdk.util.log.LogsManager; import com.google.android.material.snackbar.Snackbar; import java.lang.ref.WeakReference; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; import java.time.LocalTime; +import java.util.Locale; import java.util.concurrent.TimeUnit; @Keep @@ -494,4 +497,15 @@ public class Utils return context.getString(R.string.app_site_url) + "donate/"; return url; } + + public static String buildPanoramaxURL(double lat, double lon) + { + final String panoramaxURL = "https://api.panoramax.xyz/?"; + LocalDateTime date = LocalDateTime.now().plusYears(-2); + final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); + String minDate = "date_from=" + dateFormat.format(date); + final String levelZoom = "16"; + final String quality_score = "&pic_score=ABC"; + return panoramaxURL + minDate + "&" + levelZoom + "/" + lat + "/" + lon + quality_score; + } } diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java index 8568874b2..bf3ef0054 100644 --- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java +++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageView.java @@ -290,6 +290,9 @@ public class PlacePageView extends Fragment openIn.setOnClickListener(this); openIn.setOnLongClickListener(this); openIn.setVisibility(VISIBLE); + LinearLayout openPhotoViewer = mFrame.findViewById(R.id.ll__place_open_phviewer); + openPhotoViewer.setOnClickListener(this); + openPhotoViewer.setVisibility(VISIBLE); mTvLatlon = mFrame.findViewById(R.id.tv__place_latlon); mWifi = mFrame.findViewById(R.id.ll__place_wifi); mTvWiFi = mFrame.findViewById(R.id.tv__place_wifi); @@ -987,6 +990,8 @@ public class PlacePageView extends Fragment mMapObject.getName()); Utils.openUri(requireContext(), Uri.parse(uri), R.string.uri_open_location_failed); } + else if (id == R.id.ll__place_open_phviewer) + Utils.openUrl(requireContext(), Utils.buildPanoramaxURL(mMapObject.getLat(),mMapObject.getLon())); else if (id == R.id.direction_frame) showBigDirection(); else if (id == R.id.item_icon) diff --git a/android/app/src/main/res/layout/place_page_details.xml b/android/app/src/main/res/layout/place_page_details.xml index c927dc0bf..811b5a94a 100644 --- a/android/app/src/main/res/layout/place_page_details.xml +++ b/android/app/src/main/res/layout/place_page_details.xml @@ -71,6 +71,8 @@ + + + + + + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 3d4c9ae30..3c5977fe3 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -966,4 +966,5 @@ Offline Maps A map needs to be downloaded to view and navigate the area.\nDownload maps for areas you want to travel. Edit the list to add a description + Open in Panoramax