From bce64ef4f702c351d349881704d92f724e90239f Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 16 Jan 2022 23:34:36 -0600 Subject: Fixed initial zoom issue and refactored layers into MapLayer in shared module --- .../TrackerMap/android/map/MapFragment.kt | 24 ++++++++++++---------- .../TrackerMap/android/map/UnitMapFragment.kt | 12 ++++++----- .../TrackerMap/android/units/UnitsActivity.kt | 16 ++++++--------- .../TrackerMap/android/units/UnitsViewModel.kt | 8 ++++---- 4 files changed, 30 insertions(+), 30 deletions(-) (limited to 'androidApp/src/main/java/mx/trackermap') diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt index 6a80f95..06d3d97 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt @@ -61,12 +61,12 @@ class MapFragment : GlobeMapFragment() { Log.d("MapFragment", "controlHasStarted") if (tileInfo == null) { + val layer = MapLayer.defaultLayer // Load default map layer - val layer = resources.getStringArray(R.array.maps_streets_tile) - val tmpInfo = RemoteTileInfoNew(layer[0], layer[1].toInt(), layer[2].toInt()) - tileInfo = tileInfoSetCacheDir(layer[0], tmpInfo) + val info = RemoteTileInfoNew(layer.url, layer.minZoom, layer.maxZoom) + tileInfo = tileInfoSetCacheDir(layer.url, info) tileInfo?.let { - setZoomLimits(layer[1].toInt(), layer[2].toInt()) + setZoomLimits(layer.minZoom, layer.maxZoom) } } @@ -84,7 +84,7 @@ class MapFragment : GlobeMapFragment() { val latitude = 23.191 * Math.PI / 180 val longitude = -100.36 * Math.PI / 180 - mapControl.setPositionGeo(latitude, longitude, 0.4) + mapControl.setPositionGeo(longitude, latitude, 0.4) } override fun mapDidStopMoving( @@ -352,13 +352,15 @@ class MapFragment : GlobeMapFragment() { } } - fun updateTile(layer: MapLayer) { + fun updateLayer(layer: MapLayer.Type) { mapControl?.addPostSurfaceRunnable { - val tileInfo = RemoteTileInfoNew(layer.url, layer.minZoom, layer.maxZoom) - this.tileInfo = tileInfoSetCacheDir(layer.url, tileInfo) - this.tileInfo?.let { - loader?.changeTileInfo(it) - setZoomLimits(tileInfo.minZoom, tileInfo.maxZoom) + MapLayer.layers[layer]?.let { + val tileInfo = RemoteTileInfoNew(it.url, it.minZoom, it.maxZoom) + this.tileInfo = tileInfoSetCacheDir(it.url, tileInfo) + this.tileInfo?.let { t -> + loader?.changeTileInfo(t) + setZoomLimits(tileInfo.minZoom, tileInfo.maxZoom) + } } } } 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 e96945e..cb5edc3 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 @@ -15,6 +15,7 @@ import mx.trackermap.TrackerMap.android.shared.MarkerTransformations import mx.trackermap.TrackerMap.android.shared.UnitRenderData import mx.trackermap.TrackerMap.android.units.UnitFragment import mx.trackermap.TrackerMap.android.units.UnitsViewModel +import mx.trackermap.TrackerMap.client.models.MapLayer import mx.trackermap.TrackerMap.client.models.UnitInformation @DelicateCoroutinesApi @@ -55,8 +56,8 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment unitsMapFragment = childFragmentManager.findFragmentById(R.id.unitsMap) as MapFragment unitsMapFragment.markerCallback = unitsViewModel::selectUnitWith - val layer = resources.getStringArray(R.array.maps_streets_tile) - binding.attributionText.text = HtmlCompat.fromHtml(layer[3], 0) + val layer = MapLayer.defaultLayer + binding.attributionText.text = HtmlCompat.fromHtml(layer.attribution, 0) } private fun setupObservers() { @@ -98,13 +99,14 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment } } - unitsViewModel.mapLayer.observe(viewLifecycleOwner) { layer -> + unitsViewModel.mapLayerType.observe(viewLifecycleOwner) { type -> Log.d("UnitMapFragment", "Loading layer!") - unitsMapFragment.updateTile(layer) + unitsMapFragment.updateLayer(type) val selectedUnit = unitsViewModel.selectedUnit.value selectedUnit?.let { unitsMapFragment.focusOn(it.position!!.latitude!!, it.position!!.longitude!!) } + val layer = MapLayer.layers[type]!! binding.attributionText.text = HtmlCompat.fromHtml(layer.attribution, 0) } @@ -117,7 +119,7 @@ class UnitMapFragment(private val unitsViewModel: UnitsViewModel) : UnitFragment Log.d("UnitMapFragment", "removeObservers()") unitsViewModel.units.removeObservers(viewLifecycleOwner) unitsViewModel.selectedUnit.removeObservers(viewLifecycleOwner) - unitsViewModel.mapLayer.removeObservers(viewLifecycleOwner) + unitsViewModel.mapLayerType.removeObservers(viewLifecycleOwner) unitsViewModel.geofences.removeObservers(viewLifecycleOwner) } diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt index 1bbcb80..25169fe 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsActivity.kt @@ -91,16 +91,12 @@ class UnitsActivity : AppCompatActivity() { val popOver = PopupMenu(this, view) popOver.menuInflater.inflate(R.menu.map_layers, popOver.menu) popOver.setOnMenuItemClickListener { item -> - val layer = resources.getStringArray( - when (item.itemId) { - R.id.layerStreets -> R.array.maps_streets_tile - R.id.layerSatellite -> R.array.maps_satellite_tile - else -> R.array.maps_streets_tile - } - ) - unitsViewModel.setMapLayer(MapLayer( - layer[0], layer[1].toInt(), layer[2].toInt(), layer[3] - )) + val layer = when (item.itemId) { + R.id.layerStreets -> MapLayer.Type.STREETS + R.id.layerSatellite -> MapLayer.Type.SATELLITE + else -> MapLayer.Type.STREETS + } + unitsViewModel.setMapLayerType(layer) true } popOver.show() diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt index d3060f0..2d2994b 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/units/UnitsViewModel.kt @@ -29,14 +29,14 @@ class UnitsViewModel( private var _unitsDisplayMode = MutableLiveData(UnitsDisplayMode.MAP) private var _units = MutableLiveData>() private var _selectedUnit = MutableLiveData() - private var _mapLayer = MutableLiveData() + private var _mapLayerType = MutableLiveData() private var _geofences = MutableLiveData>() val searchQuery: LiveData get() = _searchQuery val unitsDisplayMode: LiveData get() = _unitsDisplayMode val units: LiveData> get() = _units val selectedUnit: LiveData get() = _selectedUnit - val mapLayer: LiveData get() = _mapLayer + val mapLayerType: LiveData get() = _mapLayerType val geofences: LiveData> get() = _geofences init { @@ -85,8 +85,8 @@ class UnitsViewModel( _unitsDisplayMode.postValue(displayMode) } - fun setMapLayer(layer: MapLayer) { - _mapLayer.postValue(layer) + fun setMapLayerType(layer: MapLayer.Type) { + _mapLayerType.postValue(layer) } fun toggleDisplayMode() { -- cgit v1.2.3