Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions app/src/main/java/com/app/replace/ui/main/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import com.naver.maps.map.MapFragment
import com.naver.maps.map.NaverMap
import com.naver.maps.map.OnMapReadyCallback
import com.naver.maps.map.overlay.Marker
import com.naver.maps.map.overlay.Overlay
import com.naver.maps.map.overlay.OverlayImage
import com.naver.maps.map.util.FusedLocationSource
import dagger.hilt.android.AndroidEntryPoint
Expand All @@ -50,6 +51,7 @@ class HomeFragment : Fragment(), OnMapReadyCallback {
private var bottomNavigationListener: BottomNavigationListener? = null

private var isUpdate: Boolean = false
private var isMarkerClick: Boolean = false

private val currentMarker by lazy {
createMarker()
Expand Down Expand Up @@ -139,7 +141,9 @@ class HomeFragment : Fragment(), OnMapReadyCallback {
ourDiaryAdapter.submitList(it.coupleDiaries)
allDiaryAdapter.submitList(it.allDiaries)
setBottomSheetBehaviorState()
setCurrentMarker()
if (!isMarkerClick) {
setCurrentMarker()
}
}

viewModel.event.observe(viewLifecycleOwner) {
Expand Down Expand Up @@ -256,6 +260,7 @@ class HomeFragment : Fragment(), OnMapReadyCallback {
private fun NaverMap.onMapClick() {
this.setOnMapClickListener { _, latLng ->
currentLatLng = latLng
isMarkerClick = false
viewModel.getPlaceInfo(latLng.longitude.toString(), latLng.latitude.toString())
isUpdate = false
setCameraPosition(latLng)
Expand All @@ -269,18 +274,30 @@ class HomeFragment : Fragment(), OnMapReadyCallback {

private fun setDiariesMarker(diaryCoordinates: List<CoordinateUiModel>) {
val markers = arrayOfNulls<Marker>(diaryCoordinates.size)
diaryCoordinates.forEachIndexed { index, it ->
diaryCoordinates.forEachIndexed { index, coordinate ->
markers[index] = Marker()
markers[index]?.icon = OverlayImage.fromResource(R.drawable.ic_diary_marker)
markers[index]?.position = LatLng(it.latitude.toDouble(), it.longitude.toDouble())
markers[index]?.map = naverMap
configureMarker(markers[index], coordinate)
}
}

private fun configureMarker(marker: Marker?, coordinate: CoordinateUiModel) {
marker?.icon = OverlayImage.fromResource(R.drawable.ic_diary_marker)
marker?.position = LatLng(coordinate.latitude.toDouble(), coordinate.longitude.toDouble())
marker?.map = naverMap
marker?.isIconPerspectiveEnabled = true
marker?.onClickListener = Overlay.OnClickListener {
isMarkerClick = true
currentMarker.map = null
viewModel.getPlaceInfo(coordinate.longitude, coordinate.latitude)
true
}
}

private fun createMarker(): Marker {
val marker = Marker()
marker.map = null
marker.icon = OverlayImage.fromResource(R.drawable.ic_place_marker)
marker.isIconPerspectiveEnabled = true
return marker
}

Expand Down