Skip to content

Commit 2b17a03

Browse files
committed
Add support for min zoom level rendering
Signed-off-by: Kyle Corry <[email protected]>
1 parent 95d2ecc commit 2b17a03

File tree

5 files changed

+17
-20
lines changed

5 files changed

+17
-20
lines changed

app/src/main/java/com/kylecorry/trail_sense/shared/dem/map_layers/ContourGeoJsonSource.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import com.kylecorry.trail_sense.tools.paths.domain.LineStyle
2020
class ContourGeoJsonSource : GeoJsonSource {
2121

2222
private val units = AppServiceRegistry.get<UserPreferences>().baseDistanceUnits
23-
private val minZoomLevel = 13
2423
private val maxZoomLevel = 19
2524

2625
var colorScale: ElevationColorMap = TrailSenseVibrantElevationColorMap()
@@ -73,10 +72,6 @@ class ContourGeoJsonSource : GeoJsonSource {
7372
(bounds.north + bounds.south) / 2
7473
).coerceAtMost(maxZoomLevel)
7574

76-
if (zoomLevel < minZoomLevel) {
77-
return null
78-
}
79-
8075
val interval = validIntervals[zoomLevel] ?: validIntervals.values.first()
8176
val contours = DEM.getContourLines(bounds, interval, validResolutions[zoomLevel]!!)
8277
var i = -10000L

app/src/main/java/com/kylecorry/trail_sense/shared/dem/map_layers/ContourLayer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.kylecorry.trail_sense.shared.map_layers.MapLayerBackgroundTask
55
import com.kylecorry.trail_sense.shared.map_layers.ui.layers.geojson.GeoJsonLayer
66

77
class ContourLayer(taskRunner: MapLayerBackgroundTask = MapLayerBackgroundTask()) :
8-
GeoJsonLayer<ContourGeoJsonSource>(ContourGeoJsonSource(), taskRunner) {
8+
GeoJsonLayer<ContourGeoJsonSource>(ContourGeoJsonSource(), taskRunner, minZoomLevel = 13) {
99

1010
fun setPreferences(prefs: ContourMapLayerPreferences) {
1111
percentOpacity = prefs.opacity.get() / 100f

app/src/main/java/com/kylecorry/trail_sense/shared/map_layers/ui/layers/geojson/GeoJsonLayer.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@ import com.kylecorry.andromeda.core.units.PixelCoordinate
55
import com.kylecorry.andromeda.geojson.GeoJsonFeature
66
import com.kylecorry.andromeda.geojson.GeoJsonFeatureCollection
77
import com.kylecorry.trail_sense.shared.map_layers.MapLayerBackgroundTask
8+
import com.kylecorry.trail_sense.shared.map_layers.tiles.TileMath
89
import com.kylecorry.trail_sense.shared.map_layers.ui.layers.IAsyncLayer
910
import com.kylecorry.trail_sense.shared.map_layers.ui.layers.IMapView
1011
import com.kylecorry.trail_sense.shared.map_layers.ui.layers.geojson.sources.GeoJsonSource
1112
import kotlinx.coroutines.CancellationException
1213

1314
open class GeoJsonLayer<T : GeoJsonSource>(
1415
protected val source: T,
15-
private val taskRunner: MapLayerBackgroundTask = MapLayerBackgroundTask()
16+
private val taskRunner: MapLayerBackgroundTask = MapLayerBackgroundTask(),
17+
private val minZoomLevel: Int? = null
1618
) : IAsyncLayer {
1719

1820
val renderer = GeoJsonRenderer()
@@ -23,6 +25,18 @@ open class GeoJsonLayer<T : GeoJsonSource>(
2325
taskRunner.addTask { bounds, metersPerPixel ->
2426
isInvalid = false
2527
try {
28+
if (minZoomLevel != null) {
29+
val zoomLevel = TileMath.distancePerPixelToZoom(
30+
metersPerPixel.toDouble(),
31+
(bounds.north + bounds.south) / 2
32+
)
33+
34+
if (zoomLevel < minZoomLevel) {
35+
renderer.setGeoJsonObject(GeoJsonFeatureCollection(emptyList()))
36+
return@addTask
37+
}
38+
}
39+
2640
val obj =
2741
source.load(bounds, metersPerPixel) ?: GeoJsonFeatureCollection(emptyList())
2842
renderer.setGeoJsonObject(obj)

app/src/main/java/com/kylecorry/trail_sense/tools/signal_finder/map_layers/CellTowerGeoJsonSource.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,15 @@ import com.kylecorry.sol.science.geology.CoordinateBounds
88
import com.kylecorry.trail_sense.R
99
import com.kylecorry.trail_sense.shared.extensions.GEO_JSON_PROPERTY_SIZE_UNIT_METERS
1010
import com.kylecorry.trail_sense.shared.extensions.point
11-
import com.kylecorry.trail_sense.shared.map_layers.tiles.TileMath
1211
import com.kylecorry.trail_sense.shared.map_layers.ui.layers.geojson.sources.GeoJsonSource
1312
import com.kylecorry.trail_sense.tools.signal_finder.infrastructure.CellTowerModel
1413

1514
class CellTowerGeoJsonSource : GeoJsonSource {
1615

17-
private val minZoomLevel = 10
18-
1916
override suspend fun load(
2017
bounds: CoordinateBounds,
2118
metersPerPixel: Float
2219
): GeoJsonObject? {
23-
val zoomLevel = TileMath.distancePerPixelToZoom(
24-
metersPerPixel.toDouble(),
25-
(bounds.north + bounds.south) / 2
26-
)
27-
28-
if (zoomLevel < minZoomLevel) {
29-
return null
30-
}
31-
3220
val towers = CellTowerModel.getTowers(bounds)
3321
return GeoJsonFeatureCollection(
3422
towers.map {

app/src/main/java/com/kylecorry/trail_sense/tools/signal_finder/map_layers/CellTowerMapLayer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import com.kylecorry.trail_sense.tools.navigation.infrastructure.Navigator
1414

1515
class CellTowerMapLayer(
1616
private val onClick: (tower: ApproximateCoordinate) -> Boolean = { false }
17-
) : GeoJsonLayer<CellTowerGeoJsonSource>(CellTowerGeoJsonSource()) {
17+
) : GeoJsonLayer<CellTowerGeoJsonSource>(CellTowerGeoJsonSource(), minZoomLevel = 11) {
1818

1919
fun setPreferences(prefs: CellTowerMapLayerPreferences) {
2020
percentOpacity = prefs.opacity.get() / 100f

0 commit comments

Comments
 (0)