Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
b79b519
Replace icon used by CurrentLocationDelegate
seadowg Apr 7, 2026
566bc8d
Use CurrentLocationDelegate in SelectionMapFragment
seadowg Apr 8, 2026
b6cae1b
Fix problem with restarting LocationTracker
seadowg Apr 8, 2026
8858085
Fix fake
seadowg Apr 8, 2026
d70dd98
Convert test to Kotlin
seadowg Apr 9, 2026
9abbd11
Use LocationTracker in GeoPointMapActivity
seadowg Apr 9, 2026
f9afe65
Add custom assertions for current location
seadowg Apr 10, 2026
b9eab0c
Add current location tests for SelectionMapFragment
seadowg Apr 10, 2026
1a100bc
Show current location on GeoPointMapActivity
seadowg Apr 10, 2026
9390bd9
Don't return last fix in maps appearance
seadowg Apr 11, 2026
0591505
Make more details assertions about current location marker
seadowg Apr 11, 2026
4ec2f46
Test that marker doesn't get moved on location updates
seadowg Apr 12, 2026
b7a707c
Make sure markers don't obscure each other
seadowg Apr 12, 2026
368e508
Place marker places marker at the current location
seadowg Apr 13, 2026
3f6000c
Remove GPS code from
seadowg Apr 13, 2026
4be6fbd
Fix FakeMapFragment
seadowg Apr 13, 2026
e8e93ad
Update method references
seadowg Apr 13, 2026
1b3faf7
Make sure clear button doesn't remove current location
seadowg Apr 13, 2026
a4d6203
Increase size of current location marker
seadowg Apr 27, 2026
b43ffa6
Use marker icon
seadowg Apr 27, 2026
45485c4
Show current location behind other markers in Google Maps
seadowg Apr 28, 2026
1aaebf7
Update colors to further differentiate points/lines from current loca…
seadowg Apr 28, 2026
44202be
Enable place marker button after clearing
seadowg May 4, 2026
0801345
Fix clearFeatures for OSM
seadowg May 4, 2026
3d3fb52
Simplify MapFragment markers API
seadowg May 4, 2026
1fb1f3c
Fix update marker code for OSM
seadowg May 5, 2026
edf188d
Fix crash on rotate
seadowg May 6, 2026
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
12 changes: 0 additions & 12 deletions androidshared/src/main/res/color/color_primary_low_emphasis.xml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ package org.odk.collect.android.support
import android.os.Handler
import android.os.Looper
import androidx.fragment.app.Fragment
import org.odk.collect.maps.traces.LineDescription
import org.odk.collect.maps.MapFragment
import org.odk.collect.maps.MapPoint
import org.odk.collect.maps.circles.CircleDescription
import org.odk.collect.maps.traces.PolygonDescription
import org.odk.collect.maps.markers.MarkerDescription
import org.odk.collect.maps.markers.MarkerIconDescription
import org.odk.collect.maps.traces.LineDescription
import org.odk.collect.maps.traces.PolygonDescription

class FakeClickableMapFragment : Fragment(), MapFragment {

Expand Down Expand Up @@ -46,11 +46,6 @@ class FakeClickableMapFragment : Fragment(), MapFragment {
animate: Boolean
) {}

override fun addMarker(markerDescription: MarkerDescription): Int {
val id = idCounter++
return id
}

override fun updateMarker(
featureId: Int,
markerDescription: MarkerDescription
Expand All @@ -60,7 +55,7 @@ class FakeClickableMapFragment : Fragment(), MapFragment {

override fun addMarkers(markers: List<MarkerDescription>): List<Int> {
return markers.map {
addMarker(it)
idCounter++
}
}

Expand Down Expand Up @@ -97,6 +92,7 @@ class FakeClickableMapFragment : Fragment(), MapFragment {
}

override fun clearFeatures() {}
override fun clearFeatures(ids: List<Int>) {}

override fun setClickListener(listener: MapFragment.PointListener?) {}

Expand All @@ -108,16 +104,6 @@ class FakeClickableMapFragment : Fragment(), MapFragment {

override fun setDragEndListener(listener: MapFragment.FeatureListener?) {}

override fun setGpsLocationEnabled(enabled: Boolean) {}

override fun getGpsLocation(): MapPoint? {
return null
}

override fun setGpsLocationListener(listener: MapFragment.PointListener?) {}

override fun setRetainMockAccuracy(retainMockAccuracy: Boolean) {}

override fun hasCenter(): Boolean {
return false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,6 @@ class CollectGoogleMapsDependencyModule(
return appDependencyComponent.referenceLayerRepository()
}

override fun providesLocationClient(): LocationClient {
return appDependencyComponent.locationClient()
}

override fun providesSettingsProvider(): SettingsProvider {
return appDependencyComponent.settingsProvider()
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package org.odk.collect.android.injection.config

import org.odk.collect.android.geo.MapConfiguratorProvider
import org.odk.collect.location.LocationClient
import org.odk.collect.maps.MapConfigurator
import org.odk.collect.maps.layers.ReferenceLayerRepository
import org.odk.collect.osmdroid.OsmDroidDependencyModule
Expand All @@ -15,10 +14,6 @@ class CollectOsmDroidDependencyModule(
return appDependencyComponent.referenceLayerRepository()
}

override fun providesLocationClient(): LocationClient {
return appDependencyComponent.locationClient()
}

override fun providesMapConfigurator(): MapConfigurator {
return MapConfiguratorProvider.getConfigurator(
appDependencyComponent.settingsProvider().getUnprotectedSettings().getString(ProjectKeys.KEY_BASEMAP_SOURCE)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,6 @@ class NoOpMapFragment : Fragment(), MapFragment {
) {
}

override fun addMarker(markerDescription: MarkerDescription): Int {
TODO("Not yet implemented")
}

override fun updateMarker(
featureId: Int,
markerDescription: MarkerDescription
Expand Down Expand Up @@ -106,6 +102,9 @@ class NoOpMapFragment : Fragment(), MapFragment {
override fun clearFeatures() {
}

override fun clearFeatures(ids: List<Int>) {
}

override fun setClickListener(listener: MapFragment.PointListener?) {
}

Expand All @@ -118,19 +117,6 @@ class NoOpMapFragment : Fragment(), MapFragment {
override fun setDragEndListener(listener: MapFragment.FeatureListener?) {
}

override fun setGpsLocationEnabled(enabled: Boolean) {
}

override fun getGpsLocation(): MapPoint? {
TODO("Not yet implemented")
}

override fun setGpsLocationListener(listener: MapFragment.PointListener?) {
}

override fun setRetainMockAccuracy(retainMockAccuracy: Boolean) {
}

override fun hasCenter(): Boolean {
return false
}
Expand Down
26 changes: 26 additions & 0 deletions geo/src/main/java/org/odk/collect/geo/GeoUtils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,14 @@ package org.odk.collect.geo

import android.content.Context
import android.location.Location
import androidx.fragment.app.Fragment
import androidx.lifecycle.asLiveData
import org.javarosa.core.model.data.GeoPointData
import org.odk.collect.location.tracker.LocationTracker
import org.odk.collect.location.tracker.bindToLifecycle
import org.odk.collect.maps.MapFragment
import org.odk.collect.maps.MapPoint
import org.odk.collect.maps.circles.CurrentLocationDelegate
import org.odk.collect.shared.strings.StringUtils.removeEnd
import org.odk.collect.strings.R
import java.text.DecimalFormat
Expand Down Expand Up @@ -93,7 +99,27 @@ object GeoUtils {
return MapPoint(this.getPart(0), this.getPart(1), this.getPart(2), this.getPart(3))
}

@JvmStatic
fun org.odk.collect.location.Location.toMapPoint(): MapPoint {
return MapPoint(this.latitude, this.longitude, this.altitude, this.accuracy.toDouble())
}

@JvmStatic
@JvmOverloads
fun MapFragment.showCurrentLocation(
locationTracker: LocationTracker,
currentLocationDelegate: CurrentLocationDelegate,
retainMockAccuracy: Boolean = false,
afterUpdate: (MapPoint) -> Unit = {}
) {
val lifecycleOwner = this as Fragment
locationTracker.bindToLifecycle(lifecycleOwner, retainMockAccuracy)
locationTracker.getLocation().asLiveData().observe(lifecycleOwner) {
if (it != null) {
val mapPoint = it.toMapPoint()
currentLocationDelegate.update(this, mapPoint)
afterUpdate(mapPoint)
}
}
}
}
Loading