diff --git a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageUtils.java b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageUtils.java
index ff3b05d6e..c5103e44d 100644
--- a/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageUtils.java
+++ b/android/app/src/main/java/app/organicmaps/widget/placepage/PlacePageUtils.java
@@ -105,4 +105,12 @@ public class PlacePageUtils
});
popup.show();
}
+
+ public static String buildPanoramaxURL(double lat, double lon)
+ {
+ final String panoramaxURL = "https://api.panoramax.xyz/?map=";
+ final String levelZoom = "16";
+ final String quality_score = "&pic_score=ABC";
+ return panoramaxURL + 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..44a153348 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
@@ -4,6 +4,7 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE;
import static app.organicmaps.sdk.util.Utils.getLocalizedFeatureType;
import static app.organicmaps.sdk.util.Utils.getTagValueLocalized;
+import static app.organicmaps.widget.placepage.PlacePageUtils.buildPanoramaxURL;
import android.content.Context;
import android.content.res.ColorStateList;
@@ -290,6 +291,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 +991,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(), buildPanoramaxURL(mMapObject.getLat(),mMapObject.getLon()));
else if (id == R.id.direction_frame)
showBigDirection();
else if (id == R.id.item_icon)
@@ -1034,6 +1040,10 @@ public class PlacePageView extends Fragment
mMapObject.getName());
PlacePageUtils.copyToClipboard(requireContext(), mFrame, uri);
}
+ else if (id == R.id.ll__place_open_phviewer)
+ {
+ PlacePageUtils.copyToClipboard(requireContext(),mFrame, buildPanoramaxURL(mMapObject.getLat(),mMapObject.getLon()));
+ }
else if (id == R.id.ll__place_operator)
items.add(mTvOperator.getText().toString());
else if (id == R.id.ll__place_network)
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