From 9c6cc0e114daadad7180b8c0794d2332dcdb8190 Mon Sep 17 00:00:00 2001
From: s22thong <sylvain.thong@gmail.com>
Date: Tue, 25 Mar 2025 10:12:01 +0100
Subject: [PATCH] feat(UI): GoogleMaps Fragment

---
 app/src/main/AndroidManifest.xml              |  2 +
 .../myfirstapplication/MapsFragment.java      |  9 +++++
 app/src/main/res/layout/fragment_maps.xml     | 38 +++++++++++++++++--
 app/src/main/res/menu/menu_maps.xml           | 13 +++++++
 app/src/main/res/values-FR/strings.xml        |  3 ++
 app/src/main/res/values/strings.xml           |  4 ++
 6 files changed, 65 insertions(+), 4 deletions(-)
 create mode 100644 app/src/main/res/menu/menu_maps.xml

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0cf6d19..e610a7c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -7,6 +7,8 @@
         android:required="false" />
 
     <uses-permission android:name="android.permission.CALL_PHONE" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 
     <queries>
         <intent>
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 35fc0f8..fec36ea 100644
--- a/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java
+++ b/app/src/main/java/fr/imt_atlantique/myfirstapplication/MapsFragment.java
@@ -2,6 +2,7 @@ package fr.imt_atlantique.myfirstapplication;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
+import androidx.appcompat.widget.Toolbar;
 import androidx.fragment.app.Fragment;
 
 import android.os.Bundle;
@@ -18,6 +19,8 @@ import com.google.android.gms.maps.model.MarkerOptions;
 
 public class MapsFragment extends Fragment {
 
+    private Toolbar toolbar;
+
     private OnMapReadyCallback callback = new OnMapReadyCallback() {
 
         /**
@@ -34,6 +37,9 @@ public class MapsFragment extends Fragment {
             LatLng sydney = new LatLng(-34, 151);
             googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
             googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
+            googleMap.getUiSettings().setZoomGesturesEnabled(true);
+            googleMap.getUiSettings().setCompassEnabled(true);
+            googleMap.getUiSettings().setMyLocationButtonEnabled(true);
         }
     };
 
@@ -43,11 +49,14 @@ public class MapsFragment extends Fragment {
                              @Nullable ViewGroup container,
                              @Nullable Bundle savedInstanceState) {
         return inflater.inflate(R.layout.fragment_maps, container, false);
+
     }
 
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
+        toolbar = view.findViewById(R.id.mapsToolbar);
+        toolbar.inflateMenu(R.menu.menu_maps);
         SupportMapFragment mapFragment =
                 (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
         if (mapFragment != null) {
diff --git a/app/src/main/res/layout/fragment_maps.xml b/app/src/main/res/layout/fragment_maps.xml
index 1b0e9ae..03d4297 100644
--- a/app/src/main/res/layout/fragment_maps.xml
+++ b/app/src/main/res/layout/fragment_maps.xml
@@ -1,8 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<fragment xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
-    android:id="@+id/map"
-    android:name="com.google.android.gms.maps.SupportMapFragment"
+    android:id="@+id/mapsFragment"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MapsFragment" />
\ No newline at end of file
+    android:fitsSystemWindows="true"
+    tools:context=".MapsFragment">
+
+    <com.google.android.material.appbar.AppBarLayout
+        android:id="@+id/appBarLayout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
+        android:background="@color/black"
+        tools:ignore="MissingConstraints">
+        <androidx.appcompat.widget.Toolbar
+            android:id="@+id/mapsToolbar"
+            android:layout_width="match_parent"
+            android:layout_height="50dp"
+            app:title="@string/app_name"
+            app:titleTextColor="@color/white"/>
+    </com.google.android.material.appbar.AppBarLayout>
+
+    <fragment
+        android:id="@+id/map"
+        android:name="com.google.android.gms.maps.SupportMapFragment"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        app:layout_constraintTop_toBottomOf="@+id/appBarLayout"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        tools:context=".MapsFragment"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/menu/menu_maps.xml b/app/src/main/res/menu/menu_maps.xml
new file mode 100644
index 0000000..b8e4aa5
--- /dev/null
+++ b/app/src/main/res/menu/menu_maps.xml
@@ -0,0 +1,13 @@
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/MapTypeNormalAction"
+        android:title="@string/map_type_normal">
+    </item>
+    <item
+        android:id="@+id/MapTypeHybridAction"
+        android:title="@string/map_type_hybrid">
+    </item>
+    <item
+        android:id="@+id/MapTypeSatelliteAction"
+        android:title="@string/map_type_satellite">
+    </item>
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/values-FR/strings.xml b/app/src/main/res/values-FR/strings.xml
index ca2a1a6..5466545 100644
--- a/app/src/main/res/values-FR/strings.xml
+++ b/app/src/main/res/values-FR/strings.xml
@@ -31,4 +31,7 @@
     <string name="open_wikipedia">Ouvrir Wikipédia</string>
     <string name="share">Partager</string>
     <string name="error_first_name_empty">Le prénom ne peut pas être vide.</string>
+    <string name="map_type_normal">Version normale</string>
+    <string name="map_type_hybrid">Version hybride</string>
+    <string name="map_type_satellite">Version satellite</string>
 </resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d9f53f8..feebf34 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -31,4 +31,8 @@
     <string name="open_wikipedia">Open Wikipedia</string>
     <string name="share">Share</string>
     <string name="error_first_name_empty">The first name can not be empty.</string>
+
+    <string name="map_type_normal">Normal version</string>
+    <string name="map_type_hybrid">Hydrid version</string>
+    <string name="map_type_satellite">Satellite version</string>
 </resources>
\ No newline at end of file
-- 
GitLab