Descarga de mapas específicos para caché en OSMDroid

Actualmente estoy trabajando en un proyecto escolar y estoy tratando de aprender las técnicas de descarga de mosaicos de mapa OSM en la memoria / caché local del teléfono, para que los usuarios puedan ver los mapas cuando están fuera de línea.

Esto se realizará asignando una ubicación específica y los mosaicos del mapa que están dentro de un radio / distancia específico de la ubicación se descargarán en la memoria del teléfono (cuando hay conexión en línea) para la visualización sin conexión.

Sin embargo, estoy teniendo un pequeño problema en la comprensión de las API de OSMDroid. Desde mi entendimiento, parece que las clases involucradas son:

  • MapTileBase
  • MapDownloader
  • IFilesystemCache

Por favor corrija si estoy equivocado.

Además, en MapTileBase (que creo que es el proveedor), el getMapTile devuelve android.graphics.drawable.Drawable .

¿Es esta clase Drawable incluso relacionada con el concepto de visualización de mapas fuera de línea?

Espero que alguien pueda iluminarme sobre dónde se están llamando exactamente los mapas para descargarlos en la memoria del teléfono, y cómo podemos editar los mapas para mostrar los elementos de la interfaz, como rutas, clavijas, etc.

No tengo una respuesta exacta como usted está buscando un método de caché fuera de línea fuera de un área que el MapView no ha navegado hasta. El soporte de almacenamiento en caché está ahí, pero no exactamente cómo desea hacerlo.

Vas a necesitar capacidades de descarga en línea si planeas almacenar en caché y no solo suministrar tus propias fichas de mapas sin conexión. Me gustaría echar un vistazo a la MapTileDownloader y tal vez tratar de implementar su propia versión de la misma. El método MapTileDownloader.TileLoader.loadTile () toma un MapTileRequestState que creo que las llamadas MapTileProviderArray cuando se necesita un mosaico de mapa.

Si puede replicar la funcionalidad de TileLoader de MapTileDownloader existente, probablemente puede inyectar su propio MapTileRequestState relativo o MapTile hacia arriba a uno solicitado. Por ejemplo, tomar el TileLoader llamado MapTileRequestState, inspeccionarlo, averiguar cómo construir nuevos MapTileRequestState / MapTile que representan los azulejos fuera de la vista actual. No será fácil, ya que tendrás que lidiar con los diferentes niveles de zoom, y dependiendo del nivel de zoom, el radio debe ser más pequeño, etc … Un nivel de zoom menor de 18 tendría un radio de mosaico mayor que Un 10 más alto.

Personalmente, recientemente estuve trabajando en intentar trabajar 100% sin conexión, así que no tengo ningún código de ejemplo para ayudar. Buena suerte, aunque ha sido un par de meses.

En primer lugar, vaya a la derecha de la fuente https://github.com/osmdroid/osmdroid

Hay algunos artículos de wiki que ayudarán, especialmente el artículo de mosaicos de mapas sin conexión. En resumen, utilice MOBAC o la herramienta que proporciona osmdroid. OSMBonuspack también tiene una herramienta para realizar la misma tarea en el dispositivo.

Los mosaicos de mapa se descargan realmente utilizando esta clase https://github.com/osmdroid/osmdroid/blob/master/osmdroid-android/src/main/java/org/osmdroid/tileprovider/modules/MapTileDownloader.java

  • ¿Cómo puedo implementar mapas sin conexión usando osmdroid al guardar imágenes de mosaicos de mapa en la base de datos sqlite?
  • Mapas de calle abierta (osmdroid) muestra los azulejos grises no mapa en PC
  • Archivo sin conexión de Osmdroid
  • Detectar si el OSM Mapview sigue cargando o no en android
  • Osmdroid y Pinch
  • Adición de superposición a OSMDROID
  • Obtener coordenadas haciendo clic en el mapa (openstreetmaps)
  • Conexión a la base de datos PostGIS
  • Restringir el área al que el usuario puede ir en Mapview
  • Osmdroid: ¿Cómo puedo crear y cargar un mapa de mis propios mapas de bits (mosaicos)?
  • Integración de OSMDroid con fragmentos
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.