diff --git a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt
index 4f2aa93..bbb2fd0 100644
--- a/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt
+++ b/moti/app/src/main/java/com/example/moti/ui/map/MapFragment.kt
@@ -16,7 +16,10 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.ArrayAdapter
import android.widget.ImageButton
+import android.widget.Spinner
import android.widget.TextView
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.app.ActivityCompat
@@ -55,6 +58,10 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListener {
+
+ private lateinit var colorFilterSpinner: Spinner
+ private var selectedTagColor: TagColor? = null
+
private val radioButtonViewModel: RadioButtonViewModel by activityViewModels()
private lateinit var googleMap: GoogleMap
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
@@ -128,6 +135,37 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe
tagColorViewModel.selectedTagColor.observe(viewLifecycleOwner) { tagColor ->
updateMarkerColor(tagColor)
}
+
+
+ colorFilterSpinner = view.findViewById(R.id.spinner_color_filter)
+ val adapter = ArrayAdapter.createFromResource(
+ requireContext(),
+ R.array.tag_colors_array,
+ R.layout.custom_spinner_item
+ )
+ adapter.setDropDownViewResource(R.layout.custom_spinner_dropdown_item)
+ colorFilterSpinner.adapter = adapter
+
+ colorFilterSpinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
+ override fun onItemSelected(parent: AdapterView<*>, view: View?, position: Int, id: Long) {
+ selectedTagColor = when (position) {
+ 1 -> TagColor.RD
+ 2 -> TagColor.OG
+ 3 -> TagColor.YE
+ 4 -> TagColor.GN
+ 5 -> TagColor.BU
+ 6 -> TagColor.PU
+ 7 -> TagColor.BK
+ else -> null
+ }
+ filteringMarkers()
+ }
+
+ override fun onNothingSelected(parent: AdapterView<*>) {
+ selectedTagColor = null
+ filteringMarkers()
+ }
+ }
}
private fun updateMarkerColor(tagColor: TagColor) {
@@ -283,6 +321,13 @@ class MapFragment : Fragment(), OnMapReadyCallback, GoogleMap.OnMarkerClickListe
TagColor.BK to R.drawable.black_pin_marker
)
+ private fun filteringMarkers() {
+ markers.forEach { marker ->
+ val place = places.find { it.alarmId.toString() == marker.snippet }
+ marker.isVisible = selectedTagColor == null || place?.tagColor == selectedTagColor
+ }
+ }
+
private fun updateMarkers() {
markers.forEach { marker ->
// 마커 아이콘을 변경하는 애니메이션
diff --git a/moti/app/src/main/res/drawable/spinner_background.xml b/moti/app/src/main/res/drawable/spinner_background.xml
new file mode 100644
index 0000000..535b5fa
--- /dev/null
+++ b/moti/app/src/main/res/drawable/spinner_background.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml b/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml
new file mode 100644
index 0000000..7b24473
--- /dev/null
+++ b/moti/app/src/main/res/layout/custom_spinner_dropdown_item.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/moti/app/src/main/res/layout/custom_spinner_item.xml b/moti/app/src/main/res/layout/custom_spinner_item.xml
new file mode 100644
index 0000000..45eac3c
--- /dev/null
+++ b/moti/app/src/main/res/layout/custom_spinner_item.xml
@@ -0,0 +1,10 @@
+
+
diff --git a/moti/app/src/main/res/layout/fragment_map.xml b/moti/app/src/main/res/layout/fragment_map.xml
index b0fc269..db1cedf 100644
--- a/moti/app/src/main/res/layout/fragment_map.xml
+++ b/moti/app/src/main/res/layout/fragment_map.xml
@@ -1,9 +1,9 @@
-
\ No newline at end of file
+
+
diff --git a/moti/app/src/main/res/values/strings.xml b/moti/app/src/main/res/values/strings.xml
index 3cce942..7b4bab4 100644
--- a/moti/app/src/main/res/values/strings.xml
+++ b/moti/app/src/main/res/values/strings.xml
@@ -16,4 +16,15 @@
silent alarm
공유 취소
완료
+
+ - 모든 색상
+ - 빨강
+ - 주황
+ - 노랑
+ - 초록
+ - 파랑
+ - 보라
+ - 검정
+
+
\ No newline at end of file