Display grazing area from detail response.
This commit is contained in:
parent
48a6d1fff1
commit
efb3921dc2
|
@ -3,6 +3,7 @@ package com.danilafe.fencelessgrazing.ui.activities
|
|||
import android.graphics.Color
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import com.android.volley.RequestQueue
|
||||
|
@ -12,6 +13,7 @@ import com.danilafe.fencelessgrazing.R
|
|||
import com.danilafe.fencelessgrazing.model.Polygon
|
||||
import com.danilafe.fencelessgrazing.requests.authenticated.CollarDetailRequest
|
||||
import com.danilafe.fencelessgrazing.requests.authenticated.CollarHistoryRequest
|
||||
import com.danilafe.fencelessgrazing.ui.components.GrazingPolygon
|
||||
import org.osmdroid.util.GeoPoint
|
||||
import org.osmdroid.views.MapView
|
||||
import org.osmdroid.views.overlay.Marker
|
||||
|
@ -81,7 +83,7 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
* to display the valid grazing area for the collar; its vertices
|
||||
* are updated whenever the [boundingBox] property is changed.
|
||||
*/
|
||||
private lateinit var mapPolygon: org.osmdroid.views.overlay.Polygon
|
||||
private lateinit var mapPolygon: GrazingPolygon
|
||||
|
||||
/**
|
||||
* The [Polygon] that represents the collar's valid grazing area.
|
||||
|
@ -133,10 +135,9 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
|
||||
map = findViewById(R.id.detailMap)
|
||||
map.controller.setZoom(9.5)
|
||||
mapPolygon = org.osmdroid.views.overlay.Polygon(map)
|
||||
mapPolygon = GrazingPolygon(map)
|
||||
mapMarker = Marker(map)
|
||||
mapPolyline = Polyline(map)
|
||||
configureMapPolygon()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
|
@ -187,6 +188,7 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
Response.Listener {
|
||||
collarName.text = it.name
|
||||
collarStimulus.text = getString(R.string.collarSummaryStimulus, it.stimulus)
|
||||
boundingBox = if (it.boundary.size >= 3) Polygon(it.boundary) else null
|
||||
},
|
||||
Response.ErrorListener {
|
||||
Toast.makeText(this, "Failed to retrieve details of collar", Toast.LENGTH_SHORT)
|
||||
|
@ -197,17 +199,6 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
queue.add(detailRequest)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets [mapPolygon]'s color, borders, and other relevant settings.
|
||||
*/
|
||||
private fun configureMapPolygon() {
|
||||
mapPolygon.fillPaint.color = Color.parseColor("#32a852")
|
||||
mapPolygon.fillPaint.alpha = 127
|
||||
mapPolygon.outlinePaint.color = Color.parseColor("#227539")
|
||||
mapPolygon.outlinePaint.strokeWidth = 0.0f
|
||||
mapPolygon.title = "Valid Grazing Area"
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a new location history of the animal, configures
|
||||
* updates the [map] to include the relevant elements (such as the animal's
|
||||
|
@ -244,7 +235,7 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
*/
|
||||
private fun updateBoundingBox(oldValue: Polygon?, polygon: Polygon) {
|
||||
if(oldValue == null) map.overlays.add(mapPolygon)
|
||||
val points = polygon.dataPoints.map { GeoPoint(it.longitude.toDouble(), it.latitude.toDouble()) }
|
||||
val points = polygon.dataPoints.map { GeoPoint(it.latitude.toDouble(), it.longitude.toDouble()) }
|
||||
val polygonPoints = points.toMutableList()
|
||||
polygonPoints.add(polygonPoints[0])
|
||||
mapPolygon.points = polygonPoints
|
||||
|
@ -256,6 +247,7 @@ class CollarDetailActivity : AppCompatActivity() {
|
|||
* the [mapPolygon] from the [map].
|
||||
*/
|
||||
private fun clearBoundingBox() {
|
||||
Log.d("FencelessGrazing", "Clearing...")
|
||||
map.overlays.remove(mapPolygon)
|
||||
map.invalidate()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
package com.danilafe.fencelessgrazing.ui.components
|
||||
|
||||
import android.graphics.Color
|
||||
import org.osmdroid.views.MapView
|
||||
import org.osmdroid.views.overlay.Polygon
|
||||
|
||||
class GrazingPolygon(map: MapView) : Polygon(map) {
|
||||
init {
|
||||
fillPaint.color = Color.parseColor("#32a852")
|
||||
fillPaint.alpha = 127
|
||||
outlinePaint.color = Color.parseColor("#227539")
|
||||
outlinePaint.strokeWidth = 0.0f
|
||||
title = "Valid Grazing Area"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user