mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Fixed satellite track show issue, minor Map fixes
This commit is contained in:
1 parent
6f8db0b9b1
commit
a8b43ca3fb
4 files changed
+6
-18
No files matched your search
@@ -32,9 +32,6 @@ interface SatelliteDao {
|
|||||||
@Query("SELECT catNum, name, isSelected FROM entries ORDER BY name ASC")
|
@Query("SELECT catNum, name, isSelected FROM entries ORDER BY name ASC")
|
||||||
fun getAllSatItems(): Flow<List<SatItem>>
|
fun getAllSatItems(): Flow<List<SatItem>>
|
||||||
|
|
||||||
@Query("SELECT tle FROM entries WHERE isSelected = 1")
|
|
||||||
fun getSelectedSatellitesFlow(): Flow<List<Satellite>>
|
|
||||||
|
|
||||||
@Query("SELECT * FROM transmitters WHERE isAlive = 1 ORDER BY mode ASC")
|
@Query("SELECT * FROM transmitters WHERE isAlive = 1 ORDER BY mode ASC")
|
||||||
fun getAllTransmitters(): Flow<List<SatTrans>>
|
fun getAllTransmitters(): Flow<List<SatTrans>>
|
||||||
|
|
||||||
|
|||||||
@@ -52,10 +52,6 @@ class SatelliteRepo @Inject constructor(
|
|||||||
return satelliteDao.getAllSatItems()
|
return satelliteDao.getAllSatItems()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSelectedSatellitesFlow(): Flow<List<Satellite>> {
|
|
||||||
return satelliteDao.getSelectedSatellitesFlow()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getAllTransmitters(): Flow<List<SatTrans>> {
|
fun getAllTransmitters(): Flow<List<SatTrans>> {
|
||||||
return satelliteDao.getAllTransmitters()
|
return satelliteDao.getAllTransmitters()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import com.rtbishop.look4sat.data.repository.SatelliteRepo
|
|||||||
import com.rtbishop.look4sat.utility.*
|
import com.rtbishop.look4sat.utility.*
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.collect
|
|
||||||
import org.osmdroid.util.GeoPoint
|
import org.osmdroid.util.GeoPoint
|
||||||
import org.osmdroid.views.overlay.FolderOverlay
|
import org.osmdroid.views.overlay.FolderOverlay
|
||||||
import org.osmdroid.views.overlay.Overlay
|
import org.osmdroid.views.overlay.Overlay
|
||||||
@@ -77,11 +76,10 @@ class MapViewModel @Inject constructor(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
satelliteRepo.getSelectedSatellitesFlow().collect { satellites ->
|
val satellites = satelliteRepo.getSelectedSatellites()
|
||||||
if (satellites.isNotEmpty()) {
|
if (satellites.isNotEmpty()) {
|
||||||
filteredSats = satellites
|
filteredSats = satellites
|
||||||
selectedSat = satellites.first()
|
selectedSat = satellites.first()
|
||||||
try {
|
|
||||||
while (true) {
|
while (true) {
|
||||||
ensureActive()
|
ensureActive()
|
||||||
dateNow.time = System.currentTimeMillis()
|
dateNow.time = System.currentTimeMillis()
|
||||||
@@ -89,10 +87,6 @@ class MapViewModel @Inject constructor(
|
|||||||
_satMarkers.value = getDataForAllSatellites(filteredSats)
|
_satMarkers.value = getDataForAllSatellites(filteredSats)
|
||||||
delay(2000)
|
delay(2000)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,7 +141,7 @@ class MapViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun getSatTrack(satellite: Satellite): Overlay {
|
private fun getSatTrack(satellite: Satellite): Overlay {
|
||||||
val positions = satellite.getPredictor(gsp).getPositions(dateNow, 20, 5, 2)
|
val positions = satellite.getPredictor(gsp).getPositions(dateNow, 15, 3, 3.2)
|
||||||
val trackOverlay = FolderOverlay()
|
val trackOverlay = FolderOverlay()
|
||||||
val trackPoints = mutableListOf<GeoPoint>()
|
val trackPoints = mutableListOf<GeoPoint>()
|
||||||
var oldLon = 0.0
|
var oldLon = 0.0
|
||||||
|
|||||||
@@ -42,14 +42,15 @@ class PassPredictor(private val satellite: Satellite, private val qth: GroundSta
|
|||||||
return satellite.getPosition(qth, date)
|
return satellite.getPosition(qth, date)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPositions(refDate: Date, stepSeconds: Int, minBefore: Int, minAfter: Int): List<SatPos> {
|
fun getPositions(refDate: Date, stepSec: Int, minBefore: Int, orbits: Double): List<SatPos> {
|
||||||
val positions = mutableListOf<SatPos>()
|
val positions = mutableListOf<SatPos>()
|
||||||
val endDate = Date(refDate.time + minAfter * 60L * 1000L)
|
val orbitalPeriod = 24 * 60 / satellite.tle.meanmo
|
||||||
|
val endDate = Date(refDate.time + (orbitalPeriod * orbits * 60L * 1000L).toLong())
|
||||||
val startDate = Date(refDate.time - minBefore * 60L * 1000L)
|
val startDate = Date(refDate.time - minBefore * 60L * 1000L)
|
||||||
var currentDate = startDate
|
var currentDate = startDate
|
||||||
while (currentDate.before(endDate)) {
|
while (currentDate.before(endDate)) {
|
||||||
positions.add(getSatPos(currentDate))
|
positions.add(getSatPos(currentDate))
|
||||||
currentDate = Date(currentDate.time + stepSeconds * 1000)
|
currentDate = Date(currentDate.time + stepSec * 1000)
|
||||||
}
|
}
|
||||||
return positions
|
return positions
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user