Skip to content

Commit 43a1779

Browse files
bngshyonghanJu
andcommitted
✨ 러닝 결과 화면의 지도 세팅 구현
Co-authored-by: yonghanJu <[email protected]>
1 parent 6fb7d30 commit 43a1779

File tree

1 file changed

+38
-11
lines changed

1 file changed

+38
-11
lines changed

presentation/src/main/java/com/whyranoid/presentation/runningfinish/RunningFinishFragment.kt

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@ import androidx.fragment.app.viewModels
66
import androidx.navigation.fragment.findNavController
77
import com.naver.maps.geometry.LatLngBounds
88
import com.naver.maps.map.CameraUpdate
9+
import com.naver.maps.map.MapFragment
910
import com.naver.maps.map.NaverMap
1011
import com.naver.maps.map.OnMapReadyCallback
12+
import com.naver.maps.map.overlay.PathOverlay
1113
import com.whyranoid.presentation.R
1214
import com.whyranoid.presentation.base.BaseFragment
1315
import com.whyranoid.presentation.databinding.FragmentRunningFinishBinding
1416
import com.whyranoid.presentation.model.RunningHistoryUiModel
1517
import com.whyranoid.presentation.model.UiState
1618
import com.whyranoid.presentation.running.RunningFinishData
19+
import com.whyranoid.presentation.running.RunningPosition
1720
import com.whyranoid.presentation.running.toLatLng
1821
import com.whyranoid.presentation.util.pxdp.PxDpUtil
1922
import com.whyranoid.presentation.util.repeatWhenUiStarted
@@ -38,6 +41,7 @@ internal class RunningFinishFragment :
3841

3942
private fun initViews() {
4043
binding.vm = viewModel
44+
(childFragmentManager.findFragmentById(R.id.map_fragment) as? MapFragment)?.getMapAsync(this)
4145
}
4246

4347
private fun observeState() {
@@ -70,17 +74,8 @@ internal class RunningFinishFragment :
7074
private fun handleDataStateSuccess(runningFinishData: RunningFinishData) {
7175
binding.runningHistoryItem.runningHistory = runningFinishData.runningHistory
7276

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)
8479
}
8580

8681
private fun handleDataStateFailure(throwable: Throwable) {
@@ -106,4 +101,36 @@ internal class RunningFinishFragment :
106101
)
107102
}
108103
}
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+
}
109136
}

0 commit comments

Comments
 (0)