aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2022-01-18 00:25:39 -0600
committerIván Ávalos <avalos@disroot.org>2022-01-18 00:25:39 -0600
commit5b39665ccdf318fe3b43fa76519484bc98764884 (patch)
treeec2fb49e372d1e9fdfcb4bfbf8f89c9b400886f4 /androidApp/src/main/java/mx/trackermap/TrackerMap/android/map
parent9325b6e0de41e8446bb6ce66915fb0c9fe0de4f3 (diff)
downloadetbsa-trackermap-mobile-5b39665ccdf318fe3b43fa76519484bc98764884.tar.gz
etbsa-trackermap-mobile-5b39665ccdf318fe3b43fa76519484bc98764884.tar.bz2
etbsa-trackermap-mobile-5b39665ccdf318fe3b43fa76519484bc98764884.zip
Improvements to zoom on UnitMapFragment.kt
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/map')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt36
1 files changed, 29 insertions, 7 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
index 768c0f0..ca59266 100644
--- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
+++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt
@@ -9,6 +9,7 @@ import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.commit
import androidx.fragment.app.viewModels
+import com.mousebird.maply.Point2d
import kotlin.time.ExperimentalTime
import kotlinx.coroutines.DelicateCoroutinesApi
import mx.trackermap.TrackerMap.android.R
@@ -30,7 +31,7 @@ class UnitMapFragment : Fragment() {
private val binding get() = _binding!!
private lateinit var mapFragment: MapWrapperFragment
- private var shouldCenter = true
+ private var shouldCenterMap = true
override fun onCreateView(
inflater: LayoutInflater,
@@ -60,7 +61,7 @@ class UnitMapFragment : Fragment() {
}
private fun initializeMap() {
- shouldCenter = true
+ shouldCenterMap = true
mapFragment = MapWrapperFragment.newInstance(
overlayMarginTop = resources.getDimensionPixelSize(R.dimen.nav_height)
)
@@ -78,10 +79,12 @@ class UnitMapFragment : Fragment() {
mapFragment.display(
units.toTypedArray(),
isReport = false,
- center = shouldCenter && unitsViewModel.selectedUnit.value == null
+ center = shouldCenterMap
+ && unitsViewModel.selectedUnit.value == null
+ && unitsViewModel.camera.value == null
)
if (units.isNotEmpty()) {
- shouldCenter = false
+ shouldCenterMap = false
}
}
@@ -91,7 +94,8 @@ class UnitMapFragment : Fragment() {
binding.mapUnitCard.visibility = if (selectedUnit == null) View.GONE else View.VISIBLE
selectedUnit?.let { unit ->
- if (unit.position == null || unit.position!!.latitude == null || unit.position!!.longitude == null) {
+ if (unit.position == null || unit.position?.latitude == null || unit.position?.longitude == null) {
+ binding.mapUnitCard.visibility = View.GONE
return@let
}
@@ -107,7 +111,14 @@ class UnitMapFragment : Fragment() {
), binding.mapUnitCard.context, unit, this::itemAction
)
- mapFragment.focusOn(unit.position!!.latitude!!, unit.position!!.longitude!!)
+ unitsViewModel.moveCamera(
+ UnitsViewModel.Camera(
+ point = Point2d(
+ unit.position!!.longitude!!, unit.position!!.latitude!!
+ ),
+ animated = true
+ )
+ )
}
}
@@ -115,13 +126,24 @@ class UnitMapFragment : Fragment() {
Log.d("UnitMapFragment", "Loading layer!")
mapFragment.updateLayer(type)
unitsViewModel.selectedUnit.value?.let {
- mapFragment.focusOn(it.position!!.latitude!!, it.position!!.longitude!!)
+ unitsViewModel.moveCamera(
+ UnitsViewModel.Camera(
+ point = Point2d(
+ it.position!!.longitude!!, it.position!!.latitude!!
+ ),
+ animated = false
+ )
+ )
}
}
unitsViewModel.geofences.observe(viewLifecycleOwner) { geofences ->
mapFragment.display(geofences.values.toTypedArray())
}
+
+ unitsViewModel.camera.observe(viewLifecycleOwner) { camera ->
+ mapFragment.focusOn(camera.point.y, camera.point.x)
+ }
}
private fun removeObservers() {