@@ -6,14 +6,17 @@ import androidx.fragment.app.viewModels
6
6
import androidx.navigation.fragment.findNavController
7
7
import com.naver.maps.geometry.LatLngBounds
8
8
import com.naver.maps.map.CameraUpdate
9
+ import com.naver.maps.map.MapFragment
9
10
import com.naver.maps.map.NaverMap
10
11
import com.naver.maps.map.OnMapReadyCallback
12
+ import com.naver.maps.map.overlay.PathOverlay
11
13
import com.whyranoid.presentation.R
12
14
import com.whyranoid.presentation.base.BaseFragment
13
15
import com.whyranoid.presentation.databinding.FragmentRunningFinishBinding
14
16
import com.whyranoid.presentation.model.RunningHistoryUiModel
15
17
import com.whyranoid.presentation.model.UiState
16
18
import com.whyranoid.presentation.running.RunningFinishData
19
+ import com.whyranoid.presentation.running.RunningPosition
17
20
import com.whyranoid.presentation.running.toLatLng
18
21
import com.whyranoid.presentation.util.pxdp.PxDpUtil
19
22
import com.whyranoid.presentation.util.repeatWhenUiStarted
@@ -38,6 +41,7 @@ internal class RunningFinishFragment :
38
41
39
42
private fun initViews () {
40
43
binding.vm = viewModel
44
+ (childFragmentManager.findFragmentById(R .id.map_fragment) as ? MapFragment )?.getMapAsync(this )
41
45
}
42
46
43
47
private fun observeState () {
@@ -70,17 +74,8 @@ internal class RunningFinishFragment :
70
74
private fun handleDataStateSuccess (runningFinishData : RunningFinishData ) {
71
75
binding.runningHistoryItem.runningHistory = runningFinishData.runningHistory
72
76
73
- naverMap?.let {
74
- val cameraUpdate = CameraUpdate .fitBounds(
75
- LatLngBounds .Builder ().include(
76
- runningFinishData.runningPositionList.flatten().map { position ->
77
- position.toLatLng()
78
- }
79
- ).build(),
80
- PxDpUtil .pxToDp(requireContext(), 20 )
81
- )
82
- it.moveCamera(cameraUpdate)
83
- }
77
+ moveCamera(runningFinishData)
78
+ updatePathsOverlay(runningFinishData.runningPositionList)
84
79
}
85
80
86
81
private fun handleDataStateFailure (throwable : Throwable ) {
@@ -106,4 +101,36 @@ internal class RunningFinishFragment :
106
101
)
107
102
}
108
103
}
104
+
105
+ private fun moveCamera (runningFinishData : RunningFinishData ) {
106
+ naverMap?.let {
107
+ val cameraUpdate = CameraUpdate .fitBounds(
108
+ LatLngBounds .Builder ().include(
109
+ runningFinishData.runningPositionList.flatten().map { position ->
110
+ position.toLatLng()
111
+ }
112
+ ).build(),
113
+ PxDpUtil .pxToDp(requireContext(), 200 )
114
+ )
115
+ it.moveCamera(cameraUpdate)
116
+ }
117
+ }
118
+
119
+ private fun updatePathsOverlay (runningPositionList : List <List <RunningPosition >>) {
120
+ val paths = List (runningPositionList.size) { provideMogakrunPath() }
121
+ for (index in runningPositionList.indices) {
122
+ if (runningPositionList[index].size >= 2 ) {
123
+ paths[index].coords =
124
+ runningPositionList[index].map { it.toLatLng() }
125
+ paths[index].map = naverMap
126
+ }
127
+ }
128
+ }
129
+
130
+ private fun provideMogakrunPath (): PathOverlay {
131
+ return PathOverlay ().apply {
132
+ color = requireContext().getColor(R .color.mogakrun_secondary_light)
133
+ width = 20
134
+ }
135
+ }
109
136
}
0 commit comments