From 9e2d7a518cde1c6c8a9fb629085eabea78fed02c Mon Sep 17 00:00:00 2001
From: t22couch <thibaud.couchet@imt-atlantique.net>
Date: Tue, 25 Mar 2025 16:14:15 +0100
Subject: [PATCH] App with maps work without intraction plus riches

---
 .../myfirstapplication/MapsFragment.java      | 60 ++++++++++++++++++-
 1 file changed, 57 insertions(+), 3 deletions(-)

diff --git a/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java b/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java
index e8da35d..2db2838 100644
--- a/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java
+++ b/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java
@@ -21,12 +21,17 @@ import com.google.android.gms.maps.CameraUpdateFactory;
 import com.google.android.gms.maps.GoogleMap;
 import com.google.android.gms.maps.OnMapReadyCallback;
 import com.google.android.gms.maps.SupportMapFragment;
+import com.google.android.gms.maps.model.CameraPosition;
 import com.google.android.gms.maps.model.LatLng;
 import com.google.android.gms.maps.model.MarkerOptions;
 
+import java.util.ArrayList;
+
 public class MapsFragment extends Fragment {
 
     private Toolbar toolbar;
+    private GoogleMap mMap;
+    private final ArrayList<LatLng> markerPositions = new ArrayList<>();
 
     public MapsFragment() {
         // Required empty public constructor
@@ -49,6 +54,12 @@ public class MapsFragment extends Fragment {
          */
         @Override
         public void onMapReady(GoogleMap googleMap) {
+            mMap = googleMap;
+            // Redessine les anciens marqueurs si existants
+            for (LatLng position : markerPositions) {
+                googleMap.addMarker(new MarkerOptions().position(position)
+                        .title("Lat: " + position.latitude + ", Lng: " + position.longitude));
+            }
             // We check for the application "Call permission"
             if (ContextCompat.checkSelfPermission(requireContext(),
                     Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
@@ -60,6 +71,37 @@ public class MapsFragment extends Fragment {
                 googleMap.getUiSettings().setZoomGesturesEnabled(true);
                 googleMap.getUiSettings().setCompassEnabled(true);
                 googleMap.getUiSettings().setMyLocationButtonEnabled(true);
+                googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
+                    @Override
+                    public void onMapClick(LatLng latLng) {
+                        double latitude = latLng.latitude;
+                        double longitude = latLng.longitude;
+
+                        String message = "Latitude : " + latitude + "\nLongitude : " + longitude;
+                        Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show();
+                    }
+                });
+                googleMap.setOnMapLongClickListener(new GoogleMap.OnMapLongClickListener() {
+                    @Override
+                    public void onMapLongClick(LatLng latLng) {
+                        double latitude = latLng.latitude;
+                        double longitude = latLng.longitude;
+
+                        String title = "Lat: " + latitude + ", Lng: " + longitude;
+
+                        // Crée le marker
+                        MarkerOptions markerOptions = new MarkerOptions()
+                                .position(latLng)
+                                .title(title);
+
+                        // Ajoute le marker à la carte
+                        googleMap.addMarker(markerOptions);
+                        markerPositions.add(latLng);
+
+                        // Affiche un toast
+                        Toast.makeText(requireContext(), "Marqueur ajouté à " + title, Toast.LENGTH_SHORT).show();
+                    }
+                });
             } catch (SecurityException e) {
                 Log.e("MapsFragment", "Error while enabling location", e);
             }
@@ -82,6 +124,12 @@ public class MapsFragment extends Fragment {
     public View onCreateView(@NonNull LayoutInflater inflater,
                              @Nullable ViewGroup container,
                              @Nullable Bundle savedInstanceState) {
+        if (savedInstanceState != null) {
+            ArrayList<LatLng> savedMarkers = savedInstanceState.getParcelableArrayList("markers");
+            if (savedMarkers != null) {
+                markerPositions.addAll(savedMarkers);
+            }
+        }
         return inflater.inflate(R.layout.fragment_maps, container, false);
 
     }
@@ -94,13 +142,13 @@ public class MapsFragment extends Fragment {
 
         toolbar.setOnMenuItemClickListener(item -> {
             if (item.getItemId() == R.id.MapTypeNormalAction) {
-                shareAction();
+                mMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
                 return true;
             } else if (item.getItemId() == R.id.MapTypeHybridAction) {
-                openWikipedia();
+                mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
                 return true;
             } else if (item.getItemId() == R.id.MapTypeSatelliteAction) {
-                resetAllFields();
+                mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
                 return true;
             }
             return false;
@@ -112,4 +160,10 @@ public class MapsFragment extends Fragment {
             mapFragment.getMapAsync(callback);
         }
     }
+
+    @Override
+    public void onSaveInstanceState(@NonNull Bundle outState) {
+        super.onSaveInstanceState(outState);
+        outState.putParcelableArrayList("markers", markerPositions);
+    }
 }
\ No newline at end of file
-- 
GitLab