Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import org.groundplatform.android.data.remote.RemoteDataStore
import org.groundplatform.android.data.sync.MutationSyncWorkManager
import org.groundplatform.android.data.uuid.OfflineUuidGenerator
import org.groundplatform.android.system.auth.AuthenticationManager
import org.groundplatform.android.ui.map.gms.GmsExt.contains
import org.groundplatform.domain.model.Role
import org.groundplatform.domain.model.Survey
import org.groundplatform.domain.model.geometry.Geometry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import org.groundplatform.android.R
import org.groundplatform.android.di.coroutines.IoDispatcher
import org.groundplatform.android.ui.map.gms.GmsExt.center
import org.groundplatform.domain.model.geometry.Coordinates
import org.groundplatform.domain.model.map.Bounds
import timber.log.Timber
Expand All @@ -51,7 +50,7 @@ constructor(
suspend fun getAreaName(bounds: Bounds): String {
// Get potential addresses of five sample points: the centroid and the four vertices of the
// bounding box.
val samplePoints = bounds.corners + bounds.center()
val samplePoints = bounds.corners + bounds.center
val samplePointAddresses =
withContext(ioDispatcher) { samplePoints.map { fetchAddressesBlocking(it) } }
val nameComponents =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,14 +56,13 @@ import org.groundplatform.android.ui.map.Feature
import org.groundplatform.android.ui.map.NewCameraPositionViaBounds
import org.groundplatform.android.ui.map.NewCameraPositionViaCoordinates
import org.groundplatform.android.ui.map.NewCameraPositionViaCoordinatesAndZoomLevel
import org.groundplatform.android.ui.map.gms.GmsExt.contains
import org.groundplatform.android.ui.map.gms.GmsExt.toBounds
import org.groundplatform.android.ui.map.gms.toCoordinates
import org.groundplatform.android.ui.util.getDefaultColor
import org.groundplatform.domain.model.Survey
import org.groundplatform.domain.model.geometry.Coordinates
import org.groundplatform.domain.model.imagery.TileSource
import org.groundplatform.domain.model.locationofinterest.LocationOfInterest
import org.groundplatform.domain.model.map.Bounds
import org.groundplatform.domain.model.map.CameraPosition
import org.groundplatform.domain.model.map.MapType
import org.groundplatform.domain.repository.LocationOfInterestRepositoryInterface
Expand Down Expand Up @@ -300,7 +299,9 @@ constructor(

// Compute the default viewport which includes all LOIs in the given survey.
val geometries = locationOfInterestRepository.getValidLois(survey).first().map { it.geometry }
return geometries.toBounds()?.let { NewCameraPositionViaBounds(bounds = it, padding = 100) }
return Bounds.fromGeometries(geometries)?.let {
NewCameraPositionViaBounds(bounds = it, padding = 100)
}
}

/** Called when the map camera is moved. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.map
import org.groundplatform.android.ui.datacollection.tasks.AbstractTaskMapFragment
import org.groundplatform.android.ui.map.Feature
import org.groundplatform.android.ui.map.gms.GmsExt.toBounds
import org.groundplatform.domain.model.map.Bounds
import org.groundplatform.domain.model.map.CameraPosition

@AndroidEntryPoint
Expand Down Expand Up @@ -58,7 +58,7 @@ class DrawAreaTaskMapFragment @Inject constructor() :
override fun setDefaultViewPort() {
val feature = taskViewModel.draftArea.value
val geometry = feature?.geometry ?: return
val bounds = listOf(geometry).toBounds() ?: return
val bounds = Bounds.fromGeometry(geometry) ?: return
moveToBounds(bounds, padding = 200, shouldAnimate = false)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,6 @@ import org.groundplatform.domain.model.submission.DrawAreaTaskIncompleteData
import org.groundplatform.domain.model.submission.TaskData
import org.groundplatform.domain.model.task.Task
import org.groundplatform.domain.usecases.user.GetUserSettingsUseCase
import org.groundplatform.domain.util.calculateShoelacePolygonArea
import org.groundplatform.ui.util.getFormattedArea
import org.jetbrains.annotations.VisibleForTesting
import timber.log.Timber
Expand Down Expand Up @@ -143,7 +142,7 @@ internal constructor(
updateVertices(taskData.lineString.coordinates)
}
is DrawAreaTaskData -> {
updateVertices(taskData.area.getShellCoordinates())
updateVertices(taskData.area.shell.coordinates)
try {
completePolygon()
} catch (e: IllegalStateException) {
Expand Down Expand Up @@ -280,9 +279,9 @@ internal constructor(
syncSessionState()

refreshMap()
setValue(DrawAreaTaskData(Polygon(LinearRing(session.vertices))))
val areaInSquareMeters = calculateShoelacePolygonArea(session.vertices)
_polygonArea.value = getFormattedArea(areaInSquareMeters, measurementUnits)
val polygon = Polygon(LinearRing(session.vertices))
setValue(DrawAreaTaskData(polygon))
_polygonArea.value = getFormattedArea(polygon.area(), measurementUnits)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ import org.groundplatform.android.ui.home.mapcontainer.jobs.DataCollectionEntryP
import org.groundplatform.android.ui.home.mapcontainer.jobs.JobMapComponentState
import org.groundplatform.android.ui.home.mapcontainer.jobs.SelectedLoiSheetData
import org.groundplatform.android.ui.map.Feature
import org.groundplatform.android.ui.map.gms.GmsExt.area
import org.groundplatform.android.ui.util.getDefaultColor
import org.groundplatform.domain.model.Survey
import org.groundplatform.domain.model.job.Job
Expand Down
72 changes: 0 additions & 72 deletions app/src/main/java/org/groundplatform/android/ui/map/gms/GmsExt.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import com.google.maps.android.collections.MarkerManager
import org.groundplatform.android.R
import org.groundplatform.android.ui.IconFactory
import org.groundplatform.android.ui.map.Feature
import org.groundplatform.android.ui.map.gms.GmsExt.toBounds
import org.groundplatform.android.ui.map.gms.toGoogleMapsObject
import org.groundplatform.domain.model.map.Bounds

Expand Down Expand Up @@ -86,7 +85,7 @@ class FeatureClusterManager(

/** Pan and zoom the camera to the bounds of features contained in the selected cluster. */
private fun onClusterClick(cluster: Cluster<FeatureClusterItem>): Boolean {
cluster.items.map { it.feature.geometry }.toBounds()?.let { animateCamera(it) }
Bounds.fromGeometries(cluster.items.map { it.feature.geometry })?.let { animateCamera(it) }
return true
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ import org.groundplatform.android.data.local.stores.LocalSubmissionStore
import org.groundplatform.android.data.local.stores.LocalSurveyStore
import org.groundplatform.android.data.local.stores.LocalUserStore
import org.groundplatform.android.proto.geometry
import org.groundplatform.android.ui.map.gms.GmsExt.getShellCoordinates
import org.groundplatform.domain.model.Survey
import org.groundplatform.domain.model.User
import org.groundplatform.domain.model.geometry.Coordinates
Expand Down Expand Up @@ -175,7 +174,7 @@ class LocalLocationOfInterestStoreTest : BaseHiltTest() {
val newLoi = loi.copy(geometry = Polygon(LinearRing(TEST_POLYGON_2)))
localLoiStore.merge(newLoi)
val newLoi2 = localLoiStore.getLocationOfInterest(TEST_SURVEY, FakeData.LOI_ID)
assertThat(newLoi2?.geometry?.getShellCoordinates()).isEqualTo(TEST_POLYGON_2)
assertThat((newLoi2?.geometry as? Polygon)?.shell?.coordinates).isEqualTo(TEST_POLYGON_2)
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package org.groundplatform.android.model.geometry
import com.google.common.truth.Truth.assertThat
import org.groundplatform.android.data.local.room.converter.toLocalDataStoreObject
import org.groundplatform.android.data.remote.firebase.schema.Path
import org.groundplatform.android.ui.map.gms.GmsExt.area
import org.groundplatform.domain.model.geometry.Coordinates
import org.groundplatform.domain.model.geometry.InvalidGeometryException
import org.groundplatform.domain.model.geometry.LineString
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import javax.inject.Inject
import kotlin.test.assertEquals
import org.groundplatform.android.BaseHiltTest
import org.groundplatform.android.di.SystemModule
import org.groundplatform.android.ui.map.gms.GmsExt.center
import org.groundplatform.domain.model.geometry.Coordinates
import org.groundplatform.domain.model.map.Bounds
import org.junit.Test
Expand Down Expand Up @@ -70,7 +69,7 @@ class GeocodingManagerTest(
private val NW = Coordinates(N, W)
private val SE = Coordinates(S, E)
private val BOUNDS = Bounds(SW, NE)
private val CENTER = BOUNDS.center()
private val CENTER = BOUNDS.center
private const val LOCALITY = "Marambaia"
private const val SUB_ADMIN_AREA = "Belém"
private const val ADMIN_AREA1 = "Parà"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ import org.groundplatform.android.ui.datacollection.components.ButtonAction
import org.groundplatform.android.ui.datacollection.tasks.TaskPositionInterface
import org.groundplatform.android.ui.datacollection.tasks.polygon.PolygonDrawingSession.Companion.DISTANCE_THRESHOLD_DP
import org.groundplatform.android.ui.map.Feature
import org.groundplatform.android.ui.map.gms.GmsExt.getShellCoordinates
import org.groundplatform.domain.model.geometry.Coordinates
import org.groundplatform.domain.model.geometry.LineString
import org.groundplatform.domain.model.geometry.LinearRing
Expand Down Expand Up @@ -654,9 +653,14 @@ class DrawAreaTaskViewModelTest : BaseHiltTest() {

val geometry = featureTestObserver.value()?.geometry
assertNotNull(geometry)
assertWithMessage(geometry.getShellCoordinates().toString())
.that(geometry.getShellCoordinates().size)
.isEqualTo(expectedVerticesCount)
val vertices =
when (geometry) {
is LineString -> geometry.coordinates
is LinearRing -> geometry.coordinates
is Polygon -> geometry.shell.coordinates
else -> emptyList()
}
assertWithMessage(vertices.toString()).that(vertices.size).isEqualTo(expectedVerticesCount)
assertThat(geometry)
.isInstanceOf(
when {
Expand Down
Loading
Loading