Cómo guardar agregados google mapas superposiciones en una aplicación para Android?

He creado una aplicación en la que los usuarios pueden agregar varios marcadores en google maps mediante superposiciones. Quiero que la aplicación guarde la superposición cuando el usuario la cree para que cuando vuelva a abrir la aplicación, los marcadores seguirán estando presentes.
Actualmente, cada vez que se vuelve a abrir la aplicación, los marcadores creados se han ido. He buscado el Internet y no he conseguido una comprensión clara de cómo ahorrar mis marcadores / overlays fuera de línea para un uso más adelante.

4 Solutions collect form web for “Cómo guardar agregados google mapas superposiciones en una aplicación para Android?”

Como se mencionó, es necesario utilizar un almacenamiento persistente . Tal vez, la base de datos sería un exceso en su caso particular (si sólo necesita guardar un montón de pares longitud-latitud), y las preferencias compartidas se ajustan a sus necesidades. Si rara vez necesita leer / almacenar estos datos, entonces poner JSONArray como una cadena de preferencias compartidas sería la más simple (en términos de lectura y extracción de datos) de la solución:

  SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); JSONArray jsonArr = new JSONArray(); JSONObject json; for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user json = new JSONObject(); json.put("lat", user_markers.get(i).getLat()); json.put("long", user_markers.get(i).getLong()); jsonArr.put(json); } editor.putString("markers", jsonArr.toString()); editor.commit(); 

Si necesita leer / almacenar estos datos un poco más a menudo, puede asignar ids / índices para separar los valores de SharedPreferences, pero esto puede requerir un método de extracción más complicado. Por ejemplo:

  SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); int id; for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user id = user_markers.get(i).getId(); // some Id here // or simply id = i; editor.putString("markers_lat_" + id, user_markers.get(i).getLat()); editor.putString("markers_long_" + id, user_markers.get(i).getLong()); } editor.commit(); 

Después de todo, usted debe considerar el uso de la base de datos si va a almacenar gran cantidad de datos o datos de estructura complicada.

Es sólo una idea, pero puede guardar sus marcadores en la base de datos y cuando vuelva a abrir su mapa sólo consulta la base de datos y ponerlo en el mapa de nuevo …

Debería utilizar un almacenamiento persistente. SQLite probablemente sería la mejor opción aquí. Las superposiciones tienen su lat y lng. Apenas consígalos y cualquier dato que usted necesita junto con ellos y ponga todos éstos en la base de datos de SQLite. A continuación, en Inicio de actividad obtener los puntos de la base de datos y mostrarlos en el mapa.

Utilice una base de datos SQLite para guardar los datos de usuario. Son simples y para una gran cantidad de datos son mejores que SharedPreferences.

Más información

Ejemplo

  • Api de Google Maps: muestra todos los caminos de un área específica
  • Android google maps v2 problemas de rendimiento
  • Mostrar el icono de puntos azules en la ubicación actual Google Maps
  • Descomposición ETA de Google Maps Navigation
  • Obtener mapa de bits de bitmapdescriptor
  • Android pinch-zoom en Google Maps
  • Detección del final de la navegación en Waze o Google Maps para móviles
  • Contexto nulo Puntero
  • Compruebe si el usuario está en un bosque utilizando la ubicación
  • Selección de la API de Google Places sólo determinados tipos de lugares
  • Android agrega a las ubicaciones de los usuarios (Google maps)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.