kopia lustrzana https://github.com/rt-bishop/Look4Sat
Added some satellite info to the map overlay
rodzic
e37ac8e2ba
commit
f96275a5bb
|
|
@ -110,7 +110,7 @@ class SatPassAdapter(
|
|||
binding.passLeoSatId.text =
|
||||
String.format(context.getString(R.string.pass_satId), satPass.tle.catnum)
|
||||
binding.passLeoMaxEl.text =
|
||||
String.format(context.getString(R.string.pass_maxEl), satPass.pass.maxEl)
|
||||
String.format(context.getString(R.string.pat_elevation), satPass.pass.maxEl)
|
||||
binding.passLeoAosAz.text =
|
||||
String.format(context.getString(R.string.pass_aos_az), satPass.pass.aosAzimuth)
|
||||
binding.passLeoLosAz.text =
|
||||
|
|
|
|||
|
|
@ -159,6 +159,7 @@ class MapOsmFragment : Fragment(R.layout.fragment_map_osm) {
|
|||
dateNow.time = System.currentTimeMillis()
|
||||
binding.mapView.overlays[3] = getSatIcons(passList)
|
||||
binding.mapView.overlays[2] = getSatFootprint(selectedPass)
|
||||
setSatInfo(selectedPass)
|
||||
binding.mapView.invalidate()
|
||||
delay(3000)
|
||||
}
|
||||
|
|
@ -210,19 +211,34 @@ class MapOsmFragment : Fragment(R.layout.fragment_map_osm) {
|
|||
|
||||
private fun setSatInfo(satPass: SatPass) {
|
||||
val satPos = satPass.predictor.getSatPos(dateNow)
|
||||
val satRng = satPos.range
|
||||
val satAlt = satPos.altitude
|
||||
val satVel = getSatVelocity(satAlt)
|
||||
val satLat = Math.toDegrees(satPos.latitude).toFloat()
|
||||
var satLon = Math.toDegrees(satPos.longitude).toFloat()
|
||||
if (satLon > 180f) satLon -= 360f
|
||||
|
||||
binding.idName.text =
|
||||
String.format(
|
||||
mainActivity.getString(R.string.pat_osm_idName),
|
||||
satPass.tle.catnum,
|
||||
satPass.tle.name
|
||||
)
|
||||
binding.altitude.text =
|
||||
String.format(mainActivity.getString(R.string.pat_altitude), satPos.altitude)
|
||||
binding.distance.text =
|
||||
String.format(mainActivity.getString(R.string.pat_distance), satPos.range)
|
||||
binding.velocity.text =
|
||||
String.format(
|
||||
mainActivity.getString(R.string.pat_osm_vel),
|
||||
getSatVelocity(satPos.altitude)
|
||||
)
|
||||
binding.latLon.text =
|
||||
String.format(mainActivity.getString(R.string.pat_osm_latLon), satLat, satLon)
|
||||
}
|
||||
|
||||
private fun getSatVelocity(satAlt: Double): Double {
|
||||
val earthG = 6.674 * 10.0.pow(-11)
|
||||
val earthM = 5.98 * 10.0.pow(24)
|
||||
val orbitRadius = 6.37 * 10.0.pow(6) + satAlt * 10.0.pow(3)
|
||||
return sqrt(earthG * earthM / orbitRadius) / 1000
|
||||
val radius = 6.37 * 10.0.pow(6) + satAlt * 10.0.pow(3)
|
||||
return sqrt(earthG * earthM / radius) / 1000
|
||||
}
|
||||
|
||||
private fun getSatTrack(pass: SatPass): Overlay {
|
||||
|
|
|
|||
|
|
@ -29,45 +29,43 @@
|
|||
android:id="@+id/idName"
|
||||
style="@style/MapOsmSatInfo.Name"
|
||||
android:layout_marginTop="4dp"
|
||||
android:text="@string/placeholder"
|
||||
android:text="@string/pat_osm_idName"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/alt"
|
||||
android:id="@+id/altitude"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:layout_marginStart="8dp"
|
||||
android:text="@string/placeholder"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/speed"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:layout_marginStart="4dp"
|
||||
android:text="@string/pat_altitude"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/idName" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/distance"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/pat_distance"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/altitude"
|
||||
app:layout_constraintTop_toBottomOf="@+id/altitude" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/velocity"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:layout_marginEnd="4dp"
|
||||
android:text="@string/pat_osm_vel"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/altitude"
|
||||
app:layout_constraintEnd_toEndOf="parent" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/latLon"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:text="@string/placeholder"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/range"
|
||||
app:layout_constraintStart_toStartOf="@+id/alt" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/speed"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:text="@string/placeholder"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/idName" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/range"
|
||||
style="@style/MapOsmSatInfo"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/placeholder"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="@+id/speed"
|
||||
app:layout_constraintTop_toBottomOf="@+id/speed" />
|
||||
android:text="@string/pat_osm_latLon"
|
||||
app:layout_constraintBaseline_toBaselineOf="@+id/distance"
|
||||
app:layout_constraintEnd_toEndOf="@+id/velocity" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
android:id="@+id/pass_leo_maxEl"
|
||||
style="@style/CardPassText"
|
||||
android:layout_marginTop="2dp"
|
||||
android:text="@string/pass_maxEl"
|
||||
android:text="@string/pat_elevation"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
|
|
|||
|
|
@ -77,15 +77,17 @@
|
|||
<string name="err_no_sat_selected">Не выбраны спутники</string>
|
||||
|
||||
<string name="pass_aos_az">НПС — %2d°</string>
|
||||
<string name="pass_maxEl">Элев.: %.1f°</string>
|
||||
<string name="pass_los_az">%2d° — КПС</string>
|
||||
|
||||
<string name="pat_azimuth">Аз.: %.1f°</string>
|
||||
<string name="pat_elevation">Элев.: %.1f°</string>
|
||||
<string name="pat_latitude">Шир.: %.1f°</string>
|
||||
<string name="pat_longitude">Дол.: %.1f°</string>
|
||||
<string name="pat_distance">Дист.: %.0fкм</string>
|
||||
<string name="pat_altitude">Выс.: %.0fкм</string>
|
||||
<string name="pat_azimuth">Аз: %.1f°</string>
|
||||
<string name="pat_elevation">Элев: %.1f°</string>
|
||||
<string name="pat_latitude">Шир: %.1f°</string>
|
||||
<string name="pat_longitude">Дол: %.1f°</string>
|
||||
<string name="pat_distance">Дист: %.0fкм</string>
|
||||
<string name="pat_altitude">Выс: %.0fкм</string>
|
||||
|
||||
<string name="pat_osm_latLon">Шир: %.1f°, Дол: %.1f°</string>
|
||||
<string name="pat_osm_vel">Скор: %.2f км/с</string>
|
||||
|
||||
<string name="trans_mode">Модуляция: %s</string>
|
||||
<string name="trans_inverted">Инверсия: %s</string>
|
||||
|
|
|
|||
|
|
@ -91,7 +91,6 @@
|
|||
<string name="pass_satName" translatable="false">%s</string>
|
||||
<string name="pass_satId" translatable="false">ID: %d</string>
|
||||
<string name="pass_aos_az">AOS — %2d°</string>
|
||||
<string name="pass_maxEl">MaxElev: %.1f°</string>
|
||||
<string name="pass_los_az">%2d° — LOS</string>
|
||||
<string name="pass_dateTime" translatable="false">dd MMM @ HH:mm:ss</string>
|
||||
|
||||
|
|
@ -104,6 +103,10 @@
|
|||
<string name="pat_altitude">Alt: %.0f km</string>
|
||||
<string name="pat_timer" translatable="false">%02d:%02d:%02d</string>
|
||||
|
||||
<string name="pat_osm_idName" translatable="false">%s / %s</string>
|
||||
<string name="pat_osm_latLon">Lat: %.1f°, Lon: %.1f°</string>
|
||||
<string name="pat_osm_vel">Vel: %.2f km/s</string>
|
||||
|
||||
<string name="trans_description" translatable="false">%s</string>
|
||||
<string name="trans_mode">Mode: %s</string>
|
||||
<string name="trans_inverted">Inverted: %s</string>
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@
|
|||
</style>
|
||||
|
||||
<style name="MapOsmSatInfo.Name">
|
||||
<item name="android:textSize">18sp</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
</style>
|
||||
|
||||
<style name="MapOsmCopyright">
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue