diff options
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/map')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt | 33 | ||||
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/UnitMapFragment.kt | 1 |
2 files changed, 34 insertions, 0 deletions
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 bd17013..106a2d9 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 @@ -8,7 +8,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.mousebird.maply.ComponentObject +import com.mousebird.maply.GlobeController import com.mousebird.maply.GlobeMapFragment +import com.mousebird.maply.MapController import com.mousebird.maply.MarkerInfo import com.mousebird.maply.Point2d import com.mousebird.maply.QuadImageLoader @@ -17,11 +19,14 @@ import com.mousebird.maply.RenderController import com.mousebird.maply.RenderControllerInterface import com.mousebird.maply.SamplingParams import com.mousebird.maply.ScreenMarker +import com.mousebird.maply.SelectedObject import com.mousebird.maply.SphericalMercatorCoordSystem import java.io.File import kotlinx.coroutines.DelicateCoroutinesApi import mx.trackermap.TrackerMap.android.R +typealias MarkerCallback = (Int?) -> Unit + @DelicateCoroutinesApi class MapFragment : GlobeMapFragment() { @@ -37,6 +42,8 @@ class MapFragment : GlobeMapFragment() { val type: MarkerType = MarkerType.DEFAULT ) + var markerCallback: MarkerCallback? = null + private val markers = mutableListOf<Pair<ScreenMarker, ComponentObject>>() override fun chooseDisplayType(): MapDisplayType { @@ -81,6 +88,31 @@ class MapFragment : GlobeMapFragment() { mapControl.setPositionGeo(longitude, latitude, zoom) } + override fun userDidSelect( + mapControl: MapController?, + selObjs: Array<out SelectedObject>?, + loc: Point2d?, + screenLoc: Point2d? + ) { + super.userDidSelect(mapControl, selObjs, loc, screenLoc) + + selObjs?.forEach { selectedObject -> + if (selectedObject.selObj is ScreenMarker) { + val screenMarker = selectedObject.selObj as ScreenMarker + val markerId = screenMarker.userObject as Int + Log.d("MapFragment", "Selected marker with id: $markerId") + + markerCallback?.let { it(markerId) } + } + } + } + + override fun userDidTap(mapControl: MapController?, loc: Point2d?, screenLoc: Point2d?) { + super.userDidTap(mapControl, loc, screenLoc) + + markerCallback?.let { it(null) } + } + fun clear() { mapControl.removeObjects( markers.map { it.second }, @@ -101,6 +133,7 @@ class MapFragment : GlobeMapFragment() { screenMarker.image = getIcon(marker.type) screenMarker.size = markerSize screenMarker.userObject = marker.id + screenMarker.selectable = true screenMarker } 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 4a0fab2..b8f79dd 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 @@ -40,6 +40,7 @@ class UnitMapFragment : Fragment() { private fun initializeMap() { unitsMapFragment = childFragmentManager.findFragmentById(R.id.unitsMap) as MapFragment + unitsMapFragment.markerCallback = unitsViewModel::selectUnitWith } private fun setupObservers() { |