Skip to content

Commit 6e698e4

Browse files
committed
feat : MissionMap에서 person 현재 위치와 bus 현재 위치로 갈 수 있는 버튼 구현
- person은 TrackingMode 존재, bus는 TrackingMode 존재 안함. 그냥 버스의 현재위치로만 감.
1 parent 6f57988 commit 6e698e4

File tree

4 files changed

+63
-5
lines changed

4 files changed

+63
-5
lines changed

presentation/src/main/java/com/stop/ui/mission/MissionFragment.kt

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.skt.tmap.TMapPoint
1515
import com.stop.R
1616
import com.stop.databinding.FragmentMissionBinding
1717
import com.stop.model.Location
18+
import com.stop.ui.map.MapFragment
1819
import dagger.hilt.android.AndroidEntryPoint
1920

2021
@AndroidEntryPoint
@@ -45,6 +46,7 @@ class MissionFragment : Fragment(), MissionHandler {
4546
setDataBinding()
4647
initViewModel()
4748
initTMap()
49+
initView()
4850
setObserve()
4951
}
5052

@@ -96,6 +98,33 @@ class MissionFragment : Fragment(), MissionHandler {
9698
viewModel.countDownWith(LEFT_TIME)
9799
}
98100

101+
private fun initView() {
102+
binding.imageViewCompassMode.setOnClickListener {
103+
tMap.tMapView.isCompassMode = tMap.tMapView.isCompassMode.not()
104+
}
105+
106+
binding.imageViewPersonCurrentLocation.setOnClickListener {
107+
tMap.tMapView.setCenterPoint(
108+
viewModel.personCurrentLocation.latitude,
109+
viewModel.personCurrentLocation.longitude,
110+
true
111+
)
112+
113+
tMap.isTracking = true
114+
}
115+
116+
binding.imageViewBusCurrentLocation.setOnClickListener {
117+
tMap.tMapView.setCenterPoint(
118+
viewModel.busCurrentLocation.latitude,
119+
viewModel.busCurrentLocation.longitude,
120+
true
121+
)
122+
123+
tMap.isTracking = false
124+
}
125+
126+
}
127+
99128
private fun setObserve() {
100129
val shortAnimationDuration =
101130
resources.getInteger(android.R.integer.config_shortAnimTime)
@@ -130,7 +159,7 @@ class MissionFragment : Fragment(), MissionHandler {
130159

131160
private fun drawBusLocationLine() {
132161
viewModel.busNowLocationInfo.observe(viewLifecycleOwner) { nowLocation ->
133-
if (Location(nowLocation.latitude, nowLocation.longitude) != INIT_LOCATION) {
162+
if (beforeLocation != INIT_LOCATION) {
134163
tMap.drawMoveLine(
135164
TMapPoint(nowLocation.latitude, nowLocation.longitude),
136165
TMapPoint(beforeLocation.latitude, beforeLocation.longitude),
@@ -141,6 +170,8 @@ class MissionFragment : Fragment(), MissionHandler {
141170
}
142171
beforeLocation = Location(nowLocation.latitude, nowLocation.longitude)
143172

173+
viewModel.busCurrentLocation = beforeLocation
174+
144175
tMap.makeMarker(
145176
BUS_MARKER,
146177
BUS_MARKER_IMG,
@@ -163,6 +194,8 @@ class MissionFragment : Fragment(), MissionHandler {
163194
PERSON_LINE_COLOR
164195
)
165196
PERSON_LINE_NUM += 1
197+
198+
viewModel.personCurrentLocation = Location(nowLocation.latitude, nowLocation.longitude)
166199
}
167200

168201
override fun setOnEnableScrollWithZoomLevelListener() {
@@ -175,6 +208,7 @@ class MissionFragment : Fragment(), MissionHandler {
175208
}
176209

177210
companion object {
211+
178212
private const val DESTINATION = "구로3동현대아파트"
179213
private const val PLUS = "+"
180214
private const val MINUS = ""
@@ -194,5 +228,6 @@ class MissionFragment : Fragment(), MissionHandler {
194228

195229
private const val BUS_MARKER = "marker_bus_pin"
196230
private const val BUS_MARKER_IMG = R.drawable.ic_baseline_directions_bus_32
231+
197232
}
198233
}

presentation/src/main/java/com/stop/ui/mission/MissionViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.util.Log
44
import androidx.lifecycle.*
55
import com.stop.domain.model.nowlocation.BusInfoUseCaseItem
66
import com.stop.domain.usecase.nowlocation.GetBusNowLocationUseCase
7+
import com.stop.model.Location
78
import dagger.hilt.android.lifecycle.HiltViewModel
89
import kotlinx.coroutines.delay
910
import kotlinx.coroutines.launch
@@ -44,6 +45,9 @@ class MissionViewModel @Inject constructor(
4445
private val _busNowLocationInfo = MutableLiveData<BusInfoUseCaseItem>()
4546
val busNowLocationInfo: LiveData<BusInfoUseCaseItem> = _busNowLocationInfo
4647

48+
var personCurrentLocation = Location(0.0, 0.0)
49+
var busCurrentLocation = Location(0.0, 0.0)
50+
4751
init {
4852
getBusNowLocation()
4953
}
@@ -90,7 +94,7 @@ class MissionViewModel @Inject constructor(
9094
while (TIME_TEST < 60) {
9195
_busNowLocationInfo.value = getBusNowLocationUseCase.getBusNowLocation(BUS_540_ID)
9296
Log.d("MissionViewModel","busNowLocationInfo ${_busNowLocationInfo.value}")
93-
delay(1000)
97+
delay(5000)
9498
TIME_TEST += 1
9599
}
96100

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="50dp"
3+
android:height="50dp"
4+
android:tint="#FF5555"
5+
android:viewportWidth="24"
6+
android:viewportHeight="24">
7+
<path
8+
android:fillColor="@android:color/white"
9+
android:pathData="M4,16c0,0.88 0.39,1.67 1,2.22L5,20c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1h8v1c0,0.55 0.45,1 1,1h1c0.55,0 1,-0.45 1,-1v-1.78c0.61,-0.55 1,-1.34 1,-2.22L20,6c0,-3.5 -3.58,-4 -8,-4s-8,0.5 -8,4v10zM7.5,17c-0.83,0 -1.5,-0.67 -1.5,-1.5S6.67,14 7.5,14s1.5,0.67 1.5,1.5S8.33,17 7.5,17zM16.5,17c-0.83,0 -1.5,-0.67 -1.5,-1.5s0.67,-1.5 1.5,-1.5 1.5,0.67 1.5,1.5 -0.67,1.5 -1.5,1.5zM18,11L6,11L6,6h12v5z" />
10+
</vector>

presentation/src/main/res/layout/fragment_mission.xml

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,18 +81,27 @@
8181
android:layout_width="wrap_content"
8282
android:layout_height="wrap_content"
8383
android:layout_marginBottom="15dp"
84-
app:layout_constraintBottom_toTopOf="@id/image_view_current_location"
84+
app:layout_constraintBottom_toTopOf="@id/image_view_person_current_location"
8585
app:layout_constraintEnd_toEndOf="@id/guideline_end"
8686
app:srcCompat="@drawable/ic_compass" />
8787

8888
<ImageView
89-
android:id="@+id/image_view_current_location"
89+
android:id="@+id/image_view_person_current_location"
90+
android:layout_width="wrap_content"
91+
android:layout_height="wrap_content"
92+
android:layout_marginBottom="15dp"
93+
app:layout_constraintBottom_toTopOf="@id/image_view_bus_current_location"
94+
app:layout_constraintEnd_toEndOf="@id/guideline_end"
95+
app:srcCompat="@drawable/ic_location" />
96+
97+
<ImageView
98+
android:id="@+id/image_view_bus_current_location"
9099
android:layout_width="wrap_content"
91100
android:layout_height="wrap_content"
92101
android:layout_marginBottom="30dp"
93102
app:layout_constraintBottom_toBottomOf="parent"
94103
app:layout_constraintEnd_toEndOf="@id/guideline_end"
95-
app:srcCompat="@drawable/ic_location" />
104+
app:srcCompat="@drawable/ic_baseline_directions_bus_big" />
96105

97106
</androidx.constraintlayout.widget.ConstraintLayout>
98107
</layout>

0 commit comments

Comments
 (0)