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