mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Using native OSM LatLon clipping functions
This commit is contained in:
1 parent
c06b54a3c3
commit
0c961005fc
1 file changed
+10
-9
@@ -21,7 +21,6 @@ package com.rtbishop.look4sat.ui.mainScreen
|
|||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.Paint
|
import android.graphics.Paint
|
||||||
import androidx.hilt.lifecycle.ViewModelInject
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
@@ -32,21 +31,25 @@ import com.rtbishop.look4sat.data.SatPass
|
|||||||
import com.rtbishop.look4sat.data.SelectedSat
|
import com.rtbishop.look4sat.data.SelectedSat
|
||||||
import com.rtbishop.look4sat.utility.PrefsManager
|
import com.rtbishop.look4sat.utility.PrefsManager
|
||||||
import com.rtbishop.look4sat.utility.Utilities
|
import com.rtbishop.look4sat.utility.Utilities
|
||||||
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.osmdroid.util.GeoPoint
|
import org.osmdroid.util.GeoPoint
|
||||||
|
import org.osmdroid.views.MapView
|
||||||
import org.osmdroid.views.overlay.FolderOverlay
|
import org.osmdroid.views.overlay.FolderOverlay
|
||||||
import org.osmdroid.views.overlay.Overlay
|
import org.osmdroid.views.overlay.Overlay
|
||||||
import org.osmdroid.views.overlay.Polygon
|
import org.osmdroid.views.overlay.Polygon
|
||||||
import org.osmdroid.views.overlay.Polyline
|
import org.osmdroid.views.overlay.Polyline
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
import javax.inject.Inject
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.sqrt
|
import kotlin.math.sqrt
|
||||||
|
|
||||||
class MapViewModel @ViewModelInject constructor(val prefsManager: PrefsManager) : ViewModel() {
|
@HiltViewModel
|
||||||
|
class MapViewModel @Inject constructor(val prefsManager: PrefsManager) : ViewModel() {
|
||||||
|
|
||||||
private val dateNow = Date()
|
private val dateNow = Date()
|
||||||
private val trackPaint = Paint().apply {
|
private val trackPaint = Paint().apply {
|
||||||
strokeWidth = 2f
|
strokeWidth = 2f
|
||||||
@@ -183,14 +186,12 @@ class MapViewModel @ViewModelInject constructor(val prefsManager: PrefsManager)
|
|||||||
|
|
||||||
private fun getOsmPosition(lat: Double, lon: Double, inRadians: Boolean): Position {
|
private fun getOsmPosition(lat: Double, lon: Double, inRadians: Boolean): Position {
|
||||||
return if (inRadians) {
|
return if (inRadians) {
|
||||||
var osmLat = Math.toDegrees(lat)
|
val osmLat = MapView.getTileSystem().cleanLatitude(Math.toDegrees(lat))
|
||||||
var osmLon = Math.toDegrees(lon)
|
val osmLon = MapView.getTileSystem().cleanLongitude(Math.toDegrees(lon))
|
||||||
if (osmLat > 85.05) osmLat = 85.05 else if (osmLat < -85.05) osmLat = -85.05
|
|
||||||
if (osmLon > 180f) osmLon -= 360f
|
|
||||||
Position(osmLat, osmLon)
|
Position(osmLat, osmLon)
|
||||||
} else {
|
} else {
|
||||||
val osmLat = if (lat > 85.05) 85.05 else if (lat < -85.05) -85.05 else lat
|
val osmLat = MapView.getTileSystem().cleanLatitude(lat)
|
||||||
val osmLon = if (lon > 180.0) lon - 360.0 else lon
|
val osmLon = MapView.getTileSystem().cleanLongitude(lon)
|
||||||
Position(osmLat, osmLon)
|
Position(osmLat, osmLon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user