From 29c1fe75d4c69cd2e4feadcc8483ed91ec74def0 Mon Sep 17 00:00:00 2001 From: PWRxPSYCHO Date: Thu, 25 Aug 2022 10:14:19 -0400 Subject: [PATCH] Removed map sources and added custom --- .../com/geeksville/mesh/ui/MapFragment.kt | 47 ++++++++++++++----- app/src/main/res/values/arrays.xml | 5 +- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt b/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt index e959df185..30509b4e4 100644 --- a/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt +++ b/app/src/main/java/com/geeksville/mesh/ui/MapFragment.kt @@ -21,8 +21,10 @@ import org.osmdroid.api.IMapController import org.osmdroid.config.Configuration import org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase import org.osmdroid.tileprovider.tilesource.TileSourceFactory +import org.osmdroid.tileprovider.tilesource.TileSourcePolicy import org.osmdroid.util.BoundingBox import org.osmdroid.util.GeoPoint +import org.osmdroid.util.MapTileIndex import org.osmdroid.views.CustomZoomButtonsController import org.osmdroid.views.MapView import org.osmdroid.views.overlay.CopyrightOverlay @@ -37,15 +39,15 @@ class MapFragment : ScreenFragment("Map"), Logging { private lateinit var mPrefs: SharedPreferences private val model: UIViewModel by activityViewModels() - private val defaultMinZoom = 3.0 + private lateinit var esriTileSource: OnlineTileSourceBase + private val defaultMinZoom = 3.0 private val nodeZoomLevel = 8.5 private val defaultZoomSpeed = 3000L private val prefsName = "org.andnav.osm.prefs" private val prefsZoomLevelDouble = "prefsZoomLevelDouble" private val prefsTileSource = "prefsTileSource" private val mapStyleId = "map_style_id" - private val mapTag = "mapView" private val uiPrefs = "ui-prefs" @@ -149,13 +151,14 @@ class MapFragment : ScreenFragment("Map"), Logging { private fun setupMapProperties() { if (this::map.isInitialized) { - map.setDestroyMode(false) + map.setDestroyMode(false) // keeps map instance alive when in the background. map.isTilesScaledToDpi = true // scales the map tiles to the display density of the screen map.minZoomLevel = defaultMinZoom // sets the minimum zoom level (the furthest out you can zoom) - map.setMultiTouchControls(true) // Sets gesture controls to true + map.setMultiTouchControls(true) // Sets gesture controls to true. map.zoomController.setVisibility(CustomZoomButtonsController.Visibility.NEVER) // Disables default +/- button for zooming + setESRITileSource() } } @@ -190,6 +193,30 @@ class MapFragment : ScreenFragment("Map"), Logging { } } + private fun setESRITileSource() { + esriTileSource = object : OnlineTileSourceBase( + "ESRI Clarity", 0, 18, 256, "", arrayOf( + "https://wayback.maptiles.arcgis.com/arcgis/rest/services/World_Imagery/WMTS/1.0.0/default028mm/MapServer/tile/" + ), "Esri, Maxar, Earthstar Geographics, and the GIS User Community" + + "URL\n" + + "View\n", + TileSourcePolicy( + 2, TileSourcePolicy.FLAG_NO_BULK + or TileSourcePolicy.FLAG_NO_PREVENTIVE + or TileSourcePolicy.FLAG_USER_AGENT_MEANINGFUL + or TileSourcePolicy.FLAG_USER_AGENT_NORMALIZED + ) + ) { + override fun getTileURLString(pMapTileIndex: Long): String { + return baseUrl + (MapTileIndex.getZoom(pMapTileIndex) + .toString() + "/" + MapTileIndex.getY(pMapTileIndex) + + "/" + MapTileIndex.getX(pMapTileIndex) + + mImageFilenameEnding) + } + + } + } + private fun loadOnlineTileSourceBase(): OnlineTileSourceBase { val prefs = context?.getSharedPreferences(uiPrefs, Context.MODE_PRIVATE) val mapSourceId = prefs?.getInt(mapStyleId, 1) @@ -198,11 +225,8 @@ class MapFragment : ScreenFragment("Map"), Logging { 0 -> TileSourceFactory.MAPNIK 1 -> TileSourceFactory.USGS_TOPO 2 -> TileSourceFactory.USGS_SAT - 3 -> TileSourceFactory.OpenTopo - 4 -> TileSourceFactory.ROADS_OVERLAY_NL - 6 -> TileSourceFactory.ChartbundleENRH - 7 -> TileSourceFactory.ChartbundleWAC - else -> TileSourceFactory.OpenTopo + 3 -> esriTileSource + else -> TileSourceFactory.DEFAULT_TILE_SOURCE } return mapSource } @@ -219,6 +243,7 @@ class MapFragment : ScreenFragment("Map"), Logging { override fun onResume() { super.onResume() + map.invalidate() val tileSourceName = mPrefs.getString( prefsTileSource, TileSourceFactory.DEFAULT_TILE_SOURCE.name() @@ -236,9 +261,7 @@ class MapFragment : ScreenFragment("Map"), Logging { TileSourceFactory.MAPNIK.name() -> TileSourceFactory.MAPNIK TileSourceFactory.USGS_TOPO.name() -> TileSourceFactory.USGS_TOPO TileSourceFactory.USGS_SAT.name() -> TileSourceFactory.USGS_SAT - TileSourceFactory.ROADS_OVERLAY_NL.name() -> TileSourceFactory.ROADS_OVERLAY_NL - TileSourceFactory.ChartbundleENRH.name() -> TileSourceFactory.ChartbundleENRH - TileSourceFactory.ChartbundleWAC.name() -> TileSourceFactory.ChartbundleWAC + esriTileSource.name() -> esriTileSource else -> TileSourceFactory.DEFAULT_TILE_SOURCE } return tileSourceBase diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 7b2d35efa..60d35fbe3 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -93,9 +93,6 @@ OpenStreetMap USGS TOPO USGS Satellite - OpenTopo - Roads Overlay NL - Chartbundle ENRH - Chartbundle WAC + ESRI \ No newline at end of file