aboutsummaryrefslogtreecommitdiff
path: root/androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt')
-rw-r--r--androidApp/src/main/java/mx/trackermap/TrackerMap/android/map/MapFragment.kt43
1 files changed, 30 insertions, 13 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 4915c49..2be9bb4 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
@@ -40,6 +40,7 @@ import mx.trackermap.TrackerMap.client.models.Geofence
import mx.trackermap.TrackerMap.client.models.MapLayer
import mx.trackermap.TrackerMap.client.models.Marker
import mx.trackermap.TrackerMap.utils.MapCalculus
+import kotlin.math.atan2
typealias SetupCallback = () -> Unit
typealias MarkerCallback = (Int?) -> Unit
@@ -186,11 +187,14 @@ open class MapFragment : GlobeMapFragment() {
val colorReport = ContextCompat.getColor(requireContext(), R.color.colorReport)
val colorLabel = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabel)
val colorLabelOutline = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabelOutline)
- val vectorWidth = context?.resources?.getDimensionPixelSize(R.dimen.report_label_width)?.toFloat()
+ val vectorWidth = requireContext().resources.getDimensionPixelSize(R.dimen.report_label_width).toFloat()
+
+ val markerSize = requireContext().resources.getDimensionPixelSize(R.dimen.marker_size).toDouble()
+ val vertexSize = requireContext().resources.getDimensionPixelSize(R.dimen.vertex_size).toDouble()
val vectorInfo = VectorInfo()
- vectorInfo.setColor(colorReport)
- vectorInfo.setLineWidth(vectorWidth ?: 20f)
+ vectorInfo.color = colorReport
+ vectorInfo.lineWidth = vectorWidth
val labelInfo = LabelInfo()
labelInfo.typeface = Typeface.DEFAULT_BOLD
@@ -210,17 +214,17 @@ open class MapFragment : GlobeMapFragment() {
when (i) {
0 -> getIcon(Marker.Type.REPORT_START)
markers.size - 1 -> getIcon(Marker.Type.REPORT_END)
- else -> getIcon(Marker.Type.REPORT_POSITION)
+ else -> getIconForDirection(points[i], points[i + 1])
}
} else getIcon(marker.type)
screenMarker.size = if (isReport) {
// For reports, position, start and end, size must be different
when (i) {
- 0 -> Point2d(144.0, 144.0)
- markers.size - 1 -> Point2d(144.0, 144.0)
- else -> Point2d(82.0, 82.0)
+ 0 -> Point2d(markerSize, markerSize)
+ markers.size - 1 -> Point2d(markerSize, markerSize)
+ else -> Point2d(vertexSize, vertexSize)
}
- } else Point2d(144.0, 144.0)
+ } else Point2d(markerSize, markerSize)
screenMarker.userObject = marker.id
screenMarker.selectable = true
@@ -292,11 +296,11 @@ open class MapFragment : GlobeMapFragment() {
val colorFill = ContextCompat.getColor(requireContext(), R.color.colorGeofence)
val colorLabel = ContextCompat.getColor(requireContext(), R.color.colorGeofenceLabel)
val colorLabelOutline = ContextCompat.getColor(requireContext(), R.color.colorMarkerLabelOutline)
- val vectorWidth = context?.resources?.getDimensionPixelSize(R.dimen.geofence_label_width)?.toFloat()
+ val vectorWidth = requireContext().resources.getDimensionPixelSize(R.dimen.geofence_label_width).toFloat()
val vectorInfo = VectorInfo()
- vectorInfo.setColor(colorFill)
- vectorInfo.setLineWidth(vectorWidth ?: 4f)
+ vectorInfo.color = colorFill
+ vectorInfo.lineWidth = vectorWidth
val labelInfo = LabelInfo()
labelInfo.typeface = Typeface.DEFAULT_BOLD
@@ -334,7 +338,7 @@ open class MapFragment : GlobeMapFragment() {
}
}
}
- } catch (e: SFException) {}
+ } catch (_: SFException) {}
}
}
@@ -427,9 +431,22 @@ open class MapFragment : GlobeMapFragment() {
}
private fun getIcon(markerType: Marker.Type): Bitmap {
+ val markerSize = requireContext().resources.getDimensionPixelSize(R.dimen.marker_size)
return ResourcesCompat.getDrawable(
requireActivity().resources,
MarkerTransformations.markerTypeToResourceId(markerType),
- requireActivity().theme)!!.toBitmap(144, 144)
+ requireActivity().theme)!!.toBitmap(markerSize, markerSize)
+ }
+
+ private fun getIconForDirection(a: Point2d, b: Point2d): Bitmap {
+ val vertexSize = requireContext().resources.getDimensionPixelSize(R.dimen.vertex_size)
+ val vectorX = b.x - a.x
+ val vectorY = b.y - a.y
+ val angleRad = atan2(vectorY, vectorX)
+ return ResourcesCompat.getDrawable(
+ requireActivity().resources,
+ MarkerTransformations.angleToResourceId(angleRad),
+ requireActivity().theme
+ )!!.toBitmap(vertexSize, vertexSize)
}
} \ No newline at end of file