Added textViews to the WorldMap to display current satellite position and range

pull/30/head
Arty Bishop 2020-01-18 12:28:24 +00:00
rodzic 6dff3d5510
commit 96939794b5
7 zmienionych plików z 79 dodań i 10 usunięć

Wyświetl plik

@ -26,6 +26,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.Fragment
@ -49,6 +50,9 @@ class MapViewFragment : Fragment() {
private lateinit var mapFrame: FrameLayout
private lateinit var mapFab: FloatingActionButton
private lateinit var mapView: MapView
private lateinit var mapLat: TextView
private lateinit var mapLon: TextView
private lateinit var mapRng: TextView
private lateinit var predictor: PassPredictor
private lateinit var selectedSat: TLE
private lateinit var gsp: GroundStationPosition
@ -79,6 +83,9 @@ class MapViewFragment : Fragment() {
private fun findViews(view: View) {
mapFrame = view.findViewById(R.id.map_frame)
mapFab = view.findViewById(R.id.map_fab)
mapLat = view.findViewById(R.id.map_lat)
mapLon = view.findViewById(R.id.map_lon)
mapRng = view.findViewById(R.id.map_rng)
}
private fun setupComponents() {
@ -170,6 +177,7 @@ class MapViewFragment : Fragment() {
val currentTime = getDateFor(System.currentTimeMillis())
val orbitalPeriod = (24 * 60 / selectedSat.meanmo).toInt()
val positions = predictor.getPositions(currentTime, 60, 0, orbitalPeriod * 3)
setTextViewsToSelectedSatPos(positions[0])
drawGroundTrack(canvas, degLon, degLat, positions)
satPassList.forEach {
drawSat(canvas, degLon, degLat, it.tle, it.predictor, currentTime)
@ -190,6 +198,18 @@ class MapViewFragment : Fragment() {
)
}
private fun setTextViewsToSelectedSatPos(position: SatPos) {
var lon = rad2Deg(position.longitude).toFloat()
val lat = rad2Deg(position.latitude).toFloat()
val rng = position.range
if (lon > 180f) lon -= 360f
mapLat.text = String.format(context.getString(R.string.pattern_value_lat), lat)
mapLon.text = String.format(context.getString(R.string.pattern_value_lon), lon)
mapRng.text = String.format(context.getString(R.string.pattern_value_rng), rng)
}
private fun drawGroundTrack(
canvas: Canvas,
degLon: Float,

Wyświetl plik

@ -170,17 +170,17 @@ class PolarViewFragment : Fragment() {
private fun setPassText() {
satPos = satPass.predictor.getSatPos(Date())
polarAzimuth.text = String.format(
context.getString(R.string.pattern_polar_azimuth),
context.getString(R.string.pattern_value_az),
rad2Deg(satPos.azimuth)
)
polarElevation.text = String.format(
context.getString(R.string.pattern_polar_elev),
context.getString(R.string.pattern_value_el),
rad2Deg(satPos.elevation)
)
polarRange.text =
String.format(context.getString(R.string.pattern_polar_range), satPos.range)
String.format(context.getString(R.string.pattern_value_rng), satPos.range)
polarAltitude.text =
String.format(context.getString(R.string.pattern_polar_alt), satPos.altitude)
String.format(context.getString(R.string.pattern_value_alt), satPos.altitude)
}
private fun drawRadarView(cvs: Canvas) {

Wyświetl plik

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/backgroundMapText" />
<corners android:radius="8dp" />
</shape>

Wyświetl plik

@ -21,9 +21,37 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|start"
android:layout_marginStart="16dp"
android:layout_marginBottom="16dp"
android:layout_marginStart="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_sat_asc_right" />
<TextView
android:id="@+id/map_lat"
style="@style/MapText"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:text="@string/pattern_value_lat"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/map_lon"
style="@style/MapText"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"
android:text="@string/pattern_value_lon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/map_rng"
style="@style/MapText"
android:layout_marginEnd="4dp"
android:layout_marginBottom="4dp"
android:text="@string/pattern_value_rng"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

Wyświetl plik

@ -4,6 +4,7 @@
<color name="themeLight">#C0C0C0</color>
<color name="themeDark">#191919</color>
<color name="backgroundDark">#080808</color>
<color name="backgroundMapText">#CC000000</color>
<color name="satTrack">#D50000</color>
<color name="satFootprint">#FFE082</color>
</resources>

Wyświetl plik

@ -99,10 +99,12 @@
<string name="pattern_pass_maxEl">MaxEl: %.1f°</string>
<string name="pattern_pass_azimuth">Az: %2d° -> %2d°</string>
<string name="pattern_polar_azimuth">Azimuth: %.1f°</string>
<string name="pattern_polar_elev">Elevation: %.1f°</string>
<string name="pattern_polar_range">Range: %.0f km</string>
<string name="pattern_polar_alt">Altitude: %.0f km</string>
<string name="pattern_value_az">Az: %.1f°</string>
<string name="pattern_value_el">El: %.1f°</string>
<string name="pattern_value_lat">Lat: %.1f°</string>
<string name="pattern_value_lon">Lon: %.1f°</string>
<string name="pattern_value_rng">Rng: %.0f km</string>
<string name="pattern_value_alt">Alt: %.0f km</string>
<string name="pattern_trans_mode">Mode: %s</string>
<string name="pattern_trans_invert">Inverted: %s</string>

Wyświetl plik

@ -93,4 +93,16 @@
<item name="android:textSize">15sp</item>
</style>
<style name="MapText">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:textColor">@color/themeAccent</item>
<item name="android:background">@drawable/bg_round_borders</item>
<item name="android:textSize">15sp</item>
<item name="android:paddingStart">6dp</item>
<item name="android:paddingEnd">6dp</item>
<item name="android:paddingTop">2dp</item>
<item name="android:paddingBottom">2dp</item>
</style>
</resources>