mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-04 11:37:22 +00:00
Fixed an old issue regarding satellite footprint rendering #36
This commit is contained in:
1 parent
74cbad5127
commit
03323172ea
9 files changed
+44
-25
No files matched your search
@@ -32,6 +32,7 @@ import androidx.navigation.fragment.navArgs
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentMapBinding
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import org.osmdroid.config.Configuration
|
||||
@@ -41,7 +42,6 @@ import org.osmdroid.views.CustomZoomButtonsController
|
||||
import org.osmdroid.views.MapView
|
||||
import org.osmdroid.views.overlay.FolderOverlay
|
||||
import org.osmdroid.views.overlay.Marker
|
||||
import org.osmdroid.views.overlay.Polygon
|
||||
import org.osmdroid.views.overlay.Polyline
|
||||
|
||||
@AndroidEntryPoint
|
||||
@@ -59,8 +59,9 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
||||
strokeJoin = Paint.Join.ROUND
|
||||
}
|
||||
private val footprintPaint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
||||
strokeWidth = 2f
|
||||
style = Paint.Style.FILL_AND_STROKE
|
||||
color = Color.parseColor("#26FFE082")
|
||||
color = Color.parseColor("#FFE082")
|
||||
}
|
||||
private lateinit var binding: FragmentMapBinding
|
||||
|
||||
@@ -124,7 +125,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
||||
posMap.entries.forEach {
|
||||
Marker(mapView).apply {
|
||||
setInfoWindow(null)
|
||||
textLabelFontSize = 24
|
||||
textLabelFontSize = 28
|
||||
textLabelBackgroundColor = Color.TRANSPARENT
|
||||
textLabelForegroundColor =
|
||||
ContextCompat.getColor(requireContext(), R.color.accent)
|
||||
@@ -164,13 +165,17 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
||||
binding.mapView.overlays[1] = trackOverlay
|
||||
}
|
||||
|
||||
private fun handleFootprint(satFootprint: List<GeoPos>) {
|
||||
val footprintPoints = satFootprint.map { GeoPoint(it.latitude, it.longitude) }
|
||||
val footprintOverlay = Polygon().apply {
|
||||
fillPaint.set(footprintPaint)
|
||||
private fun handleFootprint(satPos: SatPos) {
|
||||
val center = GeoPoint(Math.toDegrees(satPos.latitude), Math.toDegrees(satPos.longitude))
|
||||
val radiusM = satPos.getRangeCircleRadiusKm() * 1000
|
||||
val footprintPoints = mutableListOf<GeoPoint>()
|
||||
for (i in 0..720) {
|
||||
footprintPoints.add(center.destinationPoint(radiusM, i.toDouble()))
|
||||
}
|
||||
val footprintOverlay = Polyline().apply {
|
||||
outlinePaint.set(footprintPaint)
|
||||
try {
|
||||
this.points = footprintPoints
|
||||
setPoints(footprintPoints)
|
||||
} catch (exception: IllegalArgumentException) {
|
||||
println(exception.stackTraceToString())
|
||||
}
|
||||
@@ -180,8 +185,8 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
||||
|
||||
private fun handleMapData(mapData: MapData) {
|
||||
binding.apply {
|
||||
mapDataName.text =
|
||||
String.format(getString(R.string.pat_osm_idName), mapData.catNum, mapData.name)
|
||||
mapTitle.text = mapData.name
|
||||
mapDataId.text = String.format(getString(R.string.map_sat_id), mapData.catNum)
|
||||
mapDataQth.text = String.format(getString(R.string.map_qth), mapData.qthLoc)
|
||||
mapDataAlt.text = String.format(getString(R.string.pat_altitude), mapData.altitude)
|
||||
mapDataDst.text = String.format(getString(R.string.pat_distance), mapData.range)
|
||||
|
||||
@@ -23,6 +23,7 @@ import com.rtbishop.look4sat.domain.ISettings
|
||||
import com.rtbishop.look4sat.domain.QthConverter
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
import com.rtbishop.look4sat.domain.predict.Predictor
|
||||
import com.rtbishop.look4sat.domain.predict.SatPos
|
||||
import com.rtbishop.look4sat.domain.predict.Satellite
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.*
|
||||
@@ -53,8 +54,8 @@ class MapViewModel @Inject constructor(
|
||||
private val _track = MutableLiveData<List<List<GeoPos>>>()
|
||||
val track: LiveData<List<List<GeoPos>>> = _track
|
||||
|
||||
private val _footprint = MutableLiveData<List<GeoPos>>()
|
||||
val footprint: LiveData<List<GeoPos>> = _footprint
|
||||
private val _footprint = MutableLiveData<SatPos>()
|
||||
val footprint: LiveData<SatPos> = _footprint
|
||||
|
||||
private val _mapData = MutableLiveData<MapData>()
|
||||
val mapData: LiveData<MapData> = this._mapData
|
||||
@@ -151,12 +152,7 @@ class MapViewModel @Inject constructor(
|
||||
|
||||
private suspend fun getSatFootprint(satellite: Satellite, pos: GeoPos, date: Date) {
|
||||
val satPos = predictor.getSatPos(satellite, pos, date.time)
|
||||
val satFootprint = satPos.getRangeCircle().map { rangePos ->
|
||||
val osmLat = clipLat(rangePos.latitude)
|
||||
val osmLon = clipLon(rangePos.longitude)
|
||||
GeoPos(osmLat, osmLon)
|
||||
}
|
||||
_footprint.postValue(satFootprint)
|
||||
_footprint.postValue(satPos)
|
||||
}
|
||||
|
||||
private suspend fun getSatData(satellite: Satellite, pos: GeoPos, date: Date) {
|
||||
|
||||
Reference in new issue
Block a user